Cryptography
如何從 ecrecover 獲取零地址?
我對如何工作有一個公平的理解
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 實際上是不正確的。發生的情況是預編譯永遠不會返回一個新值,所以你的程序只會指向它在呼叫之前指向的相同值。