<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 數學和加密函數(Mathematical and Cryptographic Functions) `asser(bool condition)`: 如果條件不滿足,拋出異常。 `addmod(uint x, uint y, uint k) returns (uint)`: 計算`(x + y) % k`。加法支持任意的精度。但不超過(wrap around?)`2**256`。 `mulmod(uint x, uint y, uint k) returns (uint)`: 計算`(x * y) % k`。乘法支持任意精度,但不超過(wrap around?)`2**256`。 `keccak256(...) returns (bytes32)`: 使用以太坊的(Keccak-256)計算HASH值。緊密打包。 `sha3(...) returns (bytes32)`: 等同于`keccak256()`。緊密打包。 `sha256(...) returns (bytes32)`: 使用SHA-256計算HASH值。緊密打包。 `ripemd160(...) returns (bytes20)`: 使用RIPEMD-160計算HASH值。緊密打包。 `ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address)`: 通過簽名信息恢復非對稱加密算法公匙地址。如果出錯會返回0,附錄提供了一個例子. `revert()`: 取消執行,并回撤狀態變化。 需要注意的是參數是“緊密打包(tightly packed)”的,意思是說參數不會補位,就直接連接在一起的。下面來看一個例子: ``` keccak256("ab", "c") keccak256("abc") //hex keccak256(0x616263) keccak256(6382179) //ascii keccak256(97, 98, 99) ``` 上述例子中,三種表達方式都是一致的。 如果需要補位,需要明確的類型轉換,如`keccak256("\x00\x12")`等同于`keccak256(uint16(0x12))` 需要注意的是字面量會用,盡可能小的空間來存儲它們。比如,`keccak256(0) == keccak256(uint8(0))`,`keccak256(0x12345678) == keccak256(uint32(0x12345678))` 在`私鏈(private blockchain)`上運行`sha256`,`ripemd160`或`ecrecover`可能會出現`Out-Of-Gas`報錯。因為它們實現了一種預編譯的機制,但合約要在收到第一個消息后才會存在。向一個不存在的合約發送消息,非常昂貴,所以才會導致`Out-Of-Gas`的問題。一種解決辦法是每個在你真正使用它們前,先發送`1 wei`到這些合約上來完成初始化。在官方和測試鏈上沒有這個問題。 使用ecrecover實現簽名檢驗的例子。[http://me.tryblockchain.org/web3js-sign-ecrecover-decode.html](http://me.tryblockchain.org/web3js-sign-ecrecover-decode.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看