Solidity
驗證乙太坊中的模冪運算
我有 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) } } }