Поля 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.
Передайте этому методу в качестве параметра хеш завершенной транзакции, и вы получите квитанцию в виде объекта:
> web3.eth.getTransactionReceipt("0xb6d13a5e915c3af1feabad7caec7b45348146695973b32285df287639717e916")
{
blockHash: "0x3c9761fefa52a0bc563733d87163828c5fe1316d78ca89be8af18d9c818b0eea",
blockNumber: 4643,
contractAddress: null,
cumulativeGasUsed: 21000,
from: "0x4f744742ac711fd111c7a983176db1d48d29f413",
gasUsed: 21000,
logs: [],
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
root: "0xa5cdcd909d837e937189f4cffc52840111f4430bf871f07094eaea96c47d682d",
to: "0xf212d0180b331a88bd3cafbd77bbd0d56398ae00",
transactionHash: "0xb6d13a5e915c3af1feabad7caec7b45348146695973b32285df287639717e916",
transactionIndex: 0
}
Поля объекта квитанции перечислены в табл. 4.4.
Таблица 4.4. Квитанция выполненной транзакции
Анализируя квитанцию, вы можете узнать номер блока, в котором размещена транзакция blockNumber, а также индекс позиции размещения транзакции в блоке transactionIndex.
При помощи полей cumulativeGasUsed и gasUsed вы сможете понять, сколько газа ушло на выполнение транзакции. При запуске транзакции вы можете выделить определенное количество газа, но если газа будет больше, израсходуется только часть ваших средств. В реальной сети Ethereum, если газа будет выделено слишком мало, транзакция будет очень долго находиться в состоянии ожидания или не будет выполнена вовсе.
Также обратите внимание на поле contractAddress. Когда мы займемся публикацией смарт-контрактов, нам потребуется адрес размещенного смарт-контракта из этого поля.
Итоги урока
На четвертом уроке вы научились управлять аккаунтами, а также переводить средства с одного аккаунта на другой. Попутно вы изучили криптовалютные единицы, которые применяются в сети Ethereum.
Вы узнали, что созданные транзакции сначала попадают в состояние ожидания и находятся в нем до тех пор, пока в блокчейн не будет добавлен новый блок. Проверку состояния транзакции можно выполнить методом web3.eth.getTransaction.