Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Шрифт:
Теперь,
Функции eth.sendTransaction мы передали в параметрах from и to адреса исходного и целевого аккаунта соответственно. В параметре value мы задали количество переводимых средств в единицах Wei. Так как нам удобнее указывать размер средств в более крупных единицах Ether, для перевода в Wei мы воспользовались функцией web3.toWei.
Заметим, что в реальной сети вместе с транзакцией нам нужно указать средства, которые пойдут на обработку этой транзакции (так называемый газ). Для этого команде eth.sendTransaction нужно задать параметры gas (количество газа, заданное для выполнения операции) и gasPrice (стоимость газа в Wei):
Просмотр состояния транзакции
Зная хеш транзакции, вы можете получить о ней определенную информацию. Это можно сделать при помощи метода web3.eth.getTransaction, передав ему в качестве параметра строку хеша транзакции.
В ответ вы получите объект следующего вида:
Поля объекта состояния транзакции перечислены в табл. 4.3.
Таблица 4.3. Состояние транзакции
Как видите, здесь есть адреса отправителя from и получателя to, а также объем переведенных средств в Wei.
Когда вы запускаете транзакцию на выполнение, она выполняется не сразу. Вначале транзакция находится в состоянии ожидания, пока майнеры не создадут для нее новый блок. Анализируя поля номера блока blockNumber, в котором размещается транзакция, можно определить, была ли запущена транзакция или еще нет.
Поля v, r, s содержат значения для подписи транзакции. Их содержимое можно использовать для получения публичного ключа аккаунта. Способ их использования с этой целью обсуждается здесь: https://ethereum.stackexchange.com/questions/13778/get-public-key-of-any-ethereum-account.
Содержимое полей gasPrice и gas имеет отношение к стоимости транзакции. Пока мы работаем с тестовой сетью, об этом можно не беспокоиться. Если кратко, то gasPrice содержит так называемую стоимость газа, который тратится на выполнение транзакции, а поле gas – количество газа, которое выделил отправитель для выполнения транзакции.
Вы можете думать о газе, как о бензине, который тратится на выполнение транзакций. Стоимость этого бензина может меняться, а на разные транзакции этого бензина тратится разное количество.
Квитанция транзакции
Когда транзакция выполнилась (о чем можно узнать при помощи только что рассмотренного метода web3.eth.getTransaction), вы можете получить так называемую квитанцию об ее выполнении. Для этого предназначен метод web3.eth.getTransactionReceipt.
Передайте этому методу в качестве параметра хеш завершенной транзакции, и вы получите квитанцию в виде объекта: