Рубрики
Без рубрики

Ethereum Детали транзакции для людей

Получить эти детали транзакции Ethereum, которые имеют смысл для людей

Автор оригинала: Mandar Vaze.

При работе над одним из моих проектов было задано «Как мы гарантируем, что транзакция действительно была записана на блокчане»

Хотя мы можем (и сделали) хранить хеш транзакции, возвращенные функцией вызова в базе данных, txn_hash Один не пользуется.

например «Официальный» способ получения деталей транзакции (из Txn_Hash ) возвращает что-то вроде следующее:

web3.eth.getTransaction('0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b§234')
.then(console.log); 
> { 
   "hash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",  
   "nonce":2,
   "blockHash":"0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46", 
   "blockNumber": 3,
   "transactionIndex": 0, 
   "from": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", 
   "to": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", 
   "value": '123450000000000000', 
   "gas": 314159, 
   "gasPrice": '2000000000000', 
   "input": "0x57cb2fc4"
}

Это на самом деле не значит много – даже для разработчиков. Конечно от и к Адреса предоставляют некоторые полезные данные, но мы не знаем, какую «операцию» выполнено и с какими данными. (Данные в поле «| ввод поле, показанное выше, но не имеет смысла »AS-IS")

Что, если вы могли видеть что-то вроде следующего, вместо этого?

{ name: 'mintToken', 
  types: ['address', 'uint256'], 
  inputs: ['5bb4b21e60d0033a1b86b83e4a1f8307ab2d01f9', ] 
}

Вы получаете функцию Имя , а не адрес, и параметры передавались функции – что может быть «несколько» полезным, в зависимости от типов параметров.

например В приведенном выше образце первый входной параметр является адресом, а второй – число.

Может быть легко догадаться (от имени функции), что мы мкаем 0x64 I.E. 100 токенов для данного адреса.

Разве это не намного лучше?

Получение такого «читаемого человека» производится возможным благодаря Ethereum-input-data-decoder Библиотека – которая делает тяжелая атлетика

Я добавил некоторую функциональность обертки, чтобы сделать ее как можно более общей без необходимости делать изменения кода.

Вы можете пройти txn_hash и путь к файлу JSON, созданный Truffle Compile как аргументы к сценарию.

Таким образом, это работает для любой договор.

Вы можете увидеть исходный код здесь

Если у вас есть какие-либо вопросы (о коде), не стесняйтесь подать проблему GitHub (или спросите здесь в комментариях)