Kategorien
Content Management Systeme Infrastruktur Webdesign

WordPress – übersetze doch mal ein Plugin!

Um die Funktionen von WordPress zu erweitern installiert man Plugins.
Im Plugin Verzeichnis von wordpress.org befinden sich fast 55,000 Plugins. Jedes dieser Plugins erscheint zunächst in englischer Sprache. Als ich letzte Woche im Artikel Steemit, Smart Media Tokens und WordPress  das SteemPress Plugin vorstellte, fiel mir auf, dass es noch nicht ins Deutsche übersetzt worden ist. In diesem Fall war das nicht schlimm, da das Plugin kaum Texte enthielt, aber ich hatte schon öfter den Fall, dass ich in diesem deutschsprachigen Blog ein Plugin genutzt habe, für das es keine deutsche Ūbersetzung gab.

Kategorien
Allgemein Blockchain Content Management Systeme Kryptowährungen

Steemit, Smart Media Tokens und WordPress!

Steemit.com ist auf den ersten Blick eine Blogging Plattform wie WordPress.com. Jeder kann sich dort ein Benutzerkonto anlegen und Artikel veröffentlichen. Andere Benutzer können Kommentare posten, sowie Artikel und Kommentare bewerten.

Steemit kann allerdings mehr. Die Plattform ist vergleichbar mit einem Computerspiel, bei dem die Spieler um Aufmerksamkeit und Belohnungen konkurrieren, indem sie Inhalte einbringen und dadurch einen „Mehrwert“ für die Plattform schaffen. Als Motivation gibt es Belohnungen (Punkte). Wie in einem Computerspiel, erhält man einen Gegenstand oder eine im Spiel gültige Währung für bestimmte Aktionen. Wenn diese Spielwährung oder die Spielgegenstände zwischen den Benutzern im Spiel übertragbar sind, können diese auf entsprechenden Märkten ge- und verkauft werden.

Das besondere am Steemit Spielsystem ist, dass die Inhalte in einer Blockchain gespeichert werden. Dadurch sind die Belohnungspunkte keine einfachen Punkte, sondern handelbare Tokens. Die heißen Smart Media Tokens.

Kategorien
Allgemein Blockchain

Blockchain: So unterscheiden sich Bitcoin und Ethereum

Nachdem wir in den ersten beiden Teilen dieser Artikelreihe gesehen haben, welches Problem mit einer Blockchain überhaupt gelöst werden soll (Blockchain: Byzantinische Generäle und das CAP Theorem) und wie man das technisch realisieren könnte (Blockchain: Hash Funktionen und Merkle Bäume), geht es heute um die Lösungsansätze in Bitcoin und Ethereum.

Gemeinsamkeiten

Beide Blockchains sind jeweils ein grosser Merkle Baum, der aus sehr vielen Ästen besteht. Heute sind es bei Bitcoin etwa 150 GByte „Äste“. Bei Ethereum gibt es je nach Implementierung des Nodes unterschiedliche Grössen zwischen 25 und 40 GByte. Alle Vorgänge (Transaktionen) in dieser doch recht gewaltigen Menge an Daten sind über Hashs miteinander verkettet. Jeder, der die Daten der Blockchain hat, kann (und sollte) die Richtigkeit der Daten überprüfen. Bei der Überprüfung der Daten werden die einzelnen Blöcke von physikalisch getrennten Computern geladen. Das ist so ähnlich wie bei den Dateien im Bittorrent Protokoll. Nach erfolgter Überprüfung ist man ein Teil des verteilten Projekts, ein sogenannter Node.

Eigenschaften

Die beiden Systeme sind keine „Konkurrenten“ sondern konzentrieren sich auf unterschiedliche Aufgaben. Während Bitcoin „nur“ eine Währung ist, bietet Ethereum eine Währung namens Ether und eine Möglichkeit Verträge abzuschliessen. Einen Vertrag kann man sich dabei wie einen Service mit bestimmten Regeln vorstellen, der automatisiert abgeschlossen und erfüllt wird. Der Start der beiden Projekte verlief unterschiedlich.

Bitcoin war gewissermassen plötzlich da. Der erste Block der Blockchain wurde erzeugt wie alle folgenden Blöcke auch. Bei Ethereum gab es einen Vorverkauf der Währung Ether zu festgelegten Kursen. Ethereum selbst startete dann ein Jahr später. Beide erzeugen Konsens durch Arbeit, die geleistet werden muss (Erzeugung von Hashwerten aus Transaktionen). Ethereum plant allerdings einen Konsens Algorithmus zu nutzen, der auf Beteiligung basiert. Das ist insofern wichtig, da die Arbeit momentan sehr viel elektrische Energie verbraucht und ein Beteiligungsalgorithmus „Strom spart“. Bitcoin benutzt den SHA-256 Standard zur Erzeugung der Hashes, Ethereum benutzt das eigene System Ethash. Ein Block wird bei Bitcoin alle 10 Minuten erzeugt, bei Ethereum alle 14-15 Sekunden.

BitcoinEthereum
ErfinderSatoshi NakamotoVitalik Buterin
Start9.1.200830.7.2015
MethodeErster Block wurde erzeugt (Genesis Block)Vorverkauf in 2014 (2000 Eth kosteten 1 Bitcoin = ca. 600 US$)
Nutzung der Blockchain Währung (Bitcoin) Währung (Ether) und Verträge („Smart Contracts“)
Konsens Algorithmusdurch Arbeit (Proof of Work)momentan durch Arbeit (Proof of Work), später durch eine Form der Beteiligung (Proof of Stake). 
Mining SHA-256 Ethash
Blocktaktalle 10 Minuten alle 14-15 Sekunden

Es gibt noch viel mehr Eigenschaften und Unterschiede, insbesondere in Bezug auf Transaktionen. Für einen Überblick des grundsätzlichen Aufbaus reicht die obige Übersicht zunächst aus.

Blockchain

Allgemein sieht eine Blockchain aus wie in dieser Grafik.

Allgemeiner Aufbau einer Blockchain
Allgemeiner Aufbau einer Blockchain

Jeder Block besteht aus vier Teilen:

  1. dem Hash des Vorgängerblocks,
  2. dem Root Hash der Transaktionen (ein Merkle Baum)
  3. einem Zeitstempel (Timestamp)
  4. einer Nonce (Zeichenkette mit zufälligem Inhalt)

Aus diesen vier Bestandteilen wird der Hash des Blocks errechnet. Eine Blockchain ist also genau genommen die Kette vieler Merkle Bäume.

Bitcoin Blockchain

Bei der Bitcoin Blockchain geht es um die Verwaltung von Transaktionen. Wenn ich beispielsweise zwei Bitcoins an dich „überweisen“ will, so muss diese Transaktion per Hash Funktion in die Bitcoin Blockchain eingebaut werden. Eine vereinfachte Darstellung sieht dann so aus:

sehr vereinfachte Bitcoin Blockchain
sehr vereinfachte Bitcoin Blockchain

Jeder Block enthält Transaktionen von Bitcoin, also auch meine „Überweisung“.

Ethereum Blockchain

Bei Ethereum läuft das etwas anders. Eine Transaktion bei Ethereum ist der Status von Programmiercode.

sehr vereinfachte Ethereum Blockchain
sehr vereinfachte Ethereum Blockchain

Wenn es also um eine Überweisung der Ethereum Währung Ether geht, so wird der Status des Programms, welches die Ether verwaltet, gespeichert. Diese Besonderheit von Ethereum macht es möglich auch beliebige andere Zustände von Programmcode zu speichern. Dieses Feature heisst bei Ethereum Smart Contract. Ein Smart Contract ist auf den ersten Blick so etwas wie ein Vertrag mit einzelnen Paragraphen. Auf den zweiten Blick ist es ein Programm mit bestimmten speicherbaren Stati (Zuständen).

Anschaulichstes Beispiel sind vermutlich die CryptoKitties.

https://www.cryptokitties.co/
https://www.cryptokitties.co/

Das Eigentum einer CryptoKitty wird über einen Smart Contract auf der Ethereum-Blockchain vermerkt. CryptoKitties werden alle 15 Minuten „geboren“(672 pro Woche). Jede CryptoKitty wird in Form eines bestimmten Tokens dargestellt (ERC-721). Jedes Token (Katze) besitzt spezifische Attribute. Es gibt ein Limit von 4 Milliarden Katzen, die „gezüchtet“ werden können. Jede Katze hat eine bestimmte Erscheinung („Phänotyp“), die durch ihre unveränderlichen Gene („Genotyp“) bestimmt wird. Die Gene sind im Smart Contract gespeichert. Da die Katzen als Token in der Blockchain sind, können sie gekauft, verkauft oder digital übertragen („überwiesen“) werden.

Im Jahr 2018 werden viele Ethereum basierte Projekte an den Start gehen. Ein interessantes Projekt wird sicherlich die Kryptowährung Petro aus Venezuela.

Der Unterschied

Bitcoin ist also eher ein Produkt, Ethereum dagegen eine Platform auf der Produkte wie die CryptoKitties entwickelt werden können.

Links


Kategorien
seafolly.ch Server Shared Hosting Verschlüsselung Webdesign Webserver

Die Kommandozeile ist nicht totzukriegen :)

Wer sein Webhosting aus der Ferne verwaltet, benutzt normalerweise eine grafische Benutzeroberfläche. Die reibungslose Funktion und die einfache Bedienbarkeit dieser grafischen Benutzeroberflächen ist eine echte Herausforderung, schließlich ist es so eine Art „Fernbedienung“ für den Server. Im Jahre 2018 funktionieren Tools wie cPanel allerdings wirklich gut.

In der Webentwicklung ist die Kommandozeile in den letzten Jahren allerdings wieder in Mode gekommen. Entwickler, Administratoren und Site Builder können Wartungs- und Entwicklungsaufgaben damit vereinfachen (wenn sie wissen, was sie tun 🙂 ). Auch bei Content Management Systemen wie WordPress (WP-CLI) und Drupal (Drush) wird die Kommandozeile immer beliebter.

Um mit dem Server deines Webhostings Kontakt aufzunehmen, benötigst du ein Kommandozeilen Programm. Kommandozeilen Programme gibt es für alle Betriebssystem Plattformen. Windows Benutzer nehmen meist PuTTY, Mac und Linux Benutzer haben das Terminal oder Shell Programm bereits im Betriebssystem enthalten. Für Android und iOS gibt es ebenfalls zahlreiche Terminal Apps. Der große Vorteil der Kommunikation via Shell sind die Sicherheit und die geringen Datenmengen, die übertragen werden müssen. Eine Verbindung per SSH funktioniert „immer“, zur Not auch auf einem Telefon mit schlechter Internet Anbindung.

Verbindung aufbauen

Das Kommandozeilen Programm besteht aus einem schwarzen Fenster mit einem Eingabebereich. Alle Befehle, die hier eingegeben werden, werden auf dem lokalen System ausgeführt. Um ein Webhosting bei uns zu erreichen musst du den ssh Befehl nutzen. Als Parameter übergibst du den Benutzernamen und den Host.

ssh [Benutzername]@[host]

In meinem Fall ist das ssh seafoll1@ftp.seafolly.ch. Benutzername und Host sind die gleichen, wie bei deinem FTP Zugriff.
Der Server fragt nach deinem Passwort.
Es ist ebenfalls das gleiche wie dein FTP Passwort.

Terminal OSX
Terminal OSX

Nach der Eingabe des Passworts verwandelt sich der Prompt der lokalen Kommandozeile (hagengraf: hagengraf$) in den Prompt des Webhosting Servers (seafoll1@srv11 [~]# ). Alle Befehle, die du nun absendest, werden von dem Server ausgeführt auf dem sich dein Webhosting befindet. Die Verbindung ist sicher und schnell. Übertragen wird nur dein Befehl und die Antwort des Servers. Das sind erheblich weniger Daten als bei einer grafischen Benutzeroberfläche.

Mit Schlüssel verbinden (empfohlen)

Anstelle der Verbindung mit einem Passwort gibt es auch die Verbindung mit einem Schlüsselpaar. Der eine Schlüssel ist öffentlich und liegt auf dem Server. Der andere Schlüssel ist privat und liegt auf dem lokalen Gerät. Wenn du beispielsweise jemandem Zugriff auf die Kommandozeile geben möchtest, aber nicht das dazugehörige Passwort, so kannst du einen Schlüssel erzeugen, aktivieren und an die berechtigte Person weitergeben. Der Nutzer mit Schlüssel kann sich dann ohne Passwort mit dem Server verbinden. Du kannst beliebig viele Schlüssel erzeugen, sowie existierende Schlüssel autorisieren und wieder sperren.

Wenn ich mich über die lokale Kommandozeile mit dem Webhosting verbinden möchte, gebe ich einfach ein …

ssh seafolly_ch

… bestätige mit Enter und bin „drin“.

Schlüssel erzeugen und aktivieren

Um einen Schlüssel zu erzeugen, öffnest du cPanel und suchst nach ssh.

cPanel SSH-Zugriff
cPanel SSH-Zugriff

In der folgenden Seite wird ein ausführlicher Erläuterungstext und der Button SSH-Schlüssel verwalten angezeigt. Nach einem Klick auf den Button gelangst du zur Übersicht. In meinem Fall steht da schon ein Schlüssel, den ich benutze, mit dem Namen seafolly_ch.

SSH-Schlüssel - Übersicht
SSH-Schlüssel – Übersicht

Achtung: Der private Schlüssel sollte aus Sicherheitsgründen nach der lokalen Konfiguration vom Server gelöscht werden.

Du kannst nun Schlüssel erzeugen oder existierende Schlüssel importieren. Um ein Schlüsselpaar zu erzeugen, klicke auf Neuen Schlüssel erzeugen. Ich nenne ihn seafollybeispiel. Dieser Name ist beliebig wählbar. Dann vergebe ich das Schlüsselkennwort (Pass Phrase). Als Typ nehme ich RSA und die größte Schlüsselgröße.

SSH-Schluesselpaar - erzeugen
SSH-Schluesselpaar – erzeugen

Die Schlüssel werden erzeugt und liegen als Datei im Verzeichnis .ssh auf dem Server. Auf dieses Verzeichnis kannst du auch per FTP zugreifen.

SSH-Schlüsselpaar erfolgreich erzeugt
SSH-Schlüsselpaar erfolgreich erzeugt

Die Schlüssel sind erzeugt aber noch nicht autorisiert. Durch einen Klick auf den zurück Link gelangst du wieder in die Übersicht. Dort ist nun ein neuer Schlüssel verfügbar, der noch nicht autorisiert worden ist.

Schluessel nicht autorisiert
Schluessel nicht autorisiert

Über den Link Verwalten kannst du den öffentlichen Schlüssel autorisieren.

Schlüssel autorisieren
Schlüssel autorisieren

Lokale Umgebung konfigurieren

Der private Schlüssel muss nun auf dem lokalen Gerät an der richtigen Stelle installiert werden (bei macOS ist das im Ordner .ssh im entsprechenden Benutzerverzeichnis). Du kannst den privaten Schlüssel als Datei herunterladen oder per Copy & Paste in eine lokal erzeugte Datei kopieren.

cPanel - Anzeige privater Schlüssel
cPanel – Anzeige privater Schlüssel

Wenn die Datei ebenfalls seafollybeispiel heißt, müssen in der SSH Konfigurationsdatei config

nano ~/.ssh/config

die folgenden Werte eingegeben werden:

Host seafollybeispiel
User seafoll1
Port 22
HostName ftp.seafolly.ch
IdentityFile ~/.ssh/seafollybeispiel

Außerdem darf die Datei nicht zu viele Zugriffsrechte haben, ansonsten führt der Verbindungsaufbau zur Fehlermeldung:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/hagengraf/.ssh/seafollybeispiel' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

Der Befehl

chmod 0400 seafollybeispiel

löst das Problem.

Nun kannst du dich mit dem Befehl

ssh seafollybeispiel

ohne ein Passwort anmelden und die Kommandozeile des Servers nutzen.

Hinweis: Die lokale Installation ist

Links


tl;dr: Du kannst dich ohne Passwort per SSH an der Kommandozeile deines Webhostings anmelden