Skip to content

Commit d1ae359

Browse files
feat: separate Verifier (#33)
* add IVerifier * turn Verifier into template * add override * format contract codes Co-authored-by: HAOYUatHZ <[email protected]> Co-authored-by: HAOYUatHZ <[email protected]>
1 parent aeae285 commit d1ae359

File tree

5 files changed

+987
-18
lines changed

5 files changed

+987
-18
lines changed

contracts/FluiDex.sol

+7-4
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
1010
import "hardhat/console.sol"; // for debugging
1111

1212
import "./Events.sol";
13-
import "./Verifier.sol";
13+
import "./IVerifier.sol";
1414

1515
/**
1616
* @title FluiDexDemo
1717
*/
18-
contract FluiDexDemo is AccessControl, Events, KeyedVerifier, Ownable, ReentrancyGuard {
18+
contract FluiDexDemo is AccessControl, Events, Ownable, ReentrancyGuard {
1919
using SafeERC20 for IERC20;
2020

2121
bytes32 public constant TOKEN_ADMIN_ROLE = keccak256("TOKEN_ADMIN_ROLE");
@@ -38,6 +38,8 @@ contract FluiDexDemo is AccessControl, Events, KeyedVerifier, Ownable, Reentranc
3838
/// use 0 representing ETH in tokenId
3939
uint16 constant ETH_ID = 0;
4040

41+
IVerifier verifier;
42+
4143
uint256 GENESIS_ROOT;
4244
mapping(uint256 => uint256) public state_roots;
4345
mapping(uint256 => BlockState) public block_states;
@@ -50,8 +52,9 @@ contract FluiDexDemo is AccessControl, Events, KeyedVerifier, Ownable, Reentranc
5052
mapping(uint16 => UserInfo) public userIdToUserInfo;
5153
mapping(bytes32 => uint16) public userBjjPubkeyToUserId;
5254

53-
constructor(uint256 _genesis_root) {
55+
constructor(uint256 _genesis_root, IVerifier _verifier) {
5456
GENESIS_ROOT = _genesis_root;
57+
verifier = _verifier;
5558
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
5659
_setRoleAdmin(TOKEN_ADMIN_ROLE, DEFAULT_ADMIN_ROLE);
5760
grantRole(TOKEN_ADMIN_ROLE, msg.sender);
@@ -146,7 +149,7 @@ contract FluiDexDemo is AccessControl, Events, KeyedVerifier, Ownable, Reentranc
146149

147150
if (_serialized_proof.length != 0) {
148151
// TODO: hash inputs and then pass into verifier
149-
assert(verify_serialized_proof(_public_inputs, _serialized_proof));
152+
assert(verifier.verify_serialized_proof(_public_inputs, _serialized_proof));
150153
if (_block_id > 0) {
151154
assert(block_states[_block_id-1] == BlockState.Verified);
152155
}

contracts/IVerifier.sol

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// SPDX-License-Identifier: MIT OR Apache-2.0
2+
3+
pragma solidity ^0.8.0;
4+
5+
interface IVerifier {
6+
function verify_serialized_proof(
7+
uint256[] memory public_inputs,
8+
uint256[] memory serialized_proof
9+
) external view returns (bool);
10+
}

contracts/Ticker.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ contract Ticker {
1313
function tick() public {
1414
ticktock = block.number;
1515
}
16-
}
16+
}

contracts/Verifier.sol

-13
This file was deleted.

0 commit comments

Comments
 (0)