Я запутался в этом, нужен совет.
В чем может быть проблема при получении адреса подписавшего?
Контракт:
pragma solidity >=0.4.21 <0.7.0;
contract Test {
function ecrecover1(uint _commit, uint8 v, bytes32 r, bytes32 s) public returns(address) {
bytes memory prefix = "\x19TRON Signed Message:\n32";
bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, _commit));
return ecrecover(prefixedHash, v, r, s);
}
}
Тестовый скрипт:
var Test = artifacts.require("./Test.sol");
contract('Test', function(accounts) {
before(async function() {
test = await Test.deployed();
});
const param = {
privKey:'Private-Key',
}
it("ecrecover1: Signed messages should return signing address", async function() {
var msg = tronWeb.sha3("1");
var msg = tronWeb.sha3(msg,{encoding:'hex'})
console.log(msg);
var signature = await tronWeb.trx.sign(msg, param.privKey);
var r= signature.substr(0,66);
var s= "0x" + signature.substr(66,64);
var v= "0x" + signature.substr(signature.length-2);
rValue = await test.ecrecover1(msg,v,r,s);
console.log(rValue);
});
})
Не могли бы вы посоветовать мне, где я не прав, получив адрес.