Bevezetés az Ethereum-baJ
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 FOLYAMATOT1. 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ó