W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
addmod(uint x, uint y, uint k) returns (uint)
計算在哪里以任意精度執(zhí)行加法并且不會在 (x + y) % k
2**256
k != 0
mulmod(uint x, uint y, uint k) returns (uint)
計算在哪里以任意精度執(zhí)行乘法并且不會在 處回繞。斷言從版本 0.5.0 開始。(x * y) % k
2**256
k != 0
keccak256(bytes memory) returns (bytes32)
計算輸入的 Keccak-256 哈希
筆記
曾經(jīng)有一個keccak256被調(diào)用的別名sha3,在 0.5.0 版本中被刪除。
sha256(bytes memory) returns (bytes32)
計算輸入的 SHA-256 哈希
ripemd160(bytes memory) returns (bytes20)
計算輸入的 RIPEMD-160 哈希
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address)
從橢圓曲線簽名中恢復(fù)與公鑰關(guān)聯(lián)的地址或在錯誤時返回零。函數(shù)參數(shù)對應(yīng)簽名的 ECDSA 值:
r
= 簽名的前 32 個字節(jié)
s
= 第二個 32 字節(jié)的簽名
v
= 簽名的最后 1 個字節(jié)
ecrecover
返回一個address
,而不是一個。請參閱應(yīng)付轉(zhuǎn)換地址,以防您需要將資金轉(zhuǎn)移到恢復(fù)的地址。address payable
有關(guān)更多詳細(xì)信息,請閱讀示例用法。
警告
如果您使用ecrecover,請注意可以將有效簽名轉(zhuǎn)換為不同的有效簽名,而無需知道相應(yīng)的私鑰。在 Homestead 硬分叉中,此問題已針對 _transaction_ 簽名(請參閱EIP-2)進(jìn)行了修復(fù),但 ecrecover 功能保持不變。
這通常不是問題,除非您要求簽名是唯一的或使用它們來識別項目。OpenZeppelin 有一個ECDSA 幫助程序庫,您可以將其用作包裝器而ecrecover不會出現(xiàn)此問題。
筆記
在運行或在私有區(qū)塊鏈sha256上運行時,您可能會遇到 Out-of-Gas。這是因為這些功能是作為“預(yù)編譯合約”實現(xiàn)的,并且只有在它們收到第一條消息后才真正存在(盡管它們的合約代碼是硬編碼的)。不存在的合約的消息更昂貴,因此執(zhí)行可能會遇到 Out-of-Gas 錯誤。此問題的解決方法是先將 Wei(例如 1)發(fā)送到每個合同,然后再將它們用于實際合同。這在主網(wǎng)上或測試網(wǎng)上都不是問題。ripemd160ecrecover
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: