Eigene Blockchain Erstellen

Aktualisiert 02.05.2024

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!

Verwendung einer Blockchain vs. Verwendung einer Datenbank

Das ist doch eine gute Frage, nicht wa

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:

  • Unveränderlichkeit. Wenn Sie alle Ihre wichtigen Daten auf einer Blockchain bereitgestellt haben, ist es unmöglich, Ihre Aufzeichnungen zu manipulieren. Was das Speichern von Daten in einer Datenbank betrifft, kann jeder Dateien problemlos ändern, bevor er sie an eine andere Person sendet.
  • Redundanz. Sie müssen sich nicht über den Verlust wichtiger Dateien ärgern. Tatsächlich können Sie von überall in Ihrem Netzwerk den gleichen Datensatz abrufen. Für Sie, Blockchain-Benutzer, gibt es also keinen Datenverlust und keine Dateibeschädigung mehr!
  • Sicherheit. Eine zentralisierte Datenbank ist ein gutes Ziel für Hacker. Die Blockchain ist ein ganz anderes „Tier“. Je mehr Benutzer/Nods Sie in einem Netzwerk haben, desto genauere Kopien der unschätzbaren Daten erhalten Sie. Mit einem solchen Ansatz lässt sich verhindern, dass wichtige Informationen schwerwiegend beschädigt werden oder sogar dauerhaft verloren gehen.
  • Kosteneffizienz. Unternehmen, die dezentrale Knotennetzwerke zur Verwaltung ihrer Hauptbücher nutzen, können Geld für Sicherheit, Hosting und Wartung sparen. Jeder Knoten in einem Netzwerk ist eine Art eigenständiges System, das Dateien über Jahre hinweg speichert.
  • Transparenz. Durch den Einsatz einer Blockchain erhalten Sie ein höheres Maß an Vertrauen und die Möglichkeit, Geschäfte auf offene Weise abzuwickeln.

Lass uns eine Blockchain erstellen

Bevor wir beginnen, sollten Sie auch wissen, dass es zwei Arten von Blockchain gibt: private Blockchain und öffentliche Blockchain. Wie wäre es also, wenn Sie es einmal ausprobieren und Ihre ganz eigene Blockchain erstellen würden? Sie müssen lediglich der folgenden Anleitung folgen.

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.

Go Ethereum installieren

Ihr erster Schritt besteht darin, Go Ethereum (geth) zu installieren. Go Ethereum ist (zusammen mit C++ und Python) eine der ursprünglichen Implementierungen des in Go geschriebenen Ethereum-Protokolls. Um geth zu installieren, sollten Mac OS X-Benutzer Homebrew verwenden, einen zusätzlichen Paketmanager für MacOS. Homebrew installiert die Dinge, die Sie benötigen, aber nicht im Apple Store finden können. Führen Sie nach der Installation des Managers die folgenden Befehle aus:

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.

Erstellen Sie Ihre Blockchain

Führen Sie die folgenden Befehle aus, um eine Blockchain zu erstellen (die Option maxpeers wird auf 0 gesetzt, um das Netzwerk zu deaktivieren):

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).

Senden Sie etwas ETH an Ihr neu erstelltes Konto

Öffnen Sie die Genesis-Blockdatei noch einmal und geben Sie Folgendes ein:

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.

Mining starten

Um eine vollwertige Blockchain zu erhalten, müssen Sie Miner entwickeln. Um diese Herausforderung zu bewältigen, schließen Sie die Geth-Konsole (geben Sie „exit“ ein und drücken Sie die Eingabetaste). Führen Sie den folgenden Befehl aus, um das Mining zu starten:

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")

Installieren Sie den Solidity Compiler

Genau wie andere Kryptowährungen Ethereum die Vorteile von in Solidity geschriebenen Smart Contracts. Um diese vertragsorientierte Programmiersprache verwenden zu können, müssen Sie also den Solidity Compiler installieren. Geben Sie dazu die folgenden Zeilen in ein neues Terminal ein:

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.

Unterschied zwischen Mortal- und Greeter-Verträgen

Unten finden Sie den Code für einen einfachen Vertrag mit hinzugefügten Kommentaren. Es enthält zwei Arten von Verträgen:
  • ein vergänglicher Vertrag, der von der Person, die ihn geschrieben hat, gekündigt werden kann und als solcher deklariert werden muss, da Verträge standardmäßig unsterblich sind;
  • ein Begrüßungsvertrag, der nichts anderes ist als ein „Hallo Welt!“ Gruß.

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;
}
}

Entsperren Sie Ihr Konto

Wenn Sie einen neuen Vertrag abschließen, fallen ETH-Gebühren an. Sie müssen also zuerst Ihr Konto entsperren. Geben Sie dazu Folgendes ein:

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.

Erstellen Sie einen intelligenten Vertrag

Kopieren Sie in der Geth-Konsole den gesamten Quellcode Ihres Vertrags aus der vorherigen Version und fügen Sie ihn in einer Zeile ohne Kommentare ein:

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.“

Bereiten Sie Ihren Smart Contract für die Bereitstellung vor

Wenn Sie dies lesen, dann haben Sie Ihren Sterblichkeitsvertrag und Ihren Begrüßungsvertrag erhalten. Jetzt müssen Sie mit Ihrem Smart-Contract arbeiten, eine Begrüßungsnachricht verfassen und Ihre Kontoobjekte instanziieren. Machen Sie sich bereit, dafür etwas mehr ETH auszugeben.

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!“

Testen Sie Ihren Smart Contract

Durch Ausführen der folgenden Befehle können Sie eine lange Adresse und dann Ihre Begrüßungsnachricht zurückgeben.

eth.getCode(greeter.address)
greeter.greet()

Beitrag bewerten
15 Bewertung (4.1 von 5)
Ihre Bewertung wurde übernommen
Wie können wir Ihnen helfen?
Senden
Yuri Musienko
Manager für Geschäftsentwicklung
Experte für die Skalierung von Krypto- und Fintech-Startups: Krypto-Börsen, binäre Optionen, P2P-Lösungen, Krypto-Zahlungsgateways und Asset-Tokenisierung. Seit 2018 berät er Unternehmen in strategischer Planung. Mehr Details