Читаем Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство полностью

Функция web3.eth.getBalance возвращает достаточно большое число. Вообще при работе с API фреймворков Ethereum мы часто будем иметь дело с очень большими числами. Когда вы будете разрабатывать свое децентрализованное приложение (DApp), это нужно будет учитывать.

Для того чтобы узнать баланс нужного вам аккаунта в Ether, используйте функцию fromWei:

> web3.fromWei(eth.getBalance("0x4f744742ac711fd111c7a983176db1d48d29f413"))

23110

При этом функции eth.getBalance нужно передать адрес проверяемого аккаунта.

<p>Перевод средств с одного аккаунта на другой</p>

Если подобным образом проверить баланс для аккаунтов, созданных нами дополнительно, то окажется, что сразу после создания он равен нулю, например:

> web3.fromWei( eth.getBalance("0xf212d0180b331a88bd3cafbd77bbd0d56398ae00"))

0

Это неудивительно, ведь мы еще не переводили средства на эти аккаунты. Но можно перевести деньги с основного аккаунта нашей приватной сети, которую мы создали на втором уроке. Для нее был запущен майнинг, поэтому там уже должны быть средства.

<p>Метод eth.sendTransaction</p>

Давайте посмотрим, какие у нас есть аккаунты и какой на них баланс:

> web3.eth.accounts

["0x4f744742ac711fd111c7a983176db1d48d29f413", "0xf212d0180b331a88bd3cafbd77bbd0d56398ae00", "0x346cc69a63f9b84c45f17e337574c0150ab6bc03", "0xae7bb3649a5c597d44f812b4a636f3cc21ee98e1"]

> web3.fromWei( eth.getBalance("0x4f744742ac711fd111c7a983176db1d48d29f413"))

23135

> web3.fromWei( eth.getBalance("0xf212d0180b331a88bd3cafbd77bbd0d56398ae00"))

0

> web3.fromWei( eth.getBalance("0x346cc69a63f9b84c45f17e337574c0150ab6bc03"))

0

> web3.fromWei( eth.getBalance("0xae7bb3649a5c597d44f812b4a636f3cc21ee98e1"))

0

Как видите, на первом из этих аккаунтов средства есть, а на остальных – ничего нет.

Давайте переведем часть средств, а именно 0.05 Ether, с первого их этих аккаунтов на другой, где средств нет. Воспользуемся для этого методом eth.sendTransaction:

> eth.sendTransaction({from:"0x4f744742ac711fd111c7a983176db1d48d29f413", to:"0xf212d0180b331a88bd3cafbd77bbd0d56398ae00", value: web3.toWei(0.05, "ether")})

При попытке выполнить эту операцию вы, однако, получите сообщение об ошибке:

Error: authentication needed: password or unlock

   at web3.js:3143:20

   at web3.js:6347:15

   at web3.js:5081:36

   at :1:1

Перед выполнением такой операции необходимо разблокировать исходный аккаунт, с которого отправляются средства. Для разблокировки введите такую команду:

> web3.personal.unlockAccount("0x4f744742ac711fd111c7a983176db1d48d29f413", "*********")

true

Вместо звездочек укажите пароль, с которым данный аккаунт создавался. Если аккаунт и пароль были указаны правильно, на консоли вы увидите true.

Теперь повторите вызов функции eth.sendTransaction:

> eth.sendTransaction({from:"0x4f744742ac711fd111c7a983176db1d48d29f413", to:"0xf212d0180b331a88bd3cafbd77bbd0d56398ae00", value: web3.toWei(0.05, "ether")})

"0xb6d13a5e915c3af1feabad7caec7b45348146695973b32285df287639717e916"

На этот раз функция выполнится успешно и вернет нам так называемый хеш транзакции (Transaction Hash) со значением:

0xb6d13a5e915c3af1feabad7caec7b45348146695973b32285df287639717e916

Чтобы перевод средств произошел успешно, эта транзакция должна быть выполнена. Кроме того, нужно дождаться, когда в вашу тестовую сеть будет добавлен новый блок. После этого средства появятся на целевом счету.

Посмотрите на консоль, где мы запустили наш узел. Видим, что там есть сообщение о запуске транзакции с указанным выше хешем, а также о том, что был добавлен новый блок:

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии