Bevezetés az Ethereum-baJ

Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Bemutatkozás

Ebben a cikkben megnézzük az EthereumJ könyvtárat, amely lehetővé teszi számunkra, hogy a Java használatával kölcsönhatásba lépjünk az Ethereum blokklánccal.

Először tekintsük át röviden azt, hogy miről is szól ez a technológia.

2. Az Ethereumról

Az Ethereum egy kriptovaluta elosztott, peer-to-peer adatbázis felhasználása programozható formában blokklánc, az Ethereum virtuális gép (EVM). Szinkronizált és különböző, de összekapcsolt módon működik csomópontok.

2017-től Csomópontok szinkronizálja a blokklánc konszenzus révén bányászat útján készítsen érméket (a munka igazolása), ellenőrizze a tranzakciókat, hajtsa végre okos szerződések szilárdságban írva, és futtassa az EVM-et.

A blokklánc fel van osztva blokkok amelyek tartalmazzák számlaállapotok (ideértve a fiókok) és a munka igazolása.

3. Az Ethereum Homlokzat

A org.ethereum.homlokzat.Ethereum osztály absztrakciókat készít és egyesíti az EthereumJ számos csomagját egy könnyen kezelhető felületen.

Lehetséges csatlakozni egy csomóponthoz, hogy szinkronizálhassuk a teljes hálózattal, és miután csatlakoztattuk, működhetünk a blokklánccal.

A homlokzati objektum létrehozása olyan egyszerű, mint:

Ethereum ethereum = EthereumFactory.createEthereum ();

4. Csatlakozás az Ethereum hálózathoz

A hálózathoz való csatlakozáshoz először csatlakoznunk kell egy csomóponthoz, azaz a hivatalos klienst futtató kiszolgáló. A csomópontokat a org.ethereum.net.rlpx.Node osztály.

A org.ethereum.listener.EthereumListenerAdapter kezeli az ügyfelünk által észlelt blokklánc eseményeket, miután a csomóponthoz való kapcsolat sikeresen létrejött.

4.1. Csatlakozás az Ethereum hálózathoz

Csatlakozzunk a hálózat csomópontjához. Ez manuálisan is elvégezhető:

Karakterlánc ip = "// localhost"; int port = 8345; String nodeId = "a4de274d3a159e10c2c9a68c326511236381b84c9ec ..."; ethereum.connect (ip, port, nodeId);

A hálózathoz való csatlakozás egy bab segítségével automatikusan történhet:

nyilvános osztály EthBean {private Ethereum ethereum; public void start () {ethereum = EthereumFactory.createEthereum (); ethereum.addListener (új EthListener (ethereum)); } public blokk getBestBlock () {return ethereum.getBlockchain (). getBestBlock (); } public BigInteger getTotalDifficulty () {return ethereum.getBlockchain (). getTotalDifficulty (); }}

Ezután beadhatjuk az injekciót EthBean az alkalmazáskonfigurációnkba. Ezután automatikusan csatlakozik az Ethereum hálózathoz, és megkezdi a blokklánc letöltését.

Valójában a legtöbb kapcsolatfeldolgozás kényelmesen be van csomagolva és elvonatkoztatva csupán egy org.ethereum.listener.EthereumListenerAdapter például a létrehozott org.ethereum.homlokzat.Ethereum például, mint mi tettük Rajt() fenti módszer:

EthBean eBean = új EthBean (); Executors.newSingleThreadExecutor (). Submit (eBean :: start); 

4.2. A blokklánc kezelése figyelő segítségével

Alosztályba is sorolhatjuk a EthereumListenerAdapter az ügyfelünk által észlelt blockchain események kezelésére.

Ennek a lépésnek a végrehajtásához meg kell tennünk az alosztályba tartozó hallgatónkat:

public class Az EthListener kiterjeszti az EthereumListenerAdapter {private void out (String t) {l.info (t); } // ... @Orride public void onBlock (Block block, List nyugták) {if (syncDone) {out ("Nettó hash rate:" + calcNetHashRate (block)); out ("Blokkolási nehézség:" + block.getDifficultyBI (). toString ()); out ("Blokkolja a tranzakciókat:" + block.getTransactionsList (). toString ()); out ("Legjobb blokk (utolsó blokk):" + ethereum .getBlockchain () .getBestBlock (). toString ()); out ("Teljes nehézség:" + ethereum .getBlockchain () .getTotalDifficulty (). toString ()); }} @Orride public void onSyncDone (SyncState state) {out ("onSyncDone" + state); if (! syncDone) {out ("** SYNC DONE **"); syncDone = igaz; }}} 

A onBlock () A metódus minden új beérkezett blokkon kiváltható (legyen az régi vagy aktuális). Az EthereumJ képviseli és kezeli a blokkokat a org.ethereum.core.Block osztály.

A onSyncDone () A metódus a szinkronizálás befejeztével elindul, ezzel frissítve a helyi Ethereum adatainkat.

5. Munka a blokklánccal

Most, hogy csatlakozhatunk az Ethereum hálózathoz, és közvetlenül a blokklánccal dolgozhatunk, számos alapvető, de ennek ellenére nagyon fontos műveletbe merülünk, amelyeket gyakran használunk.

5.1. Tranzakció benyújtása

Most, hogy csatlakoztunk a blokklánchoz, tranzakciót nyújthatunk be. Beküldés a Tranzakció viszonylag könnyű, de tényleges létrehozása Tranzakció önmagában hosszadalmas téma:

ethereum.submitTransaction (új tranzakció (új byte []));

5.2. Hozzáférés a Blockchain Tárgy

A getBlockchain () metódus a Blockchain homlokzati objektum getterekkel a jelenlegi hálózati nehézségek leküzdéséhez és specifikus Blokkok.

Mivel felállítottuk a EthereumListener a 4.3 szakaszban a fenti módszerrel érhetjük el a blokkláncot:

ethereum.getBlockchain (); 

5.3. Ethereum számla címének visszaadása

Visszatérhetünk egy Ethereummal is Cím.

Ethereumot szerezni Számla - előbb hitelesítenünk kell egy nyilvános és privát kulcspárot a blokkláncon.

Hozzunk létre egy új kulcsot egy új véletlenszerű kulcspárral:

org.ethereum.crypto.ECKey kulcs = new ECKey (); 

Hozzunk létre egy kulcsot egy adott magánkulcsból:

org.ethereum.crypto.ECKey kulcs = ECKey.fromPivate (privKey);

Ezután a kulcsunkkal inicializálhatunk egy Számla. Hívással .benne() mindkettőt beállítottuk ECKey és a kapcsolódó Cím a Számla tárgy:

org.ethereum.core.Account account = new Account (); account.init (kulcs);

6. Egyéb funkcionalitás

A keretrendszer további két fő funkcióval rendelkezik, amelyekre itt nem térünk ki, de amelyeket érdemes megemlíteni.

Először is képesek vagyunk a Solidity intelligens szerződések összeállítására és végrehajtására. A szerződések létrehozása a Solidity-ban, majd azok összeállítása és végrehajtása azonban önmagában is kiterjedt téma.

Másodszor, bár a keretrendszer támogatja a korlátozott bányászatot CPU használatával, a GPU bányász használata az ajánlott megközelítés, tekintettel az előbbi jövedelmezőségének hiányára.

Magával az Ethereummal kapcsolatos fejlettebb témakörök megtalálhatók a hivatalos dokumentumokban.

7. Következtetés

Ebben a gyors bemutatóban megmutattuk, hogyan lehet csatlakozni az Ethereum hálózathoz, valamint számos fontos módszert a blokklánccal való együttműködésre.

Mint mindig, az ebben a példában használt kód megtalálható a GitHubon.

Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

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