Почему в протоколе Ethereum нет четкого индикатора отмененной транзакции?
Здесь есть эвристика , а также обходной путь с использованием Geth . Но, вероятно, есть способы, которыми протокол может предоставить четкий индикатор. Например, может ли квитанция о транзакции иметь логическое свойство outofgas?
Что может сделать протокол, чтобы обеспечить индикатор Out of Gas, и почему ничего не реализовано?
Большая часть протокола (и, в частности, квитанция о транзакции) имеет решающее значение для достижения консенсуса. Объем обрабатываемой информации должен быть максимально ограниченным и стабильным. Сообщение об ошибке не соответствует этим требованиям.
С другой стороны, реализации могут легко всплывать в виде всплывающей подсказки. По крайней мере, так делают и Ethereumj, и Geth. В качестве примера см. свойство «execution_error» здесь:
debug.traceTransaction
новый ответ на ethereum.stackexchange.com/questions/6007/… ?Обновлен протокол в блоке 4370000 (Византия) так, что status
в квитанции добавлен индикатор.
eth.getTransactionReceipt(transactionHash)
вернет status
поле, которое имеет значение, 0
когда транзакция не удалась и 1
когда транзакция прошла успешно.
Вот пример, показывающий status
поле:
{ blockHash: '0xb1fcff633029ee18ab6482b58ff8b6e95dd7c82a954c852157152a7a6d32785e',
blockNumber: 4370000,
contractAddress: null,
cumulativeGasUsed: 21000,
gasUsed: 21000,
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
root: null,
status: 1, // **** HERE IS THE STATUS FIELD *****
transactionHash: '0x1421a887a02301ae127bf2cd4c006116053c9dc4a255e69ea403a2d77c346cf5',
transactionIndex: 0 }
(Блоки до 4370000 будут иметь status
нулевое значение.)
Подробнее здесь .
пользователь3407
Роланд Кофлер
Джузеппе Бертоне