Cryptography

如何從 ecrecover 獲取零地址?

  • October 1, 2020

我對如何工作有一個公平的理解ecrecover,但我不知道如何強制執行一個將確定性地返回0x0地址的參數集。我在契約測試中需要這個。

這甚至可能嗎?

我偶然發現了這個執行緒,然後我發現了這個文件,現在我明白設置v為除 27 或 28 之外的任何(正數?)數字將確定性地返回0x0為原始簽名者地址。

自己測試一下:

function getSignerZero(bytes32 msgHash, bytes32 r, bytes32 s) public returns (address _signer) {
   uint8 wrongV = 17; // should normally be 27 or 28
   return ecrecover(msgHash, wrongV, r, s);
}

另外,如果您使用的是彙編,請注意staticcall:說返回的值是 0x0 實際上是不正確的。發生的情況是預編譯永遠不會返回一個新值,所以你的程序只會指向它在呼叫之前指向的相同值。

引用自:https://ethereum.stackexchange.com/questions/69328