У моїй попередній статті ви дізналися, як налаштувати повністю синхронізований вузол блокчейну за 10 хвилин. Настав час навчитися виконувати транзакції в мережі Ethereum за допомогою інтерфейсу команди GETH.
Щоб бути на одній сторінці, спочатку пройдіть усі кроки з попередньої статті.
Готово? Ідеально
На даний момент ви знаєте:
- як запустити повністю синхронізований вузол блокчейну 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 у Wei:
//etherconverter.online
Для того, щоб надіслати ефір вартістю 15 доларів, де 1 ETH == 200 доларів (старі добрі часи ...), ви зробите транзакцію, що відправляє 0,0740 ETH, яка буде і повинна бути представлена у Вей як 74000000000000000.
Онлайн конвертер ефіру в Вей:

Огляд метричної системи 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"})
Помилка: потрібна автентифікація: пароль або розблокування.
Ви повинні отримати повідомлення про помилку. Це пов’язано з тим, що відправлення ефіру є «транзакцією», і транзакція змінює стан, коштує газ та витрачає кошти. Це означає, що він повинен бути підписаний нашим приватним ключем, який зберігається у сховищі ключів. Для того, щоб розшифрувати ключ, ми повинні надати пароль, або іншими словами, розблокувати обліковий запис.
Виконайте наступну команду, щоб розблокувати свій акаунт протягом наступних 60-х років, і виконайте команду sendTransaction ще раз.
web3.personal.unlockAccount(web3.personal.listAccounts[0], null, 60)
eth.sendTransaction({from: "0xceee57f2b700c2f37d1476a7974965e149fce2d4", to: "0x7aa4a14286a25e3a275d7a122c23dc3c107a636a", value: "74000000000000000"})
Ми також могли передати пароль як другий аргумент замість null. Але цей спосіб безпечніший, оскільки ваш пароль знаходиться лише в буфері, а не зберігається в жодному журналі та не відображається на екрані.

Цього разу команда вдалася, і повернено хеш-квитанцію транзакції! О так!
Оскільки ми підключені до мережі Rinkeby, ми можемо скористатися переглядачем графічного інтерфейсу Rinkeby, щоб перевірити стан цієї транзакції, витрачений газ, ціну на газ тощо.
- Відкрийте провідник
- Вставте хеш квитанції транзакції в рядок пошуку
- Готово, ми витратили 21000 газу (стандарт для пересилання коштів), і транзакція вдалася!

Тепер ви можете запитати залишки обох рахунків і побачити змінений стан:
eth.getBalance("0xceee57f2b700c2f37d1476a7974965e149fce2d4") > 7425979000000000000
eth.getBalance("0x7aa4a14286a25e3a275d7a122c23dc3c107a636a") > 74000000000000000
Працює як шарм.
Вітаємо! Ви:
- дізнався різницю між Ефіром та Вей та як їх перетворити
- подав свою першу транзакцію через глобальну тестову мережу Ethereum, Rinkeby
You can continue expanding your blockchain skills by building one from scratch in Go!"