【tronLink】调用合约签名底层实现

【tronLink】调用合约签名底层实现varstr='messagedigest'//要签名的字符串constethers=window._ethers;varmessage=ethers.utils.sha256(tronWeb.toHex(str));//此处用sha256做hash,tr

大家好,欢迎来到IT知识分享网。

var str = ‘message digest’// 要签名的字符串

const ethers = window._ethers;

var message = ethers.utils.sha256(tronWeb.toHex(str));// 此处用sha256做hash,tron钱包签的东西用sha3,下方会举例sha3的使用情景

message = message.replace(/^0x/, ”);

var privateKey = ”;// 账户私钥

const value ={
toHexString: function() {
return ‘0x’ + privateKey
},
value: privateKey
}

var SigningKey = ethers.utils.SigningKey;// 注意此处要先定义class再调用

var signingKey = new SigningKey(value);

var messageBytes = [
…require(‘ethers’).utils.toUtf8Bytes(‘\x19TRON Signed Message:\n32’),// 带tron签名头
…tronWeb.utils.code.hexStr2byteArray(message)
];

var messageDigest = ethers.utils.keccak256(messageBytes); // 转hex格式

var signature = signingKey.signDigest(messageDigest);

var signatureHex = [
‘0x’,
signature.r.substring(2),
signature.s.substring(2),
Number(signature.v).toString(16)
].join(”);

console.log(‘signatureHex——‘, signatureHex);

// sha3方式做hash

let res = tronWeb.utils.abi.encodeParams([‘address’,’uint256′,’string’], [‘TQGf58avp2oHSNQ8tPn7FTKSp16RB26TBY’,’100000000′,’e733be0c-195b-4fa0-aa8d-ff4b6d34f2ba’])// 编码参数,type和value要一一对应

var message = window.web3.utils.sha3(res)

 

// tronLink签名方法(message必须是hex形式)

window.tronWeb.trx.sign(message,privateKey)

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30265.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信