Невозможно проверить TronLink/TronWeb.js подписанное сообщение на Python

#python #tron #tronweb #tronlink

#python #tron #tronweb #tronlink

Вопрос:

Я подписываю сообщение с помощью TronLink/TronWeb.js но не удалось проверить это в Python

Библиотека Python, которую я использую https://github.com/iexbase/tron-api-python /

Код Javascript для подписи сообщения:

 const original_message = "557e3517549cf8ed47d8b205654ea2a7"
const signedtxn = await tronWeb.trx.sign(original_message);
// result 0x862e16c28684bed7162e9a1dd34962882d887610de6c775054ffbad989baec65707b2ba898366c02e9f20730bc2daf54bb7e6d33d77c64f8930f8c9365f5993a1b
  

Код Python для проверки подписанного сообщения

 from tronapi import Tron
from hexbytes import HexBytes

tron = Tron()

class signed_message:
     # signedtxn variable in javascript
    signature = HexBytes('0x862e16c28684bed7162e9a1dd34962882d887610de6c775054ffbad989baec65707b2ba898366c02e9f20730bc2daf54bb7e6d33d77c64f8930f8c9365f5993a1b')

original_message = "557e3517549cf8ed47d8b205654ea2a7"
address = "<!-- Tron Base58 Address in TronLink/TronWeb -->"
tron.trx.verify_message(original_message, signed_message, address=address)
  

Я получаю эту ошибку в python

 ValueError: Signature does not match
  

Я могу проверить сообщение в TronWeb.js но не могу в Python

Ответ №1:

Вы можете использовать tronpy (да, я автор tronpy.)

PublicKey.verify_msg

последним байтом вашей подписи должен быть 0x01 or 0x00 , который отличается от ETH.