TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.49K subscribers
Post #514 301
Как создать подписанное сообщение?

Я еще не так хорошо знаком с подписанными сообщениями вне сети (на английском off-chain signed message), но пару слов сказать о них стоит.

Подобные сообщения используются для подтверждения владельца, платежа, авторизации и т.д. Вся фишка в том, что вы создаете такое сообщение вне сети Эфира и можете позже отправить его. Или переслать другому пользователю для исполнения, типа как мета-транзакция.

По сути, в задаче требовалось создать сообщение с текстом содержащим мое имя и подписать его адресом кошелька, с которого была проведена транзакция-решение для контракта из предыдущего поста.

Как я это сделал?

Для начала создать в Ремиксе небольшой контракт с двумя функциями, которые позволяют зашифровать мое сообщение с именем.

function getHash(string memory str) public pure returns (bytes32) {
  return keccak256(abi.encodePacked(str));
}

function getEthSignedHash(bytes32 _messageHash) public pure returns (bytes32) {
  return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _messageHash));
}  

Затем получил хеш своего имени через getHash(), а также конечный хеш в getEthSignedHash().

После этого нужно зайти в браузер, где у вас установлен Метамаск, с которого деплоили контракт и проводили транзакцию, в моем случае Хром.

Далее нажимаем f12 или правую кнопку мыши, выбирая Посмотреть код. Откроется консоль Хрома. Переходим на вкладку Console.

Прямо во вкладке ставим курсор и прописываем:

hash = "вставляем наш хеш из функции getEthSignedHash()" 

Это сохранит в переменную наш хеш. Далее прописываем эту строку:

ethereum.enable().then(console.log)

Откроется Метамаск и нужно будет подтвердить действие.

В консоли отобразится ваш адрес кошелька. Сохраните его в переменную account, как сделали это с hash.

Затем прописываем эту строку:

ethereum.request({method: “personal_sign”, params: [account, hash]}).then(console.log)

Снова появится окошко Метамаска с предложением о подписании сообщения. Подписываете его, нажимая sign.

В консоли отобразится хеш вашего подписанного сообщения. Это то, что нам нужно.

Теперь этот хеш можно переслать другому человеку, подтверждая, что кошелек действительно принадлежит нам.

Надеюсь, эта информация была вам полезна.

#sign #message #metamask
  • 👍 1
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →