@across-protocol/contracts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/LICENSE +661 -0
- package/README.md +53 -0
- package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.dbg.json +4 -0
- package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.json +252 -0
- package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.dbg.json +4 -0
- package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.json +35 -0
- package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.dbg.json +4 -0
- package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +110 -0
- package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.dbg.json +4 -0
- package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.json +10 -0
- package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
- package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.json +108 -0
- package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
- package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.json +50 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
- package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.json +10 -0
- package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.json +611 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.json +297 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.json +29 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.json +37 -0
- package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
- package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
- package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
- package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
- package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
- package/artifacts/build-info/1cd64db7a8ac0a153df93d26826ad4e9.json +1653 -0
- package/artifacts/build-info/1f738b56edd7602183f2f8d2f23f6e90.json +1592 -0
- package/artifacts/build-info/343b9221be36acd9ddaca3f3b83d2e75.json +3943 -0
- package/artifacts/build-info/622e561692c193f4cd0ff989b5a231e2.json +5661 -0
- package/artifacts/build-info/8e408b49e0ff2873bc28d45221a7ff71.json +277715 -0
- package/artifacts/build-info/9d1a3182633612bd337d811d567d5d60.json +2072 -0
- package/artifacts/build-info/a8cd9c443d245fe513d6650634b60f93.json +23776 -0
- package/artifacts/build-info/d302d9d63fbafb5c8d635cc62cb1cc7c.json +167529 -0
- package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.dbg.json +4 -0
- package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.json +10 -0
- package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.dbg.json +4 -0
- package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.json +10 -0
- package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
- package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
- package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.dbg.json +4 -0
- package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.json +30 -0
- package/artifacts/contracts/common/implementation/Testable.sol/Testable.dbg.json +4 -0
- package/artifacts/contracts/common/implementation/Testable.sol/Testable.json +50 -0
- package/artifacts/contracts/common/implementation/Timer.sol/Timer.dbg.json +4 -0
- package/artifacts/contracts/common/implementation/Timer.sol/Timer.json +42 -0
- package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.dbg.json +4 -0
- package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.json +69 -0
- package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.dbg.json +4 -0
- package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.json +42 -0
- package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.dbg.json +4 -0
- package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.json +235 -0
- package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
- package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
- package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
- package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
- package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
- package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
- package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.dbg.json +4 -0
- package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.json +1019 -0
- package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.dbg.json +4 -0
- package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.json +314 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.dbg.json +4 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.json +47 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.dbg.json +4 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.json +62 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.dbg.json +4 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.json +65 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.dbg.json +4 -0
- package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.json +39 -0
- package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
- package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
- package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
- package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.json +86 -0
- package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.json +10 -0
- package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.json +10 -0
- package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.json +10 -0
- package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.json +104 -0
- package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.json +34 -0
- package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.json +29 -0
- package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.json +79 -0
- package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.json +29 -0
- package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.json +29 -0
- package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.json +54 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.json +86 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.json +34 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.json +108 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.json +50 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.dbg.json +4 -0
- package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.json +29 -0
- package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.json +662 -0
- package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.json +391 -0
- package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.json +30 -0
- package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.json +31 -0
- package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.json +1709 -0
- package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.json +1709 -0
- package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.json +31 -0
- package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.json +564 -0
- package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.json +45 -0
- package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
- package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.json +191 -0
- package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.json +319 -0
- package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.json +63 -0
- package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.json +54 -0
- package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.json +528 -0
- package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
- package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.json +572 -0
- package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.json +130 -0
- package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.json +142 -0
- package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.json +55 -0
- package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.json +86 -0
- package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.json +68 -0
- package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.json +78 -0
- package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.json +24 -0
- package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.json +510 -0
- package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.json +85 -0
- package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.dbg.json +4 -0
- package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.json +110 -0
- package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.dbg.json +4 -0
- package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.json +24 -0
- package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.dbg.json +4 -0
- package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.json +141 -0
- package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.dbg.json +4 -0
- package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.json +48 -0
- package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.dbg.json +4 -0
- package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.json +56 -0
- package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.dbg.json +4 -0
- package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.json +555 -0
- package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.dbg.json +4 -0
- package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.json +853 -0
- package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.dbg.json +4 -0
- package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.json +124 -0
- package/contracts/common/implementation/AncillaryData.sol +144 -0
- package/contracts/common/implementation/FixedPoint.sol +763 -0
- package/contracts/common/implementation/Lockable.sol +61 -0
- package/contracts/common/implementation/MultiCaller.sol +27 -0
- package/contracts/common/implementation/Testable.sol +52 -0
- package/contracts/common/implementation/Timer.sol +30 -0
- package/contracts/common/interfaces/AddressWhitelistInterface.sol +12 -0
- package/contracts/external/avm/AVM_CrossDomainEnabled.sol +43 -0
- package/contracts/external/avm/interfaces/ArbSys.sol +79 -0
- package/contracts/external/avm/interfaces/iArbitrum_Inbox.sol +28 -0
- package/contracts/external/avm/interfaces/iArbitrum_Outbox.sol +26 -0
- package/contracts/external/chainbridge/Bridge.sol +454 -0
- package/contracts/external/chainbridge/handlers/GenericHandler.sol +237 -0
- package/contracts/external/chainbridge/interfaces/IBridge.sol +20 -0
- package/contracts/external/chainbridge/interfaces/IDepositExecute.sol +29 -0
- package/contracts/external/chainbridge/interfaces/IERCHandler.sol +33 -0
- package/contracts/external/chainbridge/interfaces/IGenericHandler.sol +23 -0
- package/contracts/external/ovm/OVM_CrossDomainEnabled.sol +114 -0
- package/contracts/external/polygon/lib/Merkle.sol +36 -0
- package/contracts/external/polygon/lib/MerklePatriciaProof.sol +139 -0
- package/contracts/external/polygon/lib/RLPReader.sol +251 -0
- package/contracts/external/polygon/test/FxChildMock.sol +42 -0
- package/contracts/external/polygon/test/FxRootMock.sol +32 -0
- package/contracts/external/polygon/test/StateSyncMock.sol +26 -0
- package/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol +80 -0
- package/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol +185 -0
- package/contracts/insured-bridge/BridgeAdmin.sol +394 -0
- package/contracts/insured-bridge/BridgeDepositBox.sol +245 -0
- package/contracts/insured-bridge/BridgePool.sol +980 -0
- package/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol +144 -0
- package/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol +67 -0
- package/contracts/insured-bridge/avm/Arbitrum_Messenger.sol +72 -0
- package/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol +44 -0
- package/contracts/insured-bridge/interfaces/BridgePoolInterface.sol +14 -0
- package/contracts/insured-bridge/interfaces/MessengerInterface.sol +18 -0
- package/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol +135 -0
- package/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol +84 -0
- package/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol +89 -0
- package/contracts/insured-bridge/ovm/Optimism_Messenger.sol +34 -0
- package/contracts/insured-bridge/ovm/Optimism_Wrapper.sol +59 -0
- package/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol +41 -0
- package/contracts/insured-bridge/test/Arbitrum_InboxMock.sol +50 -0
- package/contracts/insured-bridge/test/BridgeDepositBoxMock.sol +113 -0
- package/contracts/insured-bridge/test/MessengerMock.sol +32 -0
- package/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol +16 -0
- package/contracts/oracle/implementation/Constants.sol +29 -0
- package/contracts/oracle/interfaces/FinderInterface.sol +22 -0
- package/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol +28 -0
- package/contracts/oracle/interfaces/OptimisticOracleInterface.sol +263 -0
- package/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol +251 -0
- package/contracts/oracle/interfaces/StoreInterface.sol +46 -0
- package/package.json +60 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
interface IStateSender {
|
|
5
|
+
function syncState(address receiver, bytes calldata data) external;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface IFxStateSender {
|
|
9
|
+
function sendMessageToChild(address _receiver, bytes calldata _data) external;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @title FxRoot root contract for fx-portal
|
|
14
|
+
*/
|
|
15
|
+
contract FxRootMock is IFxStateSender {
|
|
16
|
+
IStateSender public stateSender;
|
|
17
|
+
address public fxChild;
|
|
18
|
+
|
|
19
|
+
constructor(address _stateSender) {
|
|
20
|
+
stateSender = IStateSender(_stateSender);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function setFxChild(address _fxChild) public {
|
|
24
|
+
require(fxChild == address(0x0));
|
|
25
|
+
fxChild = _fxChild;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function sendMessageToChild(address _receiver, bytes calldata _data) public override {
|
|
29
|
+
bytes memory data = abi.encode(msg.sender, _receiver, _data);
|
|
30
|
+
stateSender.syncState(fxChild, data);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @notice Dummy State Sender contract to simulate plasma state sender while testing
|
|
6
|
+
*/
|
|
7
|
+
contract StateSyncMock {
|
|
8
|
+
/**
|
|
9
|
+
* @notice Event emitted when when syncState is called
|
|
10
|
+
* @dev Heimdall bridge listens to this event and sends the data to receiver contract on child chain
|
|
11
|
+
* @param id Id of the sync, increamented for each event in case of actual state sender contract
|
|
12
|
+
* @param contractAddress the contract receiving data on child chain
|
|
13
|
+
* @param data bytes data to be sent
|
|
14
|
+
*/
|
|
15
|
+
event StateSynced(uint256 indexed id, address indexed contractAddress, bytes data);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @notice called to send data to child chain
|
|
19
|
+
* @dev sender and receiver contracts need to be registered in case of actual state sender contract
|
|
20
|
+
* @param receiver the contract receiving data on child chain
|
|
21
|
+
* @param data bytes data to be sent
|
|
22
|
+
*/
|
|
23
|
+
function syncState(address receiver, bytes calldata data) external {
|
|
24
|
+
emit StateSynced(1, receiver, data);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal
|
|
3
|
+
// except bumping version from 0.7.3 --> 0.8
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
// IFxMessageProcessor represents interface to process message
|
|
7
|
+
interface IFxMessageProcessor {
|
|
8
|
+
function processMessageFromRoot(
|
|
9
|
+
uint256 stateId,
|
|
10
|
+
address rootMessageSender,
|
|
11
|
+
bytes calldata data
|
|
12
|
+
) external;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @notice Mock child tunnel contract to receive and send message from L2
|
|
17
|
+
*/
|
|
18
|
+
abstract contract FxBaseChildTunnel is IFxMessageProcessor {
|
|
19
|
+
// MessageTunnel on L1 will get data from this event
|
|
20
|
+
event MessageSent(bytes message);
|
|
21
|
+
|
|
22
|
+
// fx child
|
|
23
|
+
address public fxChild;
|
|
24
|
+
|
|
25
|
+
// fx root tunnel
|
|
26
|
+
address public fxRootTunnel;
|
|
27
|
+
|
|
28
|
+
constructor(address _fxChild) {
|
|
29
|
+
fxChild = _fxChild;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Sender must be fxRootTunnel.
|
|
33
|
+
modifier validateSender(address sender) {
|
|
34
|
+
require(sender == fxRootTunnel, "FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT");
|
|
35
|
+
_;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Set fxRootTunnel if not set already.
|
|
39
|
+
function setFxRootTunnel(address _fxRootTunnel) public {
|
|
40
|
+
require(fxRootTunnel == address(0x0), "FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET");
|
|
41
|
+
fxRootTunnel = _fxRootTunnel;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function processMessageFromRoot(
|
|
45
|
+
uint256 stateId,
|
|
46
|
+
address rootMessageSender,
|
|
47
|
+
bytes calldata data
|
|
48
|
+
) public override {
|
|
49
|
+
require(msg.sender == fxChild, "FxBaseChildTunnel: INVALID_SENDER");
|
|
50
|
+
_processMessageFromRoot(stateId, rootMessageSender, data);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @notice Emit message that can be received on Root Tunnel
|
|
55
|
+
* @dev Call the internal function when need to emit message
|
|
56
|
+
* @param message bytes message that will be sent to Root Tunnel
|
|
57
|
+
* some message examples -
|
|
58
|
+
* abi.encode(tokenId);
|
|
59
|
+
* abi.encode(tokenId, tokenMetadata);
|
|
60
|
+
* abi.encode(messageType, messageData);
|
|
61
|
+
*/
|
|
62
|
+
function _sendMessageToRoot(bytes memory message) internal {
|
|
63
|
+
emit MessageSent(message);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @notice Process message received from Root Tunnel
|
|
68
|
+
* @dev function needs to be implemented to handle message as per requirement
|
|
69
|
+
* This is called by onStateReceive function.
|
|
70
|
+
* Since it is called via a system call, any event will not be emitted during its execution.
|
|
71
|
+
* @param stateId unique state id
|
|
72
|
+
* @param sender root message sender
|
|
73
|
+
* @param message bytes message that was sent from Root Tunnel
|
|
74
|
+
*/
|
|
75
|
+
function _processMessageFromRoot(
|
|
76
|
+
uint256 stateId,
|
|
77
|
+
address sender,
|
|
78
|
+
bytes memory message
|
|
79
|
+
) internal virtual;
|
|
80
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal
|
|
3
|
+
// except bumping version from 0.7.3 --> 0.8
|
|
4
|
+
pragma solidity ^0.8.0;
|
|
5
|
+
|
|
6
|
+
import "../lib/RLPReader.sol";
|
|
7
|
+
import "../lib/MerklePatriciaProof.sol";
|
|
8
|
+
import "../lib/Merkle.sol";
|
|
9
|
+
|
|
10
|
+
interface IFxStateSender {
|
|
11
|
+
function sendMessageToChild(address _receiver, bytes calldata _data) external;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
contract ICheckpointManager {
|
|
15
|
+
struct HeaderBlock {
|
|
16
|
+
bytes32 root;
|
|
17
|
+
uint256 start;
|
|
18
|
+
uint256 end;
|
|
19
|
+
uint256 createdAt;
|
|
20
|
+
address proposer;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @notice mapping of checkpoint header numbers to block details
|
|
25
|
+
* @dev These checkpoints are submited by plasma contracts
|
|
26
|
+
*/
|
|
27
|
+
mapping(uint256 => HeaderBlock) public headerBlocks;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
abstract contract FxBaseRootTunnel {
|
|
31
|
+
using RLPReader for bytes;
|
|
32
|
+
using RLPReader for RLPReader.RLPItem;
|
|
33
|
+
using Merkle for bytes32;
|
|
34
|
+
|
|
35
|
+
// keccak256(MessageSent(bytes))
|
|
36
|
+
bytes32 public constant SEND_MESSAGE_EVENT_SIG = 0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036;
|
|
37
|
+
|
|
38
|
+
// state sender contract
|
|
39
|
+
IFxStateSender public fxRoot;
|
|
40
|
+
// root chain manager
|
|
41
|
+
ICheckpointManager public checkpointManager;
|
|
42
|
+
// child tunnel contract which receives and sends messages
|
|
43
|
+
address public fxChildTunnel;
|
|
44
|
+
|
|
45
|
+
// storage to avoid duplicate exits
|
|
46
|
+
mapping(bytes32 => bool) public processedExits;
|
|
47
|
+
|
|
48
|
+
constructor(address _checkpointManager, address _fxRoot) {
|
|
49
|
+
checkpointManager = ICheckpointManager(_checkpointManager);
|
|
50
|
+
fxRoot = IFxStateSender(_fxRoot);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// set fxChildTunnel if not set already
|
|
54
|
+
function setFxChildTunnel(address _fxChildTunnel) public {
|
|
55
|
+
require(fxChildTunnel == address(0x0), "FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET");
|
|
56
|
+
fxChildTunnel = _fxChildTunnel;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @notice Send bytes message to Child Tunnel
|
|
61
|
+
* @param message bytes message that will be sent to Child Tunnel
|
|
62
|
+
* some message examples -
|
|
63
|
+
* abi.encode(tokenId);
|
|
64
|
+
* abi.encode(tokenId, tokenMetadata);
|
|
65
|
+
* abi.encode(messageType, messageData);
|
|
66
|
+
*/
|
|
67
|
+
function _sendMessageToChild(bytes memory message) internal {
|
|
68
|
+
fxRoot.sendMessageToChild(fxChildTunnel, message);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function _validateAndExtractMessage(bytes memory inputData) internal returns (bytes memory) {
|
|
72
|
+
RLPReader.RLPItem[] memory inputDataRLPList = inputData.toRlpItem().toList();
|
|
73
|
+
|
|
74
|
+
// checking if exit has already been processed
|
|
75
|
+
// unique exit is identified using hash of (blockNumber, branchMask, receiptLogIndex)
|
|
76
|
+
bytes32 exitHash =
|
|
77
|
+
keccak256(
|
|
78
|
+
abi.encodePacked(
|
|
79
|
+
inputDataRLPList[2].toUint(), // blockNumber
|
|
80
|
+
// first 2 nibbles are dropped while generating nibble array
|
|
81
|
+
// this allows branch masks that are valid but bypass exitHash check (changing first 2 nibbles only)
|
|
82
|
+
// so converting to nibble array and then hashing it
|
|
83
|
+
MerklePatriciaProof._getNibbleArray(inputDataRLPList[8].toBytes()), // branchMask
|
|
84
|
+
inputDataRLPList[9].toUint() // receiptLogIndex
|
|
85
|
+
)
|
|
86
|
+
);
|
|
87
|
+
require(processedExits[exitHash] == false, "FxRootTunnel: EXIT_ALREADY_PROCESSED");
|
|
88
|
+
processedExits[exitHash] = true;
|
|
89
|
+
|
|
90
|
+
RLPReader.RLPItem[] memory receiptRLPList = inputDataRLPList[6].toBytes().toRlpItem().toList();
|
|
91
|
+
RLPReader.RLPItem memory logRLP =
|
|
92
|
+
receiptRLPList[3].toList()[
|
|
93
|
+
inputDataRLPList[9].toUint() // receiptLogIndex
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
RLPReader.RLPItem[] memory logRLPList = logRLP.toList();
|
|
97
|
+
|
|
98
|
+
// check child tunnel
|
|
99
|
+
require(fxChildTunnel == RLPReader.toAddress(logRLPList[0]), "FxRootTunnel: INVALID_FX_CHILD_TUNNEL");
|
|
100
|
+
|
|
101
|
+
// verify receipt inclusion
|
|
102
|
+
require(
|
|
103
|
+
MerklePatriciaProof.verify(
|
|
104
|
+
inputDataRLPList[6].toBytes(), // receipt
|
|
105
|
+
inputDataRLPList[8].toBytes(), // branchMask
|
|
106
|
+
inputDataRLPList[7].toBytes(), // receiptProof
|
|
107
|
+
bytes32(inputDataRLPList[5].toUint()) // receiptRoot
|
|
108
|
+
),
|
|
109
|
+
"FxRootTunnel: INVALID_RECEIPT_PROOF"
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
// verify checkpoint inclusion
|
|
113
|
+
_checkBlockMembershipInCheckpoint(
|
|
114
|
+
inputDataRLPList[2].toUint(), // blockNumber
|
|
115
|
+
inputDataRLPList[3].toUint(), // blockTime
|
|
116
|
+
bytes32(inputDataRLPList[4].toUint()), // txRoot
|
|
117
|
+
bytes32(inputDataRLPList[5].toUint()), // receiptRoot
|
|
118
|
+
inputDataRLPList[0].toUint(), // headerNumber
|
|
119
|
+
inputDataRLPList[1].toBytes() // blockProof
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
RLPReader.RLPItem[] memory logTopicRLPList = logRLPList[1].toList(); // topics
|
|
123
|
+
|
|
124
|
+
require(
|
|
125
|
+
bytes32(logTopicRLPList[0].toUint()) == SEND_MESSAGE_EVENT_SIG, // topic0 is event sig
|
|
126
|
+
"FxRootTunnel: INVALID_SIGNATURE"
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
// received message data
|
|
130
|
+
bytes memory receivedData = logRLPList[2].toBytes();
|
|
131
|
+
bytes memory message = abi.decode(receivedData, (bytes)); // event decodes params again, so decoding bytes to get message
|
|
132
|
+
return message;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function _checkBlockMembershipInCheckpoint(
|
|
136
|
+
uint256 blockNumber,
|
|
137
|
+
uint256 blockTime,
|
|
138
|
+
bytes32 txRoot,
|
|
139
|
+
bytes32 receiptRoot,
|
|
140
|
+
uint256 headerNumber,
|
|
141
|
+
bytes memory blockProof
|
|
142
|
+
) private view returns (uint256) {
|
|
143
|
+
(bytes32 headerRoot, uint256 startBlock, , uint256 createdAt, ) = checkpointManager.headerBlocks(headerNumber);
|
|
144
|
+
|
|
145
|
+
require(
|
|
146
|
+
keccak256(abi.encodePacked(blockNumber, blockTime, txRoot, receiptRoot)).checkMembership(
|
|
147
|
+
blockNumber - startBlock,
|
|
148
|
+
headerRoot,
|
|
149
|
+
blockProof
|
|
150
|
+
),
|
|
151
|
+
"FxRootTunnel: INVALID_HEADER"
|
|
152
|
+
);
|
|
153
|
+
return createdAt;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @notice receive message from L2 to L1, validated by proof
|
|
158
|
+
* @dev This function verifies if the transaction actually happened on child chain
|
|
159
|
+
*
|
|
160
|
+
* @param inputData RLP encoded data of the reference tx containing following list of fields
|
|
161
|
+
* 0 - headerNumber - Checkpoint header block number containing the reference tx
|
|
162
|
+
* 1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root
|
|
163
|
+
* 2 - blockNumber - Block number containing the reference tx on child chain
|
|
164
|
+
* 3 - blockTime - Reference tx block time
|
|
165
|
+
* 4 - txRoot - Transactions root of block
|
|
166
|
+
* 5 - receiptRoot - Receipts root of block
|
|
167
|
+
* 6 - receipt - Receipt of the reference transaction
|
|
168
|
+
* 7 - receiptProof - Merkle proof of the reference receipt
|
|
169
|
+
* 8 - branchMask - 32 bits denoting the path of receipt in merkle tree
|
|
170
|
+
* 9 - receiptLogIndex - Log Index to read from the receipt
|
|
171
|
+
*/
|
|
172
|
+
function receiveMessage(bytes memory inputData) public virtual {
|
|
173
|
+
bytes memory message = _validateAndExtractMessage(inputData);
|
|
174
|
+
_processMessageFromChild(message);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @notice Process message received from Child Tunnel
|
|
179
|
+
* @dev function needs to be implemented to handle message as per requirement
|
|
180
|
+
* This is called by onStateReceive function.
|
|
181
|
+
* Since it is called via a system call, any event will not be emitted during its execution.
|
|
182
|
+
* @param message bytes message that was sent from Child Tunnel
|
|
183
|
+
*/
|
|
184
|
+
function _processMessageFromChild(bytes memory message) internal virtual;
|
|
185
|
+
}
|