在solidity合约代码中通过ecrecover获取签名者地址的代码块在以太坊上运行良好,但在TRON中它返回错误的地址我的合约端代码是
function validate(string memory strTest,uint8 v, bytes32 r, bytes32 s) public view returns(address){
bytes32 prefixedHash = keccak256(strTest);
return ecrecover(keccak256(prefixedHash),v,r,s);
// return ecrecover(prefixedHash,v,r,s):
}
dapp 端代码是
msg = tronWeb.sha3("this is test string");
var signature = await tronWeb.trx.sign(msg);
var r=signature.substr(0,66);
var s= "0x" + signature.substr(66,64);
var v="0x" + signature.substr(signature.length-2);
retValue = await thisContractInstance.validate("this is test string",v,r,s).call();
但在这两种情况下(一种情况在合同端代码中注释)在 TRON shasta 网络中得到错误的签名者地址