diy: einfacher smart contract mit solidity

Solidity ist die Programmiersprache von Ethereum, eine Turing-vollständige Programmiersprache, exklusiv entwickelt für diese eine Kryptowährung. Wobei, Ethereum ist eine vollständig neue Plattform, Solidity nur die Sprache dieser Plattform. Sie ist JavaScript sehr ähnlich, jeder mit Erfahrung in JavaScript sollte sich hier sehr gut zurecht finden. Aber Vorsicht: JavaScript != Java. JavaScript ist zwar schnell, aber nicht schön und leider auch keine Hochsprache.

Anyways. „Smart Contracts“ sind wohl das Killer-Feature von Ethereum. Im Kern handelt es sich hierbei um unfälschbaren, verfizierten Code, der zu einer bestimmten Bedingung ausgeführt wird. Es soll sehr einfach sein „smart contracts“ zu schreiben, von daher möchte ich in diesem Beitrag die Aufmerksamkeit auf ein einfaches Tutorial lenken, das wir Entwickler alle kennen: „Hello World“. Der Code und auch die Details dazu sind auf GitHub hinterlegt: https://github.com/evbots/greeter_contract.

Ich bin im Übersetzen sehr schnell (und meist auch sehr präzise), von daher gebe ich die Einführung einfach in deutscher Sprache weiter. Eure Versuche gehen natürlich auf euer Risikokonto. 😉

=== Der Gruß-Vertrag ===

Ein einfacher „Hallo Welt“-Smart-Contract geschrieben in Solidity.

=== Hintergrund ===

Dieser Code stammt direkt aus dem Anfänger-Tutorial der Ethereum-Entwickler, den ihr hier findet. Das Tutorial selbst erwähnte jedoch eine alte web3.js-Spezifikation, von daher wurde der Vertrag leicht angepasst.

=== Vorbereitungen ===

* Die Fähigkeit, Ether zu akzeptieren, die Währung von Ethereum. Benutzt eine Tauschbörse oder leiht euch ein paar Ether von einem Freund.
* Ladet euch Go Ethereum herunter und führt es aus mit geth --rpc
* Erstellt einen Ethereum-Account mit geth über die Kommandozeile oder JavaScript-Konsole. Mehr dazu hier.
* Überweist Ether zu diesem neuen Account.

=== Setup ===

Nachdem ihr die Paketquelle geklont habt, installiert die Abhängigkeiten.

yarn

Stellt sicher, dass geth läuft, sofern noch nicht geschehen.

geth --rpc

Bereitet das Build-Skript vor, damit es ausgeführt werden kann:

yarn build

Sofern ihr Ether zu eurem Account transferiert habt (es genügt sehr wenig), entsperrt den Account, damit ihr das Geld ausgeben könnt. Dies geschieht über die Konsole von geth. Sobald geth aufgesetzt ist und läuft, öffnet ein neues Terminal und benutzt diese Befehle:

geth attach

Danach schreibt ihr in eure Konsole:

personal.unlockAccount(eth.accounts[0], , 15000)

Jetzt, davon ausgehend ihr seid im Projektverzeichnis, führt den Code aus:

node lib.js

Ihr verbindet euch so mit geth über euer lokales Netzwerk und dessen API, dabei wird versucht ein Vertrag zu erstellen.

Notiert euch die Adresse des Vertrages, nachdem ihr diesen errechnet (geminet) habt. Sobald geth den letzten Block synchronisiert hat, werdet ihr die Adresse als Ausgabe sehen. Sollte das nicht der Fall sein, prüft eure Wallet-Adresse über etherscan.io und ebenso den Status eures Vertrags. Sobald der Vertrag errechnet wurde, könnt ihr wieder zur JavaScript-Konsole von geth zurückkehren und kreiert so eine Instanz eures Vertrags. Danach grüßt das Ding. ^^

Damit das funktioniert, benötigt ihr zwei Sachen: die ABI des Vertrags, sowie die Adresse. Um die ABI zu bekommen, habe ich ein einfaches Skript geschrieben, um diesen auszugeben. Führt einfach Folgendes aus:

yarn printAbi

=== Vertrag erstellen ===

Zurück in der JavaScript-Konsole von geth (Tipp: ihr erreicht diese mit geth attach in einem neuen Konsolen-Tab/-Fenster) erstellt ihr nun euren Vertrag mit dem Code:

var myContract = web3.eth.contract(YOUR_ABI).at(YOUR_CONTRACT_ADDRESS);

=== Vertrag ausführen ===

Ab jetzt lassen sich die Methoden eures Vertrags aufrufen:

myContract.greet();

und

myContract.kill();

Wie wir sahen ist das alles zum Glück kein großer Aufwand.

Auf die Frage, was man damit machen, hat der Kanton Zug (Schweiz) inzwischen schon eine praktische Antwort: die können nämlich bald ihre digitale ID in der Ethereum-Blockchain hinterlegen. Erwartet sowas mal in Deutschland. -.-

Alles Pfosten hier. Seid schlau, geht, aber geth mit Ethereum!

1 Star - nope!2 Stars - meh!3 Stars - good!4 Stars - excellent!5 Stars - supercalifragilisticexpialidocious! (Rate me? // Beitrag bewerten?)
Loading...
Ether spenden // Donate Ether
Bitcoin-Spenden hier akzeptiert ^^

Kommentieren