Я пытаюсь реализовать модель POE на основе блокчейна Ethereum. По сути, я получаю хэш sha-256 из документа, затем отправляю транзакцию 0 эфира себе и добавляю хэш документа в поле «Данные». Транзакция проверяется, и я вижу ее: https://ropsten.etherscan.io/tx/0x1f4d3136b16de5ca56e04edfbb5139e902d624a200846374f7cba8b598f6dd82 (в настоящее время я делаю это в тестовой сети)
Однако мои входные данные были 15e2b0d3c3 ..... а в квитанции данные 0x53369b73 15e2b0 ...... Все хорошо, только вот я не понимаю, зачем вставлены эти 8 цифр, что они обозначают? И для чего этот 0x впереди всего?
Если бы кто-то мог объяснить это простыми словами, я был бы очень благодарен.
Просто 0x
указывает, что данные в шестнадцатеричном формате. Это просто соглашение о представлении, а не часть данных.
Часть 53369b73
интереснее. Это похоже на сигнатуру вызова функции в Ethereum ABI . Когда вы создали транзакцию, похоже, что вы вызвали метод контракта. «Подпись» этого метода всегда формирует первые четыре байта данных вызова в соответствии со спецификацией ABI — именно так контракт может определить, какой из его методов вы вызываете. (Если вы предоставите больше информации о том, как вы создали транзакцию, я, вероятно, смогу расширить это.)
Вы можете отправлять данные как транзакцию без вызова метода. Например web3.js
, вы можете использовать sendTransaction
и точно указать, какие данные вы хотите отправить, используя data
параметр. Но если вы работаете с контрактами, написанными в Solidity, вы, вероятно, не захотите делать это напрямую.
ЭфирПол
Бенджаминион
ЭфирПол
Бенджаминион
ЭфирПол
Бенджаминион