Solidity

驗證乙太坊中的模冪運算

  • June 7, 2019

我有 Alice,他應該在鏈下進行一些加密操作。然後智能聯繫人必須通過執行模冪運算來驗證相等性。我附上了鏈下和鏈上操作的圖像。是否有任何庫可以驗證圖像中的最後一個相等性。我試著在這裡寫數學,但不允許寫數學方程。

在此處輸入圖像描述

可以使用預編譯在乙太坊上計算模冪,該預編譯包含在地址 0x05 處的拜占庭分叉(參見EIP-198 )以來的所有客戶端實現中。可以使用彙編程式碼從 Solidity 智能合約呼叫預編譯。

我找不到呼叫模冪預編譯的適當智能合約,但作為範例,可以使用以下程式碼呼叫 ecmul(地址 0x07):

 function ecmul(uint256 x, uint256 y, uint256 scalar) public constant returns(uint256[2] p) {
   // With a public key (x, y), this computes p = scalar * (x, y).
   uint256[3] memory input;
   input[0] = bx;
   input[1] = by;
   input[2] = scalar;
   assembly {
     // call ecmul precompile
     if iszero(call(not(0), 0x07, 0, input, 0x60, p, 0x40)) {
       revert(0, 0)
     }
   }
 }

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