immutable / zkevm-bridge-contracts

Smart contracts for the Immutable zkEVM native bridge
https://toolkit.immutable.com/ethereum-bridge/
Apache License 2.0
8 stars 6 forks source link

Extract GMP specific logic out of bridge contracts #51

Closed ermyas closed 11 months ago

ermyas commented 11 months ago

At present, the RootERC20Bridge and ChildERC20Bridge implementations are implicitly linked to Axelar-specific details, such as chain names for chain IDs and string contract addresses. This PR moves these details from the bridge contract to the respective bridge adaptors. A crucial part of this refactor is that the validation of a message's source (i.e., source chain and source address) is now carried out at the bridge adaptor, not at the bridge.

This PR addresses SMR-2023, SMR-2024, SMR-2026

platform-sa commented 11 months ago

📃CI Report

Compiling 146 files with 0.8.19 Solc 0.8.19 finished in 15.75s Compiler run successful! Analysing contracts... Running tests... File % Lines % Statements % Branches % Funcs
script/DeployChildContracts.s.sol 0.00% (0/22) 0.00% (0/32) 100.00% (0/0) 0.00% (0/1)
script/DeployRootContracts.s.sol 0.00% (0/23) 0.00% (0/33) 0.00% (0/2) 0.00% (0/1)
script/InitializeChildContracts.s.sol 0.00% (0/11) 0.00% (0/17) 100.00% (0/0) 0.00% (0/1)
script/InitializeRootContracts.s.sol 0.00% (0/11) 0.00% (0/17) 100.00% (0/0) 0.00% (0/1)
script/Utils.sol 0.00% (0/12) 0.00% (0/16) 0.00% (0/2) 0.00% (0/2)
src/child/ChildAxelarBridgeAdaptor.sol 100.00% (48/48) 100.00% (65/65) 100.00% (22/22) 100.00% (7/7)
src/child/ChildERC20.sol 100.00% (14/14) 100.00% (15/15) 50.00% (1/2) 100.00% (7/7)
src/child/ChildERC20Bridge.sol 96.92% (126/130) 97.73% (172/176) 94.29% (66/70) 100.00% (21/21)
src/child/WIMX.sol 0.00% (0/19) 0.00% (0/22) 0.00% (0/8) 0.00% (0/6)
src/common/AdaptorRoles.sol 100.00% (6/6) 100.00% (6/6) 100.00% (0/0) 100.00% (6/6)
src/common/BridgeRoles.sol 100.00% (8/8) 100.00% (8/8) 100.00% (0/0) 100.00% (8/8)
src/lib/EIP712MetaTransaction.sol 8.00% (2/25) 9.68% (3/31) 8.33% (1/12) 14.29% (1/7)
src/lib/EIP712Upgradeable.sol 73.33% (11/15) 60.87% (14/23) 0.00% (0/2) 50.00% (2/4)
src/lib/WETH.sol 100.00% (19/19) 100.00% (22/22) 100.00% (8/8) 100.00% (6/6)
src/root/RootAxelarBridgeAdaptor.sol 100.00% (48/48) 100.00% (65/65) 100.00% (22/22) 100.00% (7/7)
src/root/RootERC20Bridge.sol 93.60% (117/125) 95.56% (172/180) 87.50% (49/56) 90.91% (20/22)
src/root/flowrate/FlowRateDetection.sol 90.00% (27/30) 90.91% (30/33) 78.57% (11/14) 100.00% (4/4)
src/root/flowrate/FlowRateWithdrawalQueue.sol 67.39% (31/46) 61.67% (37/60) 50.00% (7/14) 85.71% (6/7)
src/root/flowrate/RootERC20BridgeFlowRate.sol 100.00% (43/43) 98.00% (49/50) 100.00% (10/10) 100.00% (9/9)

For a full HTML report run: forge coverage --report lcov && genhtml --ignore-errors category --branch-coverage --output-dir coverage lcov.info