Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Шрифт:
Как вы увидите далее, единица Wei удобнее, чем Ether, когда речь идет об оплате транзакций, не отнимающих много ресурсов.
В таблице 4.2. мы привели полный список денежных единиц Ethereum и их ценность в единицах Wei.
Таблица 4.2. Денежные единицы Ethereum
В интернете можно найти сайты с конвертами криптовалют Ethereum, вот один из них:Здесь же показывается
Определяем текущий баланс наших аккаунтов
Выше мы добавили в нашу приватную сеть несколько аккаунтов. Полный список аккаунтов всегда можно посмотреть в консоли Geth при помощи команды web3.eth.accounts.
С помощью функции web3.eth.getBalance мы можем посмотреть баланс аккаунта в единицах Wei. Адрес аккаунта нужно передать функции в качестве параметра:
Функция web3.eth.getBalance возвращает достаточно большое число. Вообще при работе с API фреймворков Ethereum мы часто будем иметь дело с очень большими числами. Когда вы будете разрабатывать свое децентрализованное приложение (DApp), это нужно будет учитывать.
Для того чтобы узнать баланс нужного вам аккаунта в Ether, используйте функцию fromWei:
При этом функции eth.getBalance нужно передать адрес проверяемого аккаунта.
Перевод средств с одного аккаунта на другой
Если подобным образом проверить баланс для аккаунтов, созданных нами дополнительно, то окажется, что сразу после создания он равен нулю, например:
Это неудивительно, ведь мы еще не переводили средства на эти аккаунты. Но можно перевести деньги с основного аккаунта нашей приватной сети, которую мы создали на втором уроке. Для нее был запущен майнинг, поэтому там уже должны быть средства.
Метод eth.sendTransaction
Давайте посмотрим, какие у нас есть аккаунты и какой на них баланс:
Как
Давайте переведем часть средств, а именно 0.05 Ether, с первого их этих аккаунтов на другой, где средств нет. Воспользуемся для этого методом eth.sendTransaction:
При попытке выполнить эту операцию вы, однако, получите сообщение об ошибке:
Перед выполнением такой операции необходимо разблокировать исходный аккаунт, с которого отправляются средства. Для разблокировки введите такую команду:
Вместо звездочек укажите пароль, с которым данный аккаунт создавался. Если аккаунт и пароль были указаны правильно, на консоли вы увидите true.
Теперь повторите вызов функции eth.sendTransaction:
На этот раз функция выполнится успешно и вернет нам так называемый хеш транзакции (Transaction Hash) со значением:
Чтобы перевод средств произошел успешно, эта транзакция должна быть выполнена. Кроме того, нужно дождаться, когда в вашу тестовую сеть будет добавлен новый блок. После этого средства появятся на целевом счету.
Посмотрите на консоль, где мы запустили наш узел. Видим, что там есть сообщение о запуске транзакции с указанным выше хешем, а также о том, что был добавлен новый блок: