Sådan overføres midler til Ethereum-netværket ved hjælp af GETH CLI

I min tidligere artikel lærte du, hvordan du opretter en fuldt synkroniseret blockchain-node på 10 minutter. Det er nu tid til at lære at udføre en transaktion på Ethereum-netværket ved hjælp af GETH CLI.

For at være på samme side skal du først gennemgå alle trin fra forrige artikel.

Færdig? Perfekt.

På dette tidspunkt ved du:

  • hvordan man kører en fuldt synkroniseret Ethereum blockchain-node
  • hvordan man fastgør GETH console
  • hvordan man forespørger en saldo på en Ethereum-konto
geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc 
eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
> 7500000000000000000

Jeg gør det, tror du måske, men vent et øjeblik Lukas ... hvorfor 7.5ETHvises som 7500000000000000000i Geth console?

Ether vs Wei

Ethereum Virtual Machine understøtter ikke decimaler eller flyder. Tilsyneladende er beregninger i økonomi lettere i heltal.

Derfor, for at kunne sende en brøkdel af 1 ETH, besluttede Ethereum-fundamentet at oprette deres eget metriske system, hvor den mindste enhed ville være 1 Wei, og 1 Ether er 1e18 Wei.

Men ingen bekymringer, der er værktøjer, der kan gøre dit liv lettere. For eksempel kan jeg varmt anbefale Ether to Wei online konverter:

//etherconverter.online

For at sende $ 15 værdi af Ether, hvor 1 ETH == $ 200 (gode gamle tider ...), ville du foretage en transaktion, der sender 0,0740 ETH, som ville være og skal repræsenteres i Wei som 7400000000000000000.

Online Ether til Wei-konverter:

Oversigt over det metriske Ethereum-system:

Øvelse gør mestring. Lad os faktisk sende 74000000000000000 Wei ($ 15) til en anden konto.

Afsendelse af Ether til en anden konto ved hjælp af GETH CLI

I en terminal skal du huske at køre en fuldt synkroniseret blockchain-node:

geth --rinkeby --datadir=~/.gophersland_ethereum_r1 --port=30304 --cache=2048 --rpc --rpcport=8546 --rpcapi=eth,web3,net,personal --syncmode=fast

I en anden terminal opretter vi vores anden Ethereum-konto, nøjagtigt som i del 1.

ls -la ~/.gophersland_ethereum_r1/keystore/> drwx------ 2 enchanter enchanter 4096 sep 24 15:36 .> drwx------ 4 enchanter enchanter 4096 sep 24 15:26 ..> -rw------- 1 enchanter enchanter 491 sep 24 15:36 
UTC--2018-09-24T13-36-43.069452577Z--ceee57f2b700c2f37d1476a7974965e149fce2d4geth --datadir=~/.gophersland_ethereum_r1 account new> INFO [09-24|15:36:33.566] Maximum peer count ETH=25 LES=0 total=25> Your new account is locked with a password. Please give a password. Do not forget this password.
> Passphrase: > Repeat passphrase: > Address: {7aa4a14286a25e3a275d7a122c23dc3c107a636a}ls -la ~/.gophersland_ethereum_r1/keystore/> drwx------ 2 enchanter enchanter 4096 oct 25 20:14 .> drwx------ 4 enchanter enchanter 4096 oct 25 19:48 ..> -rw------- 1 enchanter enchanter 491 sep 24 15:36 
UTC--2018-09-24T13-36-43.069452577Z--ceee57f2b700c2f37d1476a7974965e149fce2d4

Lad os nu vedhæfte Geth-konsollen til den aktuelt kørende blockchain-knude, som vi gjorde i den forrige artikel for at overføre $ 15 til denne nyoprettede konto ved at udføre eth.sendTransactionkommandoen.

geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc 
eth.sendTransaction({from: "0xceee57f2b700c2f37d1476a7974965e149fce2d4",to: "0x7aa4a14286a25e3a275d7a122c23dc3c107a636a", value: "74000000000000000"})

Fejl: godkendelse nødvendig: adgangskode eller oplåsning.

Du skulle få en fejl. Dette skyldes, at afsendelse af Ether er en "transaktion", og en transaktion ændrer tilstand, koster gas og bruger penge. Hvilket betyder, at det skal underskrives med vores private nøgle, der er gemt i Keystore. For at dekryptere nøglen skal vi give en adgangskode eller med andre ord låse kontoen op.

Udfør følgende kommando for at låse din konto op i de næste 60'ere, og udfør sendTransaction-kommandoen igen.

web3.personal.unlockAccount(web3.personal.listAccounts[0], null, 60) 
eth.sendTransaction({from: "0xceee57f2b700c2f37d1476a7974965e149fce2d4", to: "0x7aa4a14286a25e3a275d7a122c23dc3c107a636a", value: "74000000000000000"})

Vi kunne også have sendt adgangskoden som et andet argument i stedet for null. Men denne måde er sikrere, da din adgangskode kun er i en buffer og ikke er gemt i nogen log eller synlig på skærmen.

Denne gang lykkedes kommandoen, og en transaktionshash-kvittering blev returneret! Oh yeah!

Da vi er forbundet til Rinkeby-netværket, kan vi drage fordel af Rinkeby GUI-opdagelsesrejsende til at kontrollere status for denne transaktion, brugt gas, gaspris osv.

  1. Åbn opdagelsesrejsende
  2. Indsæt transaktionskvittering-hash i søgefeltet
  3. Færdig, vi brugte 21.000 gas (standard til at sende penge), og transaktionen lykkedes!

Du kan nu spørge saldoen på begge konti og se den ændrede tilstand:

eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4") > 7425979000000000000 
eth.getBalance("0x7aa4a14286a25e3a275d7a122c23dc3c107a636a") > 74000000000000000

Fungerer som en charme.

Tillykke! Du:

  • lærte forskellen mellem Ether og Wei og hvordan man konverterer dem
  • indsendte din første transaktion på tværs af det globale Ethereum testnetværk, Rinkeby

Du kan fortsætte med at udvide dine blockchain-færdigheder ved at opbygge en fra bunden i Go! "