Skip to content

Commit

Permalink
Revert oraclev2 update (#115)
Browse files Browse the repository at this point in the history
* oracle reset message index to block number

* revert test

* doc

* redeploy

* doc

* redeploy
  • Loading branch information
hujw77 authored Feb 4, 2024
1 parent 4d74cd1 commit 4a98829
Show file tree
Hide file tree
Showing 18 changed files with 34 additions and 32 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Oracle and Relayer based Message Protocol.
|------------|--------------------------------------------|
| ORMP | 0x00000000001523057a05d6293C1e5171eE33eE0A |
| Oracle | 0x00000000046bc530804d66B6b64f7aF69B4E4E81 |
| ORMPOracle | 0x000000000DA67291724858F7e759A43B2d23225e |
| ORMPOracle | 0x0000000003ebeF32D8f0ED406a5CA8805c80AFba |
| Relayer | 0x0000000000808fE9bDCc1d180EfbF5C53552a6b1 |
| MsgDAO | 0x000000000879926D12aF396788C0785B7e581e53 |

Expand Down
5 changes: 2 additions & 3 deletions bin/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ set -eo pipefail
# forge script script/deploy/Deploy.s.sol:Deploy --chain-id 46 --broadcast --verify --slow
# forge script script/deploy/Deploy.s.sol:Deploy --chain-id 42161 --broadcast --verify --slow --legacy

forge script script/deploy/Deploy.s.sol:Deploy --chain-id 43 --broadcast --verify --skip-simulation --slow
forge script script/deploy/Deploy.s.sol:Deploy --chain-id 44 --broadcast --verify --skip-simulation --slow
forge script script/deploy/Deploy.s.sol:Deploy --chain-id 43 --broadcast --verify --skip-simulation
forge script script/deploy/Deploy.s.sol:Deploy --chain-id 421614 --broadcast --verify --skip-simulation --slow
forge script script/deploy/Deploy.s.sol:Deploy --chain-id 11155111 --broadcast --verify --skip-simulation --slow
forge script script/deploy/Deploy.s.sol:Deploy --chain-id 11155111 --broadcast --verify --skip-simulation
4 changes: 2 additions & 2 deletions bin/fee.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ set -x

forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 11155111 --chain-id 43 --broadcast
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 421614 --chain-id 43 --broadcast
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 43 --chain-id 11155111 --broadcast --slow
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 421614 --chain-id 11155111 --broadcast --slow
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 43 --chain-id 11155111 --broadcast
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 421614 --chain-id 11155111 --broadcast
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 43 --chain-id 421614 --broadcast --skip-simulation --legacy --slow
forge script script/fee/Fee.s.sol:Fee --sig "run(uint256)" 11155111 --chain-id 421614 --broadcast --skip-simulation --legacy --slow
2 changes: 1 addition & 1 deletion bin/verify.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ verify() {
# verify $oracle 46 $(cast abi-encode "constructor(address,address)" $deployer $ormp) src/eco/OracleV2.sol:OracleV2
# verify $oracle 42161 $(cast abi-encode "constructor(address,address)" $deployer $ormp) src/eco/OracleV2.sol:OracleV2

verify $oracle 44 $(cast abi-encode "constructor(address,address)" $deployer $ormp) src/eco/ORMPOracle.sol:ORMPOracle
# verify $oracle 44 $(cast abi-encode "constructor(address,address)" $deployer $ormp) src/eco/ORMPOracle.sol:ORMPOracle
verify $oracle 421614 $(cast abi-encode "constructor(address,address)" $deployer $ormp) src/eco/ORMPOracle.sol:ORMPOracle
verify $oracle 11155111 $(cast abi-encode "constructor(address,address)" $deployer $ormp) src/eco/ORMPOracle.sol:ORMPOracle

Expand Down
2 changes: 1 addition & 1 deletion script/fee/Fee.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ contract Fee is Common {

function run(uint256 chainId) public {
require(dao == msg.sender, "!dao");
// setOracleFee(chainId);
setOracleFee(chainId);
// setRelayerFee(chainId);
}

Expand Down
4 changes: 2 additions & 2 deletions script/input/c3.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"SUBAPIMULTISIG": "0x000000000d60704384100A29efb6C9cf8cD72820",
"ORMP_ADDR": "0x00000000001523057a05d6293C1e5171eE33eE0A",
"ORMP_SALT": "0x4d629bbdb40d29206f12a51aa81faf14553b218f96845742a89e02e55ecfcef6",
"ORMPORACLE_ADDR": "0x000000000DA67291724858F7e759A43B2d23225e",
"ORMPORACLE_SALT": "0xb5616c300c82b5cd3f79afab022c8969a8bcdb7a02fa8c685437c22388e7ea29",
"ORMPORACLE_ADDR": "0x0000000003ebeF32D8f0ED406a5CA8805c80AFba",
"ORMPORACLE_SALT": "0x4334621734fbd0344e7eebbedb5a43d814a68c79bd9333da2c854d43a5253866",
"RELAYER_ADDR": "0x0000000000808fE9bDCc1d180EfbF5C53552a6b1",
"RELAYER_SALT": "0x9d38bcb32422a45bc9c08605d4457bcd3dadddfee1573a352ace5f1defa45621"
}
2 changes: 1 addition & 1 deletion script/output/11155111/ORMPOracle.v.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion script/output/11155111/deploy.a-latest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"DAO": "0x0f14341A7f464320319025540E8Fe48Ad0fe5aec",
"ORACLE": "0x000000000DA67291724858F7e759A43B2d23225e",
"ORACLE": "0x0000000003ebeF32D8f0ED406a5CA8805c80AFba",
"ORMP": "0x00000000001523057a05d6293C1e5171eE33eE0A",
"RELAYER": "0x0000000000808fE9bDCc1d180EfbF5C53552a6b1"
}
2 changes: 1 addition & 1 deletion script/output/421614/ORMPOracle.v.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion script/output/421614/deploy.a-latest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"DAO": "0x0f14341A7f464320319025540E8Fe48Ad0fe5aec",
"ORACLE": "0x000000000DA67291724858F7e759A43B2d23225e",
"ORACLE": "0x0000000003ebeF32D8f0ED406a5CA8805c80AFba",
"ORMP": "0x00000000001523057a05d6293C1e5171eE33eE0A",
"RELAYER": "0x0000000000808fE9bDCc1d180EfbF5C53552a6b1"
}
2 changes: 1 addition & 1 deletion script/output/43/deploy.a-latest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"DAO": "0x0f14341A7f464320319025540E8Fe48Ad0fe5aec",
"ORACLE": "0x000000000DA67291724858F7e759A43B2d23225e",
"ORACLE": "0x0000000003ebeF32D8f0ED406a5CA8805c80AFba",
"ORMP": "0x00000000001523057a05d6293C1e5171eE33eE0A",
"RELAYER": "0x0000000000808fE9bDCc1d180EfbF5C53552a6b1"
}
6 changes: 4 additions & 2 deletions src/Verifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,17 @@ import "./imt/IncrementalMerkleTree.sol";

abstract contract Verifier is IVerifier {
/// @notice Message proof.
/// @param blockNumber The block number corresponding to the proof.
/// @param messageIndex Leaf index of the message hash in incremental merkle tree.
/// @param messageProof Merkle proof of the message hash.
struct Proof {
uint256 blockNumber;
uint256 messageIndex;
bytes32[32] messageProof;
}

/// @inheritdoc IVerifier
function merkleRoot(uint256 chainId, uint256 messageIndex) public view virtual returns (bytes32);
function merkleRoot(uint256 chainId, uint256 blockNumber) public view virtual returns (bytes32);

/// @inheritdoc IVerifier
function verifyMessageProof(uint256 fromChainId, bytes32 msgHash, bytes calldata proof)
Expand All @@ -42,7 +44,7 @@ abstract contract Verifier is IVerifier {
Proof memory p = abi.decode(proof, (Proof));

// fetch message root in block number from chain
bytes32 imtRootOracle = merkleRoot(fromChainId, p.messageIndex);
bytes32 imtRootOracle = merkleRoot(fromChainId, p.blockNumber);
// calculate the expected root based on the proof
bytes32 imtRootProof = IncrementalMerkleTree.branchRoot(msgHash, p.messageProof, p.messageIndex);

Expand Down
16 changes: 8 additions & 8 deletions src/eco/ORMPOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@ contract ORMPOracle is Verifier {
event SetApproved(address operator, bool approve);
event Withdrawal(address indexed to, uint256 amt);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event ImportedMessageRoot(uint256 indexed chainId, uint256 indexed messageIndex, bytes32 messageRoot);
event ImportedMessageRoot(uint256 indexed chainId, uint256 indexed blockHeight, bytes32 messageRoot);

address public immutable PROTOCOL;

address public owner;
// chainId => price
mapping(uint256 => uint256) public feeOf;
// chainId => messageIndex => messageRoot
// chainId => blockNumber => messageRoot
mapping(uint256 => mapping(uint256 => bytes32)) rootOf;
// operator => isApproved
mapping(address => bool) public approvedOf;
Expand All @@ -57,11 +57,11 @@ contract ORMPOracle is Verifier {
/// @dev Only could be called by owner.
/// @notice Each channel has a corresponding oracle, and the message root should match with it.
/// @param chainId The source chain id.
/// @param messageIndex The source chain message index corresponds to the respective channel.
/// @param blockNumber The source chain block number.
/// @param messageRoot The source chain message root corresponding to the channel.
function importMessageRoot(uint256 chainId, uint256 messageIndex, bytes32 messageRoot) external onlyOwner {
rootOf[chainId][messageIndex] = messageRoot;
emit ImportedMessageRoot(chainId, messageIndex, messageRoot);
function importMessageRoot(uint256 chainId, uint256 blockNumber, bytes32 messageRoot) external onlyOwner {
rootOf[chainId][blockNumber] = messageRoot;
emit ImportedMessageRoot(chainId, blockNumber, messageRoot);
}

function changeOwner(address newOwner) external onlyOwner {
Expand Down Expand Up @@ -101,7 +101,7 @@ contract ORMPOracle is Verifier {
emit Assigned(msgHash, msg.value);
}

function merkleRoot(uint256 chainId, uint256 messageIndex) public view override returns (bytes32) {
return rootOf[chainId][messageIndex];
function merkleRoot(uint256 chainId, uint256 blockNumber) public view override returns (bytes32) {
return rootOf[chainId][blockNumber];
}
}
4 changes: 2 additions & 2 deletions src/interfaces/IVerifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ pragma solidity 0.8.17;
interface IVerifier {
/// @notice Fetch message root oracle.
/// @param chainId The destination chain id.
/// @param messageIndex Leaf index of the message hash in incremental merkle tree.
/// @param blockNumber The block number where the message root is located.
/// @return Message root in destination chain.
function merkleRoot(uint256 chainId, uint256 messageIndex) external view returns (bytes32);
function merkleRoot(uint256 chainId, uint256 blockNumber) external view returns (bytes32);

/// @notice Verify message proof
/// @dev Message proof provided by relayer. Oracle should provide message root of
Expand Down
4 changes: 2 additions & 2 deletions test/Channel.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ contract ChannelTest is Test, Verifier {
encoded: ""
});
assertEq(msgHash, hash(message));
Proof memory proof = Proof({messageIndex: 0, messageProof: channel.prove()});
Proof memory proof = Proof({blockNumber: block.number, messageIndex: 0, messageProof: channel.prove()});
vm.chainId(2);
channel.recvMessage(message, abi.encode(proof));
}
Expand All @@ -89,7 +89,7 @@ contract ChannelTest is Test, Verifier {
encoded: ""
});
assertEq(msgHash, hash(message));
Proof memory proof = Proof({messageIndex: index, messageProof: channel.prove()});
Proof memory proof = Proof({blockNumber: block.number, messageIndex: index, messageProof: channel.prove()});
vm.chainId(2);
channel.recvMessage(message, abi.encode(proof));
}
Expand Down
2 changes: 1 addition & 1 deletion test/ORMP.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ contract ORMPTest is Test, Verifier {
function perform_send() public {
uint256 f = ormp.fee(2, self, 0, "", "");
ormp.send{value: f}(2, self, 0, "", self, "");
proof = Proof({messageIndex: ormp.messageCount() - 1, messageProof: ormp.prove()});
proof = Proof({blockNumber: block.number, messageIndex: ormp.messageCount() - 1, messageProof: ormp.prove()});
vm.chainId(2);
}

Expand Down
2 changes: 1 addition & 1 deletion test/Verifier.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ contract VerifierTest is Test, Verifier {
function test_verifyMessageProof() public {
bytes32 msgHash = bytes32(uint256(1));
imt.insert(msgHash);
Proof memory proof = Proof({messageIndex: 0, messageProof: zeroHashes});
Proof memory proof = Proof({blockNumber: block.number, messageIndex: 0, messageProof: zeroHashes});
bool r = this.verifyMessageProof(1, msgHash, abi.encode(proof));
assertEq(r, true);
}
Expand Down
3 changes: 2 additions & 1 deletion test/bench/ORMP.b.sol
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ contract ORMPBenchmarkTest is Test {

function perform_recv(Message memory message) public {
root = ormp.root();
Verifier.Proof memory proof = Verifier.Proof({messageIndex: message.index, messageProof: ormp.prove()});
Verifier.Proof memory proof =
Verifier.Proof({blockNumber: block.number, messageIndex: message.index, messageProof: ormp.prove()});

vm.createSelectFork(message.toChainId.toChainName());
// TODO: setDefaltOracle
Expand Down

0 comments on commit 4a98829

Please sign in to comment.