200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Python Tron波场 离线交易签名

Python Tron波场 离线交易签名

时间:2023-10-29 10:07:38

相关推荐

Python Tron波场 离线交易签名

Python TRON交易离线签名

本次演示使用http json 格式的数据进行签名

⚠️此开发包 需要用到动态链接库 需要下载的小伙伴 可以去github 下载

签名说明

步骤

取交易的rawdata,转成byte[]格式。对rawdata进行sha256运算。用交易每个合约中地址对应的私钥(现在一般就是一个合约,一个私钥),对sha256的结果进行签名。把签名结果添加到交易中。

算法

ECDSA算法,SECP256K。

Python代码

from ctypes import cdll, c_char_pimport os;class Native(object):# 静态变量_instanc = None_flag = Falsedef __new__(cls, *args, **kwargs):if cls._instanc is None:cls._instanc = super().__new__(cls)return cls._instancdef __init__(self):if not Native._flag:self.lib = cdll.LoadLibrary(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))+"/library/libsigntron-amd64-linux.so")self.lib.tron_transaction_sign_trc10.restype = c_char_pself.lib.tron_transaction_sign_trc20.restype = c_char_pself.lib.tron_easy_transfer.restype = c_char_pself.lib.tron_easy_transfer_usdt.restype = c_char_pNative._flag = Truedef tron_easy_transfer(self, key, to_address,amount):to_address_l = c_char_p(bytes(to_address, 'utf-8'))key_l = c_char_p(bytes(key, 'utf-8'))return self.lib.tron_easy_transfer( key_l,to_address_l,amount).decode('UTF-8')def tron_easy_transfer_usdt(self,key, to_address,amount):to_address_l = c_char_p(bytes(to_address, 'utf-8'))key_l = c_char_p(bytes(key, 'utf-8'))return self.lib.tron_easy_transfer_usdt( key_l,to_address_l,amount).decode('UTF-8')def tron_transaction_sign_trc10(self, inp, key):in_l = c_char_p(bytes(inp, 'utf-8'))key_l = c_char_p(bytes(key, 'utf-8'))return self.lib.tron_transaction_sign_trc10(in_l, key_l).decode('UTF-8')def tron_transaction_sign_trc20(self,inp,key):in_l = c_char_p(bytes(inp, 'utf-8'))key_l = c_char_p(bytes(key, 'utf-8'))return self.lib.tron_transaction_sign_trc20(in_l, key_l).decode('UTF-8')if __name__ == '__main__':print()key="2d2c8062fa668ea168172d0926f391c033b4c3699c3b79afed028b027e05bb31"json='{"result":{"result":true},"transaction":{"visible":true,"txID":"6b501aaae1d82a3d30fd1c5b50305bb0e24bd92d3589cf99ed458371781ceca9","raw_data":{"contract":[{"parameter":{"value":{"data":"a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd6500","owner_address":"TJigfkHs1QrbZbKwWd7CY7HSUKLX71FFFF","contract_address":"TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs"},"type_url":"/protocol.TriggerSmartContract"},"type":"TriggerSmartContract"}],"ref_block_bytes":"a2f1","ref_block_hash":"d22237be586463e3","expiration":1667042817000,"fee_limit":1000000000,"timestamp":1667042759371},"raw_data_hex":"0a02a2f12208d22237be586463e340e8e7fa9bc2305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a15415ff9fce781452ce0a031472d8a58fae6c8cc70b612154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd650070cba5f79bc23090018094ebdc03"}}'print(Native().tron_transaction_sign_trc20(json,key))

输入的JSON 数据

{"result": {"result": true},"transaction": {"visible": true,"txID": "6b501aaae1d82a3d30fd1c5b50305bb0e24bd92d3589cf99ed458371781ceca9","raw_data": {"contract": [{"parameter": {"value": {"data": "a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd6500","owner_address": "TJigfkHs1QrbZbKwWd7CY7HSUKLX71FFFF","contract_address": "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs"},"type_url": "/protocol.TriggerSmartContract"},"type": "TriggerSmartContract"}],"ref_block_bytes": "a2f1","ref_block_hash": "d22237be586463e3","expiration": 1667042817000,"fee_limit": 1000000000,"timestamp": 1667042759371},"raw_data_hex": "0a02a2f12208d22237be586463e340e8e7fa9bc2305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a15415ff9fce781452ce0a031472d8a58fae6c8cc70b612154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd650070cba5f79bc23090018094ebdc03"}}

输出结果

0ad4010a02a2f12208d22237be586463e340e8e7fa9bc2305aae01081f12a9010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412740a15415ff9fce781452ce0a031472d8a58fae6c8cc70b612154142a1e39aefa49290f2b3f9ed688d7cecf86cd6e02244a9059cbb0000000000000000000000003c2713a6d04e74b1fe0f9a370c7e96aad21268dd000000000000000000000000000000000000000000000000000000001dcd650070cba5f79bc23090018094ebdc03124108c3717d52ad49f2694ae74a411d08e9bbc3efc86e326d85ccdb1946cc12aaff269f476ce5fb8e29ae2a32fc4c7b6a1f04319c2ef1cbadfa59b724c10a4e9efe00

github telegram @shina_jin1

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。