Когда кто-то просто отправляет ETH с одного адреса на другой и предполагает, что этот человек не включает в транзакцию специальное сообщение, то какое именно сообщение, отправляемое в сети, используется для подписи транзакции?
Читая основы того, как работает подпись сообщений, я обнаружил, что используется следующий метод и формула:
sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))
... но если подписывающая сторона не включает сообщение и отправляет только ETH или, возможно, просто использует MetaMask для отправки средств, что именно становится сообщением?
(Примечание: выполнение декодирования транзакции показывает, что поле «данные» просто «0x», но не уверен, связано ли это поле данных с самим сообщением или нет).
Все транзакции Ethereum содержат data
поле. Это поле может быть
Пустой
Полезная нагрузка для вызова функции смарт-контракта
Любое сообщение пользователя
Полезная нагрузка в поле данных является отдельной для подписи сообщения. Подписанное сообщение может быть передано вне сети, например электронная почта или копипаста, и не обязательно должно быть частью транзакции.
Фулько Принссен
Микко Отамаа