Schwerpunktthema Blockchain in der JAVASpektrum

Die deutsche Zeitung JavaSpektrum hat einen Schwerpunkt zum Thema Blockchain-Entwicklung in Ihrer Ausgabe 03/2017. Technisch auch für nicht Java-Entwickler interessant, da Grundprinzipien und Probleme von Blockchains erläutert werden, wie etwa die zu geringen Transaktionszahlen bei Bitcoin sowie Probleme bei der Erstellung von SmartContracts.Ebenso wird auf den Einsatz von Ethereum im Business Umfeld eingegangen.

Hier die Themenliste:

 

 

Law & Blockchain von Thijs Mass

Nachdem ich einen recht interessanten Artikel auf Medium über die rechtlichen Implikationen von Blockchain und SmartContract Bugs von Thijs Maas gelesen hatte – es ging dabei um das Problem des jüngsten MultiSig-Bugs, bei dem knapp $300 Mio. eingeschlossen worden sind – bin ich auf seine Website „Law & Blockchain“ gestossen, auf der er sich mit den rechtlichen Fragen dieser neuen Technologien auseinandersetzt.

Sein Vorschlag ist ein Audit Prozess, bei dem SmartContracts erst in die Blockchain gelassen werden, wenn Sie von Experten entsprechend geprüft worden sind.

Als Entwickler ist es natürlich die Horrorvorstellung, dass man für einen dermaßen Schaden verantwortlich ist bzw. gemacht wird. Fehler sind menschlich und normal in einem Entwicklungsprozess – die Haftung für eventuelle Schäden durch SmartContracts sollten und können Entwickler aber nicht alleine tragen.

 

Hashgraph – eine alternative Datenstruktur zur Blockchain

Die Firma Swirdls hat eine alternative fälschungssichere Datenstruktur namens Hashgraph erfunden, die sich gegenüber Blockchains durch höheren Datendurchsatz und weniger benötigten Speicherplatz auszeichnet.

Entsprechende Whitepaper und eine genauere grafische Erläuterung der Funktionsweise (PDF) finden sich auf Hashgraph.com.

Swirlds bietet auch ein SDK zum Download an, in dem mehrere Beispiel-Dapps realisiert werden.

Swirlds hat laut Funding Tracker $3Mio Seed Funding erhalten.

(Quelle: Squawker)

 

Hyperledger Fabric und Modularisierung

Da Hyperledger Fabric losgelöst von einem konkreten Anwendungszweck entwickelt worden ist, sind zentrale Bestandteile bewusst modular und austauschbar angelegt worden.

Das beginnt bei der Authentifizierung der teilnehmenden Knoten – diese können über selbst ausgestellte X.509 Zertifikate authentifiziert werden, oder über ein LDAP-Verzeichnis, oder über eine andere Authentifizierungsmethode.

Ein Certification Authority Node kann an verschiedene bereits bestehende Systeme angebunden werden und leitet seine Informationen in die Blockchain.

Die Architektur der Peers, der normalen Blockchain-Knoten besteht wiederum aus einer Transaktionshistorie, sowie einer Datenbank mit dem augenblicklichen „World State“, dem aktuellen Datenstand der Blockchain.

Neuen Peer-Knoten wird beim Eintritt in einen Kanal die komplette Transaktionshistorie zugestellt, aus welcher diese ihren „World State“ rekonstruieren und anschliessend mit den anderen Peers abgleichen.

Die eingesetzte Datenbank-Komponente zum Vorhalten des „World State“ ist auch modular gehalten – standardmäßig findet LevelDB Anwendung, alternativ kann auch CouchDB eingesetzt werden.

 

Aufbau und Konfiguration einer Fabric Blockchain

Die Konfiguration einer Fabric Blockchain besteht aus mehreren Bestandteilen, die alle in ein Business Network Archive (kurz BNA-Datei) kompiliert werden können für das Deployment.

Die BNA-Datei enthält dabei folgende Informationen:

  • eine Datei mit Zugriffsrechten, geschrieben in ACL, der „Access Control Language“
    Diese beschreibt Regeln für den Zugriff der Teilnehmer auf einzelne Objekte in der konkreten Blockchain sowie des Netzwerks allgemein.
  • eine Model-Datei, die Namensräume definiert und die einzelnen Objekte und Assets in der Blockchain beschreibt und in der „Model Language“ verfasst ist. In dieser zentralen CTO-Datei wird definiert, wie die atomaren Objekte der Blockchain strukturiert sind und welche Attribute sie besitzen.
  • eine Javascript-Datei mit Transaktionslogik, die die verfügbaren Methoden der Blockchain programmiert. Hier wird definiert und kontrolliert, was Teilnehmer machen können. Dies könnte man auch den Chaincode oder die „smart contracts“ nennen.
  • eine Readme Datei mit informellen Character
  • eine Package.JSON Datei für die Kompilierung durch Node.JS