blockj: Ein einfaches Blockchain-Projekt basierend auf Java
Der Herausgeber von Downcodes präsentiert Ihnen heute ein einfaches Blockchain-Projekt (Konsortiumskette), das auf Java basiert – blockj. Es umfasst Verschlüsselungstools, Wallets, P2P-Übertragung, Blocksynchronisierung, Netzwerkkonsens und andere grundlegende Blockchain-Implementierungen. Es ist ein sehr geeignetes Projekt für Anfänger, um die Blockchain-Technologie zu erlernen.
Projektstruktur
blockj wird mit dem Netzwerk-Framework SpringBoot + Tio implementiert. Seine Hauptstruktur ist wie folgt:
1. Hauptprogramm: implementiert mit dem SpringBoot-Framework.
2. P2P-Übertragung: implementiert mit dem T-IO-Netzwerk-Framework.
Betriebsumgebung
Für die ordnungsgemäße Ausführung des Blockj-Projekts ist JDK 1.8 oder höher erforderlich.
Projektmodul
Das Blockj-Projekt enthält hauptsächlich die folgenden drei Module:
1. blockj-base: Grundlegendes öffentliches Toolkit, einschließlich Verschlüsselungstools, Blöcken, Nachrichten und anderen Datenmodellen sowie Datenspeicherung und anderen Funktionen.
2. blockj-miner: Blockchain-Hauptprogramm, einschließlich Miner, Blocksynchronisation, P2P-Netzwerk, RPC-API und anderen Funktionen.
3. blockj-client: Client-Befehlszeilentool, das hauptsächlich zum Aufrufen der mit Miner verbundenen APIs verwendet wird, um die Benutzerinteraktion mit der Blockchain zu realisieren.
Schnellstart
In den folgenden Schritten erfahren Sie, wie Sie ein Blockchain-Netzwerk erstellen und grundlegende Vorgänge ausführen:
1. Erstellen Sie einen Genesis-Knoten (erstellen Sie ein Netzwerk).
Zuerst müssen Sie das Projekt klonen und kompilieren und verpacken:
`Bash
Git-Klon https://gitee.com/blackfox/blockj.git
CD-Blockj
mvn sauberes Paket
`
Erstellen Sie dann den Genesis-Knoten:
`Bash
./miner genesis --repo=/data/genesis --enable-mining=true
`
2. Starten Sie Genesis Miner
`Bash
./miner run --repo=/data/genesis
`
3. Starten Sie einen neuen Knoten (treten Sie dem Netzwerk bei)
Damit neue Knoten dem bestehenden Netzwerk beitreten können, müssen Sie Miner mithilfe des Genesis-Blocks initialisieren und dann Miner starten:
`Bash
./miner init --repo=/data/miner1 --genesis=genesis.car --api.port=8002 --p2p.port=3456
./miner run --repo=/data/miner1
`
Kundennutzung
Im Folgenden sind einige häufig verwendete Client-Befehlszeilenvorgänge aufgeführt:
1. Wallet-Liste anzeigen
`Bash
./Client-Wallet-Liste
`
Ausgabe:
`
Adresssaldo Nonce
0x0d181310331612e107b5e0dfdf971cfb9de780adfds 800 10
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400 0
0xb6258bc70240ee5daa213f671c08db51e50a4cbe 50800 30
cd3da3ec4195070e13a6d88b75101f6ceb427a8e 0 0
`
2. Erstellen Sie eine neue Wallet
Erstellen Sie ein normales Wallet:
`Bash
./Client-Wallet neu
`
Erstellen Sie eine Wallet mit einer mnemonischen Phrase (Sie können ein Passwort festlegen und eine Keystore-Datei generieren):
`Bash
./client wallet new --mnemonic=true 123456
`
3. Überprüfen Sie den Kontostand Ihrer Brieftasche
`Bash
./Client-Wallet-Guthaben 0x2505bf54f3a63848e44a105e8de599ad08ae8c58
`
Ausgabe:
`
Adresssaldo
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400
`
4. Übertragen
`Bash
./client chain send --from=0x0d181310331612e107b5e0dfdf971cfb9de780adfds 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 123
`
Ausgabe:
`
Nachricht senden, CID: 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
5. Überprüfen Sie die aktuelle Kettenhöhe
`Bash
./client Kettenkopf
`
6. Nachrichten in der angegebenen Kette anzeigen
`Bash
./Client-Kette getMessage 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
Ausgabe:
`
Nachricht{Version=1, von='0x0d181310331612e107b5e0dfdf971cfb9de780adfds', bis='0x2505bf54f3a63848e44a105e8de599ad08ae8c58', Wert=123, Zeitstempel=1672826743640, pub Key='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCw5EXe33S25zZDT25sNYu1bjtBfaCwEGSgnGhJiE31fCfDsyE3pNFw7cC87VfQZQqiEdntMmztfpiDcRe1gv3aJJ4', cid='05b6074241f1 4 06cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631', Status=APPENDING, Nonce=2, Parameter= 'null ', height=0, sign='30460221009A8B2750A6D986EB926B67163B740BBACDD07FE2D87F8FA9AE2F08424989477602210082C1C36EAEEC6367C023847F995291873F305B867 E9B65A5C68ED8A4293DB890'}
`
7. Zeigen Sie Blockinformationen in einer bestimmten Höhe an
`Bash
./Client-Kette getBlock 1
`
Ausgabe:
`
Block{header=BlockHeader{height=1, difficulty=28269553036454149273332760011886696253239742350009903329945699220681916416, nonce=703, createTime=1672813674, hash='0004c 262f7ead28cc66c9336d7a8335cb8fea5a06b0b1fd7488c3c9b140987cc', previousHash='ed5126ddd65f39a17739b8e26ea3edecfff6bf196148dc259d9a3eddeefc23d5'}, messages=[Message {version=0, from='B099' , to='0xb6258bc70240ee5daa213f671c08db51e50a4cbe', value=50, timestamp=1672813674163, pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSD1ErKp8AqSj4Ph9Jsj2Gvk7w1pyLg qDRiguC7JvjeGZJZ1si1qRYCAsVmu1UvYRqvhiCBgYDpmyuWK5VzD5KK4RNY', cid='3e1f8987b0d66b2de155e78aeef6984ab7cb6c3acdf03c835c01f4b4088fb90d', status=SUCCESS, nonce=0 , params='Miner Reward.', height=1, sign= '304402202DF6EABBF5C81C41996C44F8E1230D44CAE8ADA9184B466D9B708ADC8B050225022049D74E4E99E0EA8E56208AD2E4B7B17C2320 DC3E6461A17C94D1820818559CA9 '}], blockSign='3046022100C04714C00642527AF6AA1DB2B537E5FD887F52999F66929AA2A928D4C6A4897A022100AF98888FDC825FFB0683E8D65494363790E5173F 3991AF61AB86DEEFEAF15D81'}
`
8. Sehen Sie sich die Liste der P2P-Knoten im aktuellen Netzwerk an
`Bash
./client net peers
`
9. Zeigen Sie die P2P-Verbindungsinformationen des aktuellen Knotens an
`Bash
./client net listen
`
Ausgabe:
`
P2P-Verbindungsinformationen, die früher von anderen Knoten verbunden wurden
127.0.0.1:2345
`
10. Verbinden Sie einen Knoten manuell
`Bash
./client net connect 192.22.33.11:3456
`
Zusammenfassung
Das blockj-Projekt ist ein Einstiegsprojekt zum Erlernen der Blockchain-Technologie. Dadurch können Sie die grundlegenden Konzepte und Implementierungsmethoden der Blockchain erlernen. Natürlich implementiert es derzeit nur den POW-Konsensalgorithmus. Wenn Sie ihn in Produktionsprojekten verwenden möchten, müssen Sie ihn entsprechend Ihren eigenen Projektanforderungen ändern und verbessern.
Ich hoffe, dieser Artikel ist hilfreich für Sie.