Alle Codebeispiele hier sind veraltet. Bitte verwenden Sie diesen Artikel nur als Referenz.
Laut einer von Juniper Research durchgeführten Umfrage sind dies 6 von 10 Großunternehmern entweder über eigene Blockchain-Technologien nachdenken oder diese entwickeln, beispielsweise im Gesundheitswesen. 66 % dieser Unternehmen glauben wirklich, dass die Blockchain-Technologie bis Anfang 2019 in ihr Unternehmen integriert wird.
Was die Gründe für die Wahl der Blockchain angeht, so wird allgemein davon ausgegangen, dass viele Unternehmen gerne brandneue Technologien nutzen, um größere Gewinne zu erzielen. Tatsächlich verlassen sich Unternehmen oft auf neue Lösungen, um bestehende Prozesse komplett neu zu gestalten, um sie an die neue digitale Welt anzupassen.
Der Punkt ist, dass systemische Veränderungen effizienter sind als technologische. Die Nutzung der Vorteile einer Blockchain bietet Ihrem Unternehmen also eine zuverlässige Möglichkeit, sich in das Zeitalter des 21. Jahrhunderts zu integrieren!
hr? Tatsächlich gibt es mindestens fünf gute Gründe dafür, Dinge zu dezentralisieren, anstatt sie auf einem zentralen Server, also einer Datenbank, aufzubewahren. Hier sind sie:
Bitte beachten Sie, dass wir Ubuntu verwendet haben, die Anleitung jedoch auch für Benutzer anderer Linux-Distributionen, MacOS (mit Homebrew-Manager) und Windows 10 (mit Terminals und der neuesten stabilen Binärdatei) geeignet ist.
brew tap ethereum/ethereum
brew install ethereum
Um Go Ethereum unter Ubuntu zu installieren, müssen Sie nur apt-get verwenden. Führen Sie die folgenden Befehle aus:
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:thereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
Windows-Benutzer müssen nicht lange nachdenken. Sie müssen lediglich die entsprechende Geth-Installation herunterladen und ausführen. Jetzt können Sie ein neues Verzeichnis erstellen und eine JSON-Datei schreiben, um einen Genesis-Block zu erstellen:
cd
mkdir eth-new
cd eth-new
nano genesis.json
Um den Genesis-Block zu erstellen, fügen Sie den folgenden Code in die neu erstellte JSON-Datei ein:
{
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "Custem Ethereum Genesis Block",
"gasLimit": "0xffffffff"
}
Drücken Sie Strg+X, Y, Eingabetaste, um Ihren neuen Genesis-Block zu speichern.
mkdir eth-data
geth --datadir eth-new genesis.json init eth-new/genesis.json --networkid 123 --nodiscover --maxpeers 0 console
Um ein neues Konto zu erstellen und ein neues Passwort einzugeben, geben Sie Folgendes in die Geth-Konsole ein (vergessen Sie nicht, die Anmeldedaten in Klammern anzugeben). Ach, da ist noch etwas: Sie müssen Ihr neues Passwort zweimal angeben:
personal.newAccount()
Die Ausgabe danach sollte eine Zeichenfolge aus Buchstaben und Zahlen sein, also eine Adresse Ihres Kontos. Um auf der sicheren Seite zu sein, speichern Sie die angegebene Adresse an einem anderen Ort und beenden Sie den Vorgang (geben Sie „exit“ ein und drücken Sie die Eingabetaste).
nano genesis.json
Kopieren Sie die zuvor gespeicherte Kontoadresse und fügen Sie sie in die „alloc“-Klammern ein. Als nächstes erstellen Sie sich ein ETH-Guthaben. Der unten neben „Guthaben“ angezeigte Betrag entspricht 10 ETH. Wenn Sie mit den Änderungen fertig sind, speichern Sie die Datei mit Strg+X, Y, Eingabetaste.
Löschen Sie eine alte Blockchain und erstellen Sie eine neue. Verwenden Sie diese Befehle, um die alten Blockchain-Daten zu entfernen und Geth neu zu starten:
cd eth-data
rm -rf chaindata dapp history nodekey
cd ..
geth --datadir eth-new genesis.json --networkid 123 --nodiscover --maxpeers 0 console
Geben Sie in der Geth-Konsole Folgendes ein:
> primary = eth.accounts[0]
> web3.fromWei(eth.getBalance(primary), "ether")
Als Ergebnis erhalten Sie eine neue Adresse und einen Saldo von 10 ETH.
geth --mine --datadir eth-data --networkid 123 --nodiscover --> maxpeers 0 console 2>>geth.log
Glückwunsch! Sie haben gerade Ihren eigenen Miner erstellt, der ETH-Gebühren einziehen kann. Wenn Sie Ihren Kryptowährungsbestand überprüfen möchten, führen Sie den aus folgenden Befehl:
> primary = eth.accounts[0]
> balance = web3.fromWei(eth.getBalance(primary), "ether")
bash
sudo add-apt-repository ppa:ethereum/ethereum
Nachdem Sie die Meldung „Drücken Sie die EINGABETASTE, um fortzufahren“ erhalten, drücken Sie die Eingabetaste und geben Sie Folgendes ein:
sudo apt-get update
sudo apt-get install solc -y
which solc
Dadurch erhalten Sie einen Pfad zu Solc, den Sie sich merken müssen. Kehren Sie nun zum Terminalfenster zurück, in dem die Geth-Konsole angezeigt wird. Führen Sie die folgenden Befehle aus und ändern Sie den Pfadwert, den Sie erhalten haben:
admin.setSolc("")
eth.getCompilers()
Wenn Sie als Antwort auf den zweiten Befehl [„Solidity“] erhalten, bedeutet dies, dass Sie sich den Solidity Compiler besorgt haben und in Solidity schreiben können.
contract mortal {
/* Define var owner of the type address*/
address owner;
/* this function sets the owner of the contract */
function mortal() { owner = msg.sender; }
/* Function to recover fees */
function kill() { if (msg.sender == owner) selfdestruct(owner); }
}
contract greeter is mortal {
/* define variable greeting type*/
string greeting;
/* this runs when the contract is executed */
function greeter(string _greeting) public {
greeting = _greeting;
}
/* main*/
function greet() constant returns (string) {
return greeting;
}
}
primary = eth.accounts[0]
personal.unlockAccount(primary)
Passwort nicht vergessen! Wenn Sie eine „wahre“ Ausgabe erhalten, bedeutet dies, dass Sie Ihr Konto erfolgreich entsperrt haben.
var greeterSource = 'contract mortal { address owner; function mortal() { owner = msg.sender; } function kill() { if (msg.sender == owner) suicide(owner); } } contract greeter is mortal { string greeting; function greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } }'
Erhalten Sie als Antwort „undefiniert“.
Geben Sie Folgendes in die Geth-Konsole ein:
> var greeterCompiled = web3.eth.compile.solidity(greeterSource)
Die Antwort ist dieselbe: „undefiniert.“
Führen Sie in Ihrer Geth-Konsole die folgenden Befehle aus:
var _greeting = "Hello World!"
var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);
var greeter = greeterContract.new(_greeting, {from: eth.accounts[0], data: greeterCompiled.greeter.code, gas: 1000000}, function(e, contract){
if(!e) {
if(!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
}
})
Es erscheint die Meldung „Vertragstransaktion senden“. Ein paar Sekunden später erhalten Sie die Meldung: „Vertrag abgebaut!“
eth.getCode(greeter.address)
greeter.greet()