Как да прехвърляте средства по мрежата Ethereum с помощта на GETH CLI

В предишната ми статия научихте как да настроите напълно синхронизиран блокчейн възел за 10 минути. Сега е време да научите как да извършвате транзакция в мрежата на Ethereum с помощта на GETH CLI.

За да бъдете на една и съща страница, първо преминете през всички стъпки от предишната статия.

Свършен? Перфектно.

На този етап знаете:

  • как да стартирам напълно синхронизиран блокчейн възел Ethereum
  • как да прикачите GETH console
  • как да поискате салдо по сметка в Ethereum
geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc 
eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
> 7500000000000000000

Наистина, може би си мислите, но изчакайте секунда Лукас ... защо 7.5ETHсе показва като 7500000000000000000в Geth console?

Етер срещу Уей

Виртуалната машина Ethereum не поддържа десетични знаци или плувки. Очевидно изчисленията във финансите са по-лесни за целите числа.

Следователно, за да може да изпрати част от 1 ETH, фондацията Ethereum реши да създаде своя собствена метрична система, където най-малката единица ще бъде 1 Wei, а 1 Ether е 1e18 Wei.

Но не се притеснявайте, има инструменти, които могат да улеснят живота ви. Например горещо препоръчвам онлайн конвертора Ether to Wei:

//etherconverter.online

За да изпратите Ether на стойност $ 15, където 1 ETH == $ 200 (добро старо време ...), бихте направили транзакция, изпращаща 0.0740 ETH, което би било и трябва да бъде представено във Wei като 74000000000000000.

Онлайн конвертор на етер към Wei:

Общ преглед на метричната система Ethereum:

Практиката прави майсторство. Нека всъщност изпратим 74000000000000000 Wei ($ 15) към друг акаунт.

Изпращане на Ether към друг акаунт с помощта на GETH CLI

В един терминал не забравяйте да стартирате напълно синхронизиран блокчейн възел:

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

В друг терминал ще създадем втория си акаунт в Ethereum, точно както в Част 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

Сега, нека прикачим конзолата Geth към текущо изпълняващия се блокчейн възел, както направихме в предишната статия, за да прехвърлим $ 15 към този новосъздаден акаунт чрез изпълнение на eth.sendTransactionкомандата.

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

Грешка: необходимо е удостоверяване: парола или отключване.

Трябва да получите грешка. Това е така, защото изпращането на Ether е „транзакция“ и транзакцията променя състоянието, струва газ и харчи средства. Което означава, че трябва да бъде подписан с нашия Частен ключ, който се съхранява в Keystore. За да дешифрираме ключа, трябва да предоставим парола или с други думи да отключим акаунта.

Изпълнете следната команда, за да отключите акаунта си за следващите 60-те, и изпълнете командата sendTransaction още веднъж.

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

Можехме също да предадем паролата като втори аргумент вместо null. Но този начин е по-безопасен, тъй като паролата ви е само в буфер и не се съхранява във всеки дневник или се вижда на екрана.

Този път командата успя и бе върната разписка за хеширане на транзакция! О да!

Тъй като сме свързани с мрежата на Rinkeby, можем да се възползваме от Rinkeby GUI Explorer, за да проверим състоянието на тази транзакция, изразходвания газ, цената на газа и т.н.

  1. Отворете Explorer
  2. Поставете хеша на разписката за транзакция в лентата за търсене
  3. Готово, похарчихме 21 000 бензин (стандарт за изпращане на средства) и транзакцията успя!

Вече можете да правите заявки за салдата на двата акаунта и да видите промененото състояние:

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

Работи като чар.

Честито! Ти:

  • научих разликата между Ether и Wei и как да ги конвертирам
  • изпрати първата си транзакция в глобалната тестова мрежа на Ethereum, Rinkeby

You can continue expanding your blockchain skills by building one from scratch in Go!"