From 319dc9e173f76a19e38f67502ed4f35920ab98d5 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sat, 10 Feb 2024 11:34:54 +0800 Subject: [PATCH] fix merge --- .../contracts/signal/SignalService.sol | 7 +--- .../AuthorizeRemoteTaikoProtocols.s.sol | 42 ------------------- .../protocol/test/signal/SignalService.t.sol | 14 +++---- 3 files changed, 9 insertions(+), 54 deletions(-) delete mode 100644 packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 0dc481912d..6258fceeb5 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -121,19 +121,16 @@ contract SignalService is EssentialContract, ISignalService { hrr = IHopRelayRegistry(resolve("hop_relay_registry", false)); } - bytes32 stateRoot = ICrossChainSync(p.crossChainSync).getSyncedSnippet(p.height).stateRoot; - if (stateRoot == 0) revert SS_CROSS_CHAIN_SYNC_ZERO_STATE_ROOT(); - // If a signal is sent from chainA -> chainB -> chainC (this chain), we verify the proofs in // the following order: - // 1. using chainC's latest parent's stateRoot to verify that chainB's TaikoL1/TaikoL2 contract has + // 1. using chainC's latest parent's stateRoot to verify that chainB's TaikoL1/TaikoL2 + // contract has // sent a given hop stateRoot on chainB using its own signal service. // 2. using the verified hop stateRoot to verify that the source app on chainA has sent a // signal using its own signal service. // We always verify the proofs in the reversed order (top to bottom). for (uint256 i; i < p.hops.length; ++i) { Hop memory hop = p.hops[i]; - if (hop.stateRoot == stateRoot) revert SS_INVALID_HOP_PROOF(); if (!hrr.isRelayRegistered(_srcChainId, hop.chainId, hop.relay)) { revert SS_INVALID_RELAY(); diff --git a/packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol b/packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol deleted file mode 100644 index 4fdb8b24e8..0000000000 --- a/packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ -// -// Email: security@taiko.xyz -// Website: https://taiko.xyz -// GitHub: https://github.com/taikoxyz -// Discord: https://discord.gg/taikoxyz -// Twitter: https://twitter.com/taikoxyz -// Blog: https://mirror.xyz/labs.taiko.eth -// Youtube: https://www.youtube.com/@taikoxyz - -pragma solidity 0.8.24; - -import "forge-std/Script.sol"; -import "forge-std/console2.sol"; -import "../contracts/signal/SignalService.sol"; - -contract AuthorizeRemoteTaikoProtocols is Script { - uint256 public privateKey = vm.envUint("PRIVATE_KEY"); - address public signalServiceAddress = vm.envAddress("SIGNAL_SERVICE_ADDRESS"); - uint256[] public remoteChainIDs = vm.envUint("REMOTE_CHAIN_IDS", ","); - address[] public remoteTaikoProtocols = vm.envAddress("REMOTE_TAIKO_PROTOCOLS", ","); - - function run() external { - require( - remoteChainIDs.length == remoteTaikoProtocols.length, - "invalid remote taiko protocol addresses length" - ); - - vm.startBroadcast(privateKey); - - SignalService signalService = SignalService(payable(signalServiceAddress)); - for (uint256 i; i < remoteChainIDs.length; ++i) { - console2.log(remoteTaikoProtocols[i], "--->", remoteChainIDs[i]); - } - - vm.stopBroadcast(); - } -} diff --git a/packages/protocol/test/signal/SignalService.t.sol b/packages/protocol/test/signal/SignalService.t.sol index b5851d4f6e..e21c939dbe 100644 --- a/packages/protocol/test/signal/SignalService.t.sol +++ b/packages/protocol/test/signal/SignalService.t.sol @@ -96,34 +96,34 @@ contract TestSignalService is TaikoTest { function test_SignalService_sendSignal_revert() public { vm.expectRevert(SignalService.SS_INVALID_SIGNAL.selector); - relayer.sendSignal(0); + signalService.sendSignal(0); } function test_SignalService_isSignalSent_revert() public { bytes32 signal = bytes32(uint256(1)); vm.expectRevert(SignalService.SS_INVALID_APP.selector); - relayer.isSignalSent(address(0), signal); + signalService.isSignalSent(address(0), signal); signal = bytes32(uint256(0)); vm.expectRevert(SignalService.SS_INVALID_SIGNAL.selector); - relayer.isSignalSent(Alice, signal); + signalService.isSignalSent(Alice, signal); } function test_SignalService_sendSignal_isSignalSent() public { vm.startPrank(Alice); bytes32 signal = bytes32(uint256(1)); - relayer.sendSignal(signal); + signalService.sendSignal(signal); - assertTrue(relayer.isSignalSent(Alice, signal)); + assertTrue(signalService.isSignalSent(Alice, signal)); } function test_SignalService_getSignalSlot() public { vm.startPrank(Alice); for (uint8 i = 1; i < 100; ++i) { bytes32 signal = bytes32(block.prevrandao + i); - relayer.sendSignal(signal); + signalService.sendSignal(signal); - assertTrue(relayer.isSignalSent(Alice, signal)); + assertTrue(signalService.isSignalSent(Alice, signal)); } }