To-node opsætning af et privat Ethereum på AWS med kontraktudrulning (del 1)

Fra tid til anden planlægger jeg at efterligne et Ethereum-miljø. Ideen bag er at observere, hvordan Ethereum-noder arbejder sammen, og hvordan forskellige konti interagerer i transaktion og kontraktudrulning. Til testning er de fleste eksempler på implementering af kontrakter i dag hovedsageligt på testrpc eller testnet, men hvordan kontrakten fungerer blandt noder er stadig nyt for mig.

Jeg distribuerer denne opsætning med to noder på AWS. Da jeg ikke bruger nogen specielle funktioner på AWS, skal den gælde for et andet skymiljø.

Min opsætning er inspireret af arbejdet fra JJ’s World (link), og efter at have testet dette flere gange med ændring, dokumenterer jeg hele processen, jeg har udført, og deler nogle erfaringer her om hele processen.

Jeg bruger også afstemningskontrakten udviklet af Mahesh Murthy (link). Dette er en simpel kontrakt, der bedst illustrerer, hvordan en kontrakt fungerer i kæden.

Dette er på ingen måde en detaljeret trin-for-trin guide. Jeg udelader visse trin og henviser til noget arbejde udført af andre. For eksempel kan den detaljerede betjening af AWS EC2, herunder lancering af en ny instans med en opsætning som adgangsnøgle, sikkerhedsgruppe osv. Findes her (link).

Læs del to her

Der er to dele i denne opsætning.

#Crypto ExchangeBenefits

1

Binance
Best exchange


VISIT SITE
  • ? The worlds biggest bitcoin exchange and altcoin crypto exchange in the world by volume.
  • Binance provides a crypto wallet for its traders, where they can store their electronic funds.

2

Coinbase
Ideal for newbies


Visit SITE
  • Coinbase is the largest U.S.-based cryptocurrency exchange, trading more than 30 cryptocurrencies.
  • Very high liquidity
  • Extremely simple user interface

3

eToro
Crypto + Trading

VISIT SITE
  • Multi-Asset Platform. Stocks, crypto, indices
  • eToro is the world’s leading social trading platform, with thousands of options for traders and investors.

Del 1: Opret et 2-node ethereum netværk med privat blockchain, og konti på de to noder kan sende ether til hinanden.

Del 2: Implementere en kontrakt fra en node, og begge konti kan få adgang til og udføre funktioner på denne kontrakt.

Trin 1: Start to EC2-forekomster.

Brug t2.medium (2 vCPU, 4 GB RAM) med standard 8G SSD. Vælg Ubuntu OS. Sørg for, at de to noder har den samme sikkerhedsgruppe, hvilket tillader TCP 30303 (eller 30000-30999, da jeg muligvis bruger flere porte i dette interval). Port 30303 er som standard til peering blandt noder.

#CRYPTO BROKERSBenefits

1

eToro
Best Crypto Broker

VISIT SITE
  • Multi-Asset Platform. Stocks, crypto, indices
  • eToro is the world’s leading social trading platform, with thousands of options for traders and investors.

2

Binance
Cryptocurrency Trading


VISIT SITE
  • ? Your new Favorite App for Cryptocurrency Trading. Buy, sell and trade cryptocurrency on the go
  • Binance provides a crypto wallet for its traders, where they can store their electronic funds.

#BITCOIN CASINOBenefits

1

Bitstarz
Best Crypto Casino

VISIT SITE
  • 2 BTC + 180 free spins First deposit bonus is 152% up to 2 BTC
  • Accepts both fiat currencies and cryptocurrencies

2

Bitcoincasino.io
Fast money transfers


VISIT SITE
  • Six supported cryptocurrencies.
  • 100% up to 0.1 BTC for the first
  • 50% up to 0.1 BTC for the second

Oplevelsesdeling

  • Jeg prøvede først t2.micro, da det er et gratis niveau tilbud. Minedrift var imidlertid ikke en succes (“DAG” -sløjfe uden etherbelønning). Derefter prøvede jeg t2.small og minedrift fungerede. Da jeg implementerede en kontrakt (se del 2), var RPC imidlertid ustabil. Endelig fandt jeg t2.medium god nok til min opsætning.

  • Jeg stopper normalt forekomsten efter test (for at spare penge). Bemærk, at den offentlige IP-adresse på EC2-forekomsten ændres, efter at du STARTER den tilbage. Dette har ikke indflydelse på vores opsætning her, da jeg bruger disse instansers private IP-adresse til peering. Privat IP-adresse forbliver, selv efter at jeg STOP / STARTER forekomsten. Under alle omstændigheder, hvis der er behov for offentlig IP-adresse, fungerer peering stadig, men du skal muligvis ændre peering-adressen hver gang.

Trin 2: Installer geth-klient på node 1

Adgang til node 1 med ssh og korrekt nøgle. Følg den anbefalede proces (link) til geth-installation. Installation fra PPA er god nok.

Knude 1

$ sudo apt-get install software-egenskaber-fælles

$ sudo add-apt-repository -y ppa: ethereum / ethereum

$ sudo apt-get opdatering

$ sudo apt-get installer ethereum

og bekræft det med $ hvilket geth, og du vil se, at geth er installeret korrekt.

Trin 3: Forbered Genesis.json

Den samme Genesis.json anvendes på begge noder, da det er for at sikre, at begge noder har den samme genese-blok. Her er Genesis.json jeg brugte, som er adopteret herfra (link). Jeg tager den oprindelige tildeling ud, da jeg ikke behøver at ændre adressen på denne fil i hver nye opsætning. Hver konto får nogle ethere, når den begynder minedrift.

Genesis.json

{

"config": {

"chainId": 15,

"homesteadBlock": 0,

"eip155Block": 0,

"eip158Block": 0

},

"nonce": "0x0000000000000042",

"mixhash": "0x00000000000000000000000000000000000000000000000000000000000000000000",

"vanskelighed": "0x200",

"tildele": {},

"møntbase": "0x0000000000000000000000000000000000000000",

"tidsstempel": "0x00",

"forældreHash": "0x00000000000000000000000000000000000000000000000000000000000000000000",

"gasLimit": "0xffffffff",

"tildele": {

}

}

Hold denne fil et eller andet sted og senere scp til noderne, eller bare kopier og indsæt med en editor på begge noder.

Trin 4: Start geth med Genesis.json

Knude 1

$ geth init Genesis.json

Trin 5: Start geth nu

Det er god praksis at have to skærme parallelt (eller en delt terminal). En skærm er konsollen, mens en anden viser loggen. Åbn en ny terminal og ssh til Node 1, og fortsæt med at læse loggen.

Node 1 $ geth –nodiscover-konsol 2>> eth.log

en anden terminal $ tail -F eth.log

To-node opsætning af et privat Ethereum på AWS med kontraktudrulning

Oplevelsesdeling

  • I mange eksempler anbefales det at bruge –datadir til at specificere kataloget til privat ethereum blockchain. Dette er god praksis, når du interagerer med forskellige kæder. Mit eksempel er et isoleret miljø. Derfor udelader jeg denne mulighed, og min private kæde er gemt i biblioteket ~ / .ethereum /.

Trin 6: Opret en konto på node 1

Knude 1 geth

> personal.newAccount ()

> eth.getBalance (eth.accounts [0]) ELLER > web3.fromWei (eth.getBalance (eth.accounts [0]), “ether”)

Nu har vi en konto på denne node (tjek den altid med > eth.accounts [0] eller > eth.coinbase). Og i øjeblikket er der ingen æter i kontosaldoen, da vi ikke har tildelt nogen i Genesis.json.

Trin 7: Start minedrift

Vi kan begynde minedrift.

  1. Fra logterminalen vil vi se “Generering af DAG i gang” og efter en epoke udvindes en blok.
  2. Når en blok er udvundet, tilføjes 5 ethere til kontosaldoen. Dette er en god indikator for, om minedrift er vellykket eller ej.
  3. Hvis vi fortsætter minedrift, bliver kontosaldoen fortsat stigende, når flere nye blokke udvindes.

Knude 1 geth

> miner.start ()

> eth.getBalance (eth.accounts [0])

Du er velkommen til at fortsætte minedrift, ellers slukker vi den ved > miner.stop ().

Nu er Node 1 klar. Lad os arbejde på node 2.

Trin 8: Gentag trin 2-6 på node 2

Sørg for, at den samme Genesis.json bruges, når du starter blockchain på Node 2.

Start ikke minedrift, da vi vil have Node 2 i samme blockchain som Node 1 (gennem Peering).

Trin 9: Peering

Nu begynder vi at kigge på de to noder. Der er flere måder at kigge på. Her bruger jeg “admin addPeer” til at udføre peering: I Node 2 skal du tilføje Node 1-enodeoplysninger til peering.

Kontroller først begge knudepunkter, at der ikke er peering.

Knude 1 > admin.peers

Knude 2 > admin.peers

Få information om enode fra knude 1

Knude 1 > admin.nodeInfo.enode

Vi får noget som dette:

"enode: // c667fdf1f6846af74ed14070ef9ffeee33e98ff8ab0dd43f67415868974d8205e0fb7f55f6f37e9e1ebb112adfc0b88755714c7bc83a7ac47d30f8eb53118687 @ [::]: 30"

Føj disse oplysninger til knude 2. Skift [::] med den private adresse på knude 1.

Knude 2

> admin.addPeer ("enode: //c667fdf1f6846af74ed14070ef9ffeee33e98ff8ab0dd43f67415868974d8205e[email protected]172.33.33?")

Efter denne kontrol kigger begge noder og de hinanden.

Knude 1 > admin.peers

Knude 2 > admin.peers

Venstre side er Node 1 og højre side er Node 2. Bemærk, at efter > addPeer () på node 2, to noder peeres. Vi behøver ikke at gøre det samme på node 1.

Fra loggen ser vi også, at efter peering ser vi “Blokssynkronisering startet” og “Importeret nyt kædesegment” på Node 2-log (nederst til højre terminal).

Oplevelsesdeling

  • Sørg for at bruge den samme Genesis.json til at starte blockchain. I et forsøg glemte jeg at starte trin, og peering mislykkedes.
  • AWS EC2-forekomst leveres med en privat IP-adresse og en offentlig IP-adresse. Begge fungerer fint til tilføjelse af peering, men det er mere praktisk at bruge privat IP-adresse, da den ikke ændres efter instans STOP / START.

Trin 10: Send ether mellem konti

Da begge knudepunkter er i samme ethereum-blockchain, sender vi nogle ethere mellem kontiene. I dette eksempel sendes 10 ethere fra konto 1 til konto 1 til konto 2. Dette er en af ​​de bedste måder at kontrollere, om opsætningen er vellykket.

Knude 1

> web3.fromWei (eth.getBalance (eth.coinbase), “ether”)

> personal.unlockAccount (eth.coinbase)

> eth.sendTransaction ({fra: eth.coinbase, til: "0xabc65de992289401dcff3a70d4fcfe643f7d2271", værdi: web3.toWei (10, “ether”)})

> miner.start ()

Knude 2 > web3.fromWei (eth.getBalance (eth.coinbase), “ether”)

To-node opsætning af et privat Ethereum på AWS med kontraktudrulning

Bemærk, at vi ser “afventende transaktion”, da denne transaktion endnu ikke udvindes. Når vi begynder minedrift i Node 1, er transaktionen udført, og kontosaldo på Node 2 er nu 10 ethere.

Og vi ser 45 ethere i node 1 (ikke de forventede 20-10 = 10 ethere). Det er fordi Node 1 fortsat modtager minedriftbelønning (5 ethere per blok). Balancen fortsætter med at stige, indtil vi stopper minedrift.

Lukker

Nu gennemfører vi den første del: vi bygger en to-node privat ethereum blockchain på AWS. Du kan gå direkte til næste del for at implementere kontrakt, r stoppe processen og EC2-instans til fremtidig brug. Hvis peering ændres af en eller anden grund, kan du peere noderne igen med trin 9 ovenfor.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me