Проблема: ECDSA проверяет адрес подписавшего в цепочке блоков TRON - не проверен - PullRequest
0 голосов
/ 21 апреля 2020

Я запутался в этом, нужен совет.

В чем может быть проблема при получении адреса подписавшего?

Контракт:

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);
   });
})

Не могли бы вы посоветовать мне, где я не прав, получив адрес.

...