Úvod do ethereumJ

Java Top

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Úvod

V tomto článku sa pozrieme na knižnicu EthereumJ, ktorá nám umožňuje komunikovať s blockchainom Ethereum pomocou Java.

Po prvé, poďme sa v krátkosti ponoriť do podstaty tejto technológie.

2. O spoločnosti Ethereum

Ethereum je a kryptomena využitie distribuovanej databázy peer-to-peer vo forme programovateľného blockchain, virtuálny stroj Ethereum (EVM). Je synchronizovaný a prevádzkovaný prostredníctvom rôznorodých, ale prepojených uzly.

Od roku 2017 Uzly synchronizovať blockchain prostredníctvom konsenzu vytvárať mince ťažbou (doklad o praci), overiť transakcie, vykonať inteligentné zmluvy napísané Solidity a spustite EVM.

The blockchain sa delí na blokov ktoré obsahujú štáty účtu (vrátane transakcií medzi účtov) a doklad o praci.

3. The Ethereum Fasáda

The org.ethereum.fasáda.Ethereum trieda abstrakty a spája veľa balíkov EthereumJ do jedného ľahko použiteľného rozhrania.

Je možné sa pripojiť k uzlu na synchronizáciu s celkovou sieťou a po pripojení môžeme pracovať s blockchainom.

Vytvorenie fasádneho objektu je také ľahké ako:

Ethereum ethereum = EthereumFactory.createEthereum ();

4. Pripojenie k sieti Ethereum

Aby sme sa mohli pripojiť k sieti, musíme sa najskôr pripojiť k uzlu, t.j. server, na ktorom je spustený oficiálny klient. Uzly sú reprezentované znakom org.ethereum.net.rlpx.Node trieda.

The org.ethereum.listener.EthereumListenerAdapter spracováva blockchainové udalosti zistené našim klientom po úspešnom nadviazaní spojenia s uzlom.

4.1. Pripojenie k sieti Ethereum

Pripojme sa k uzlu v sieti. Môžete to urobiť manuálne:

Reťazec ip = "// localhost"; int port = 8345; Reťazec nodeId = "a4de274d3a159e10c2c9a68c326511236381b84c9ec ..."; ethereum.connect (ip, port, nodeId);

Pripojenie k sieti sa dá vykonať aj automaticky pomocou fazule:

verejná trieda EthBean {súkromné ​​Ethereum ethereum; public void start () {ethereum = EthereumFactory.createEthereum (); ethereum.addListener (nový EthListener (ethereum)); } public Block getBestBlock () {return ethereum.getBlockchain (). getBestBlock (); } public BigInteger getTotalDifficulty () {return ethereum.getBlockchain (). getTotalDifficulty (); }}

Potom si môžeme injekciu podať EthBean do našej konfigurácie aplikácie. Potom sa automaticky pripojí k sieti Ethereum a začne sťahovať blockchain.

V skutočnosti je väčšina spracovania spojenia pohodlne zabalená a abstrahovaná iba pridaním znaku org.ethereum.listener.EthereumListenerAdapter inštancie k našim vytvoreným org.ethereum.fasáda.Ethereum napríklad ako v našom štart () vyššie uvedená metóda:

EthBean eBean = nový EthBean (); Executors.newSingleThreadExecutor (). Submit (eBean :: start); 

4.2. Manipulácia s blockchainom pomocou poslucháča

Môžeme tiež podtriediť Adaptér EthereumListener spracovávať blockchainové udalosti zistené našim klientom.

Aby sme tento krok dosiahli, budeme musieť vytvoriť nášho podtriedneho poslucháča:

verejná trieda EthListener rozširuje EthereumListenerAdapter {private void out (String t) {l.info (t); } // ... @Override public void onBlock (Blokovať blok, Zoznam potvrdení) {if (syncDone) {out ("Čistá hodnota hash:" + calcNetHashRate (blok)); out ("Obtiažnosť bloku:" + block.getDifficultyBI (). toString ()); out ("Blokovať transakcie:" + block.getTransactionList (). toString ()); out ("Najlepší blok (posledný blok):" + ethereum .getBlockchain () .getBestBlock (). toString ()); out ("Celková obtiažnosť:" + ethereum .getBlockchain () .getTotalDifficulty (). toString ()); }} @Override public void onSyncDone (stav SyncState) {out ("onSyncDone" + stav); if (! syncDone) {out ("** SYNC DONE **"); syncDone = true; }}} 

The onBlock () metóda sa spustí na každom prijatom novom bloku (či už starom alebo súčasnom). EthereumJ predstavuje bloky a manipuluje s nimi pomocou org.ethereum.core.Block trieda.

The onSyncDone () po dokončení synchronizácie dôjde k spusteniu metódy, ktorá aktualizuje naše miestne údaje o ethereu.

5. Práca s blockchainom

Teraz, keď sa môžeme pripojiť k sieti Ethereum a pracovať priamo s blockchainom, sa ponoríme do niekoľkých základných, ale napriek tomu veľmi dôležitých operácií, ktoré často používame.

5.1. Odoslanie transakcie

Teraz, keď sme sa pripojili k blockchainu, môžeme odoslať transakciu. Predloženie a Transakcia je pomerne ľahké, ale vytvorenie skutočného Transakcia je zdĺhavá téma sama o sebe:

ethereum.submitTransaction (nová transakcia (nový bajt []));

5.2. Prístup k Blockchain Objekt

The getBlockchain () metóda vracia a Blockchain fasádny objekt s getrami na načítanie aktuálnych problémov so sieťou a špecifických Bloky.

Odkedy sme založili naše Počúvadlo ethereum v časti 4.3 môžeme pristupovať k blockchainu pomocou vyššie uvedenej metódy:

ethereum.getBlockchain (); 

5.3. Vrátenie adresy účtu Etherea

Môžeme tiež vrátiť éter Adresa.

Získať éter Účet - najskôr musíme na blockchaine autentifikovať pár verejného a súkromného kľúča.

Vytvorme nový kľúč s novým náhodným párom kľúčov:

kľúč org.ethereum.crypto.ECKey = nový ECKey (); 

Vytvorme kľúč z daného súkromného kľúča:

kľúč org.ethereum.crypto.ECKey = ECKey.fromPivate (privKey);

Potom môžeme pomocou nášho kľúča inicializovať Účet. Volaním .init () nastavili sme obe ECKey a pridružené Adresa na Účet objekt:

org.ethereum.core.Account account = new Account (); account.init (kľúč);

6. Ďalšia funkčnosť

Rámec poskytuje ďalšie dve hlavné funkcie, ktorým sa tu nebudeme venovať, ale ktoré stoja za zmienku.

Najskôr máme možnosť kompilovať a vykonávať inteligentné kontrakty Solidity. Vytváranie zmlúv v Solidity a ich následné zostavovanie a vykonávanie je však samostatná rozsiahla téma.

Po druhé, aj keď rámec podporuje obmedzenú ťažbu pomocou CPU, vzhľadom na jej nízku ziskovosť je odporúčaný prístup použitie GPU baníka.

Pokročilejšie témy týkajúce sa samotného Etherea nájdete v oficiálnych dokumentoch.

7. Záver

V tomto rýchlom výučbe sme si ukázali, ako sa pripojiť k sieti Ethereum a niekoľko dôležitých metód pre prácu s blockchainom.

Ako vždy, kód použitý v tomto príklade nájdete na GitHub.

Java dole

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

$config[zx-auto] not found$config[zx-overlay] not found