@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.
Files changed (257) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +661 -0
  3. package/README.md +53 -0
  4. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.dbg.json +4 -0
  5. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.json +252 -0
  6. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.dbg.json +4 -0
  7. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.json +35 -0
  8. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.dbg.json +4 -0
  9. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +110 -0
  10. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.dbg.json +4 -0
  11. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.json +10 -0
  12. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  14. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.json +108 -0
  16. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  18. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.json +50 -0
  20. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +10 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.json +10 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.json +10 -0
  42. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  43. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  44. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.dbg.json +4 -0
  45. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.json +611 -0
  46. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.dbg.json +4 -0
  47. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.json +297 -0
  48. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.dbg.json +4 -0
  49. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.json +29 -0
  50. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.dbg.json +4 -0
  51. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.json +37 -0
  52. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  53. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  54. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  55. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  56. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  57. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  58. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  59. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  60. package/artifacts/build-info/1cd64db7a8ac0a153df93d26826ad4e9.json +1653 -0
  61. package/artifacts/build-info/1f738b56edd7602183f2f8d2f23f6e90.json +1592 -0
  62. package/artifacts/build-info/343b9221be36acd9ddaca3f3b83d2e75.json +3943 -0
  63. package/artifacts/build-info/622e561692c193f4cd0ff989b5a231e2.json +5661 -0
  64. package/artifacts/build-info/8e408b49e0ff2873bc28d45221a7ff71.json +277715 -0
  65. package/artifacts/build-info/9d1a3182633612bd337d811d567d5d60.json +2072 -0
  66. package/artifacts/build-info/a8cd9c443d245fe513d6650634b60f93.json +23776 -0
  67. package/artifacts/build-info/d302d9d63fbafb5c8d635cc62cb1cc7c.json +167529 -0
  68. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.dbg.json +4 -0
  69. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.json +10 -0
  70. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  71. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.json +10 -0
  72. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  73. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  74. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.dbg.json +4 -0
  75. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.json +30 -0
  76. package/artifacts/contracts/common/implementation/Testable.sol/Testable.dbg.json +4 -0
  77. package/artifacts/contracts/common/implementation/Testable.sol/Testable.json +50 -0
  78. package/artifacts/contracts/common/implementation/Timer.sol/Timer.dbg.json +4 -0
  79. package/artifacts/contracts/common/implementation/Timer.sol/Timer.json +42 -0
  80. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.dbg.json +4 -0
  81. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.json +69 -0
  82. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.dbg.json +4 -0
  83. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.json +42 -0
  84. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.dbg.json +4 -0
  85. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.json +235 -0
  86. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  87. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  88. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  89. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  90. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  91. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  92. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.dbg.json +4 -0
  93. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.json +1019 -0
  94. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.dbg.json +4 -0
  95. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.json +314 -0
  96. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.dbg.json +4 -0
  97. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.json +47 -0
  98. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.dbg.json +4 -0
  99. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.json +62 -0
  100. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.dbg.json +4 -0
  101. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.json +65 -0
  102. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.dbg.json +4 -0
  103. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.json +39 -0
  104. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  105. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  106. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  107. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.json +86 -0
  108. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.dbg.json +4 -0
  109. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.json +10 -0
  110. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.dbg.json +4 -0
  111. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.json +10 -0
  112. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.dbg.json +4 -0
  113. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.json +10 -0
  114. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.dbg.json +4 -0
  115. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.json +104 -0
  116. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.dbg.json +4 -0
  117. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.json +34 -0
  118. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.dbg.json +4 -0
  119. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.json +29 -0
  120. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.dbg.json +4 -0
  121. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.json +79 -0
  122. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.dbg.json +4 -0
  123. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.json +29 -0
  124. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.dbg.json +4 -0
  125. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.json +29 -0
  126. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.dbg.json +4 -0
  127. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.json +54 -0
  128. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.dbg.json +4 -0
  129. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.json +86 -0
  130. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.dbg.json +4 -0
  131. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.json +34 -0
  132. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.dbg.json +4 -0
  133. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.json +108 -0
  134. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.dbg.json +4 -0
  135. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.json +50 -0
  136. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.dbg.json +4 -0
  137. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.json +29 -0
  138. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.json +662 -0
  140. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.dbg.json +4 -0
  141. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.json +391 -0
  142. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.dbg.json +4 -0
  143. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.json +30 -0
  144. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.dbg.json +4 -0
  145. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.json +31 -0
  146. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.dbg.json +4 -0
  147. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.json +1709 -0
  148. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.dbg.json +4 -0
  149. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.json +1709 -0
  150. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.dbg.json +4 -0
  151. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.json +31 -0
  152. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.dbg.json +4 -0
  153. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.json +564 -0
  154. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.dbg.json +4 -0
  155. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.json +45 -0
  156. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  157. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  158. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.dbg.json +4 -0
  159. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.json +191 -0
  160. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.dbg.json +4 -0
  161. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.json +319 -0
  162. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.dbg.json +4 -0
  163. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.json +63 -0
  164. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.dbg.json +4 -0
  165. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.json +54 -0
  166. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.dbg.json +4 -0
  167. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.json +528 -0
  168. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  169. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  170. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.dbg.json +4 -0
  171. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.json +572 -0
  172. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.dbg.json +4 -0
  173. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.json +130 -0
  174. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.dbg.json +4 -0
  175. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.json +142 -0
  176. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.dbg.json +4 -0
  177. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.json +55 -0
  178. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  179. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.json +86 -0
  180. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.dbg.json +4 -0
  181. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.json +68 -0
  182. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.dbg.json +4 -0
  183. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.json +78 -0
  184. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.dbg.json +4 -0
  185. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.json +24 -0
  186. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.dbg.json +4 -0
  187. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.json +510 -0
  188. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.dbg.json +4 -0
  189. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.json +85 -0
  190. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.dbg.json +4 -0
  191. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.json +110 -0
  192. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.dbg.json +4 -0
  193. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.json +24 -0
  194. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.dbg.json +4 -0
  195. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.json +141 -0
  196. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.dbg.json +4 -0
  197. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.json +48 -0
  198. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.dbg.json +4 -0
  199. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.json +56 -0
  200. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.dbg.json +4 -0
  201. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.json +555 -0
  202. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.dbg.json +4 -0
  203. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.json +853 -0
  204. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.dbg.json +4 -0
  205. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.json +124 -0
  206. package/contracts/common/implementation/AncillaryData.sol +144 -0
  207. package/contracts/common/implementation/FixedPoint.sol +763 -0
  208. package/contracts/common/implementation/Lockable.sol +61 -0
  209. package/contracts/common/implementation/MultiCaller.sol +27 -0
  210. package/contracts/common/implementation/Testable.sol +52 -0
  211. package/contracts/common/implementation/Timer.sol +30 -0
  212. package/contracts/common/interfaces/AddressWhitelistInterface.sol +12 -0
  213. package/contracts/external/avm/AVM_CrossDomainEnabled.sol +43 -0
  214. package/contracts/external/avm/interfaces/ArbSys.sol +79 -0
  215. package/contracts/external/avm/interfaces/iArbitrum_Inbox.sol +28 -0
  216. package/contracts/external/avm/interfaces/iArbitrum_Outbox.sol +26 -0
  217. package/contracts/external/chainbridge/Bridge.sol +454 -0
  218. package/contracts/external/chainbridge/handlers/GenericHandler.sol +237 -0
  219. package/contracts/external/chainbridge/interfaces/IBridge.sol +20 -0
  220. package/contracts/external/chainbridge/interfaces/IDepositExecute.sol +29 -0
  221. package/contracts/external/chainbridge/interfaces/IERCHandler.sol +33 -0
  222. package/contracts/external/chainbridge/interfaces/IGenericHandler.sol +23 -0
  223. package/contracts/external/ovm/OVM_CrossDomainEnabled.sol +114 -0
  224. package/contracts/external/polygon/lib/Merkle.sol +36 -0
  225. package/contracts/external/polygon/lib/MerklePatriciaProof.sol +139 -0
  226. package/contracts/external/polygon/lib/RLPReader.sol +251 -0
  227. package/contracts/external/polygon/test/FxChildMock.sol +42 -0
  228. package/contracts/external/polygon/test/FxRootMock.sol +32 -0
  229. package/contracts/external/polygon/test/StateSyncMock.sol +26 -0
  230. package/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol +80 -0
  231. package/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol +185 -0
  232. package/contracts/insured-bridge/BridgeAdmin.sol +394 -0
  233. package/contracts/insured-bridge/BridgeDepositBox.sol +245 -0
  234. package/contracts/insured-bridge/BridgePool.sol +980 -0
  235. package/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol +144 -0
  236. package/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol +67 -0
  237. package/contracts/insured-bridge/avm/Arbitrum_Messenger.sol +72 -0
  238. package/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol +44 -0
  239. package/contracts/insured-bridge/interfaces/BridgePoolInterface.sol +14 -0
  240. package/contracts/insured-bridge/interfaces/MessengerInterface.sol +18 -0
  241. package/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol +135 -0
  242. package/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol +84 -0
  243. package/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol +89 -0
  244. package/contracts/insured-bridge/ovm/Optimism_Messenger.sol +34 -0
  245. package/contracts/insured-bridge/ovm/Optimism_Wrapper.sol +59 -0
  246. package/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol +41 -0
  247. package/contracts/insured-bridge/test/Arbitrum_InboxMock.sol +50 -0
  248. package/contracts/insured-bridge/test/BridgeDepositBoxMock.sol +113 -0
  249. package/contracts/insured-bridge/test/MessengerMock.sol +32 -0
  250. package/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol +16 -0
  251. package/contracts/oracle/implementation/Constants.sol +29 -0
  252. package/contracts/oracle/interfaces/FinderInterface.sol +22 -0
  253. package/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol +28 -0
  254. package/contracts/oracle/interfaces/OptimisticOracleInterface.sol +263 -0
  255. package/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol +251 -0
  256. package/contracts/oracle/interfaces/StoreInterface.sol +46 -0
  257. package/package.json +60 -0
@@ -0,0 +1,2072 @@
1
+ {
2
+ "id": "9d1a3182633612bd337d811d567d5d60",
3
+ "_format": "hh-sol-build-info-1",
4
+ "solcVersion": "0.8.9",
5
+ "solcLongVersion": "0.8.9+commit.e5eed63a",
6
+ "input": {
7
+ "language": "Solidity",
8
+ "sources": {
9
+ "contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol": {
10
+ "content": "// Copied directly from https://github.com/ethereum-optimism/optimism/blob/7ffb83509c589bd35c2e5f9cb2c6ccbd5f346175/packages/contracts/contracts/optimistic-ethereum/iOVM/bridge/messaging/iOVM_CrossDomainMessenger.sol\n// with a change to the solidity version. Old line is commented out for transparency.\n\n// SPDX-License-Identifier: MIT\n// pragma solidity >0.5.0 <0.8.0;\npragma solidity ^0.8.0;\n\n/**\n * @title iOVM_CrossDomainMessenger\n */\ninterface iOVM_CrossDomainMessenger {\n /**********\n * Events *\n **********/\n\n event SentMessage(bytes message);\n event RelayedMessage(bytes32 msgHash);\n event FailedRelayedMessage(bytes32 msgHash);\n\n /*************\n * Variables *\n *************/\n\n function xDomainMessageSender() external view returns (address);\n\n /********************\n * Public Functions *\n ********************/\n\n /**\n * Sends a cross domain message to the target messenger.\n * @param _target Target contract address.\n * @param _message Message to send to the target.\n * @param _gasLimit Gas limit for the provided message.\n */\n function sendMessage(\n address _target,\n bytes calldata _message,\n uint32 _gasLimit\n ) external;\n}\n"
11
+ },
12
+ "contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol": {
13
+ "content": "// Copied directly from https://github.com/ethereum-optimism/optimism/blob/7ffb83509c589bd35c2e5f9cb2c6ccbd5f346175/packages/contracts/contracts/optimistic-ethereum/libraries/bridge/OVM_CrossDomainEnabled.sol\n// with a change to the solidity version. Old line is commented out for transparency.\n\n// SPDX-License-Identifier: MIT\n// pragma solidity >0.5.0 <0.8.0;\npragma solidity ^0.8.0;\n\n/* Interface Imports */\nimport \"./iOVM_CrossDomainMessenger.sol\";\n\n/**\n * @title OVM_CrossDomainEnabled\n * @dev Helper contract for contracts performing cross-domain communications\n *\n * Compiler used: defined by inheriting contract\n * Runtime target: defined by inheriting contract\n */\ncontract OVM_CrossDomainEnabled {\n /*************\n * Variables *\n *************/\n\n // Messenger contract used to send and recieve messages from the other domain.\n address public messenger;\n\n /***************\n * Constructor *\n ***************/\n\n /**\n * @param _messenger Address of the CrossDomainMessenger on the current layer.\n */\n constructor(address _messenger) {\n messenger = _messenger;\n }\n\n /**********************\n * Function Modifiers *\n **********************/\n\n /**\n * Enforces that the modified function is only callable by a specific cross-domain account.\n * @param _sourceDomainAccount The only account on the originating domain which is\n * authenticated to call this function.\n */\n modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\n require(msg.sender == address(getCrossDomainMessenger()), \"OVM_XCHAIN: messenger contract unauthenticated\");\n\n require(\n getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\n \"OVM_XCHAIN: wrong sender of cross-domain message\"\n );\n\n _;\n }\n\n /**********************\n * Internal Functions *\n **********************/\n\n /**\n * Gets the messenger, usually from storage. This function is exposed in case a child contract\n * needs to override.\n * @return The address of the cross-domain messenger contract which should be used.\n */\n function getCrossDomainMessenger() internal virtual returns (iOVM_CrossDomainMessenger) {\n return iOVM_CrossDomainMessenger(messenger);\n }\n\n /**\n * Sends a message to an account on another domain\n * @param _crossDomainTarget The intended recipient on the destination domain\n * @param _message The data to send to the target (usually calldata to a function with\n * `onlyFromCrossDomainAccount()`)\n * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\n */\n function sendCrossDomainMessage(\n address _crossDomainTarget,\n uint32 _gasLimit,\n bytes memory _message\n ) internal {\n getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\n }\n}\n"
14
+ }
15
+ },
16
+ "settings": {
17
+ "optimizer": {
18
+ "enabled": true,
19
+ "runs": 1000000
20
+ },
21
+ "outputSelection": {
22
+ "*": {
23
+ "*": [
24
+ "abi",
25
+ "evm.bytecode",
26
+ "evm.deployedBytecode",
27
+ "evm.methodIdentifiers",
28
+ "metadata",
29
+ "devdoc",
30
+ "userdoc",
31
+ "storageLayout",
32
+ "evm.gasEstimates"
33
+ ],
34
+ "": [
35
+ "ast"
36
+ ]
37
+ }
38
+ },
39
+ "metadata": {
40
+ "useLiteralContent": true
41
+ }
42
+ }
43
+ },
44
+ "output": {
45
+ "contracts": {
46
+ "contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol": {
47
+ "OVM_CrossDomainEnabled": {
48
+ "abi": [
49
+ {
50
+ "inputs": [
51
+ {
52
+ "internalType": "address",
53
+ "name": "_messenger",
54
+ "type": "address"
55
+ }
56
+ ],
57
+ "stateMutability": "nonpayable",
58
+ "type": "constructor"
59
+ },
60
+ {
61
+ "inputs": [],
62
+ "name": "messenger",
63
+ "outputs": [
64
+ {
65
+ "internalType": "address",
66
+ "name": "",
67
+ "type": "address"
68
+ }
69
+ ],
70
+ "stateMutability": "view",
71
+ "type": "function"
72
+ }
73
+ ],
74
+ "devdoc": {
75
+ "details": "Helper contract for contracts performing cross-domain communications Compiler used: defined by inheriting contract Runtime target: defined by inheriting contract",
76
+ "kind": "dev",
77
+ "methods": {
78
+ "constructor": {
79
+ "params": {
80
+ "_messenger": "Address of the CrossDomainMessenger on the current layer."
81
+ }
82
+ }
83
+ },
84
+ "title": "OVM_CrossDomainEnabled",
85
+ "version": 1
86
+ },
87
+ "evm": {
88
+ "bytecode": {
89
+ "functionDebugData": {
90
+ "@_16": {
91
+ "entryPoint": null,
92
+ "id": 16,
93
+ "parameterSlots": 1,
94
+ "returnSlots": 0
95
+ },
96
+ "abi_decode_tuple_t_address_fromMemory": {
97
+ "entryPoint": 84,
98
+ "id": null,
99
+ "parameterSlots": 2,
100
+ "returnSlots": 1
101
+ }
102
+ },
103
+ "generatedSources": [
104
+ {
105
+ "ast": {
106
+ "nodeType": "YulBlock",
107
+ "src": "0:306:2",
108
+ "statements": [
109
+ {
110
+ "nodeType": "YulBlock",
111
+ "src": "6:3:2",
112
+ "statements": []
113
+ },
114
+ {
115
+ "body": {
116
+ "nodeType": "YulBlock",
117
+ "src": "95:209:2",
118
+ "statements": [
119
+ {
120
+ "body": {
121
+ "nodeType": "YulBlock",
122
+ "src": "141:16:2",
123
+ "statements": [
124
+ {
125
+ "expression": {
126
+ "arguments": [
127
+ {
128
+ "kind": "number",
129
+ "nodeType": "YulLiteral",
130
+ "src": "150:1:2",
131
+ "type": "",
132
+ "value": "0"
133
+ },
134
+ {
135
+ "kind": "number",
136
+ "nodeType": "YulLiteral",
137
+ "src": "153:1:2",
138
+ "type": "",
139
+ "value": "0"
140
+ }
141
+ ],
142
+ "functionName": {
143
+ "name": "revert",
144
+ "nodeType": "YulIdentifier",
145
+ "src": "143:6:2"
146
+ },
147
+ "nodeType": "YulFunctionCall",
148
+ "src": "143:12:2"
149
+ },
150
+ "nodeType": "YulExpressionStatement",
151
+ "src": "143:12:2"
152
+ }
153
+ ]
154
+ },
155
+ "condition": {
156
+ "arguments": [
157
+ {
158
+ "arguments": [
159
+ {
160
+ "name": "dataEnd",
161
+ "nodeType": "YulIdentifier",
162
+ "src": "116:7:2"
163
+ },
164
+ {
165
+ "name": "headStart",
166
+ "nodeType": "YulIdentifier",
167
+ "src": "125:9:2"
168
+ }
169
+ ],
170
+ "functionName": {
171
+ "name": "sub",
172
+ "nodeType": "YulIdentifier",
173
+ "src": "112:3:2"
174
+ },
175
+ "nodeType": "YulFunctionCall",
176
+ "src": "112:23:2"
177
+ },
178
+ {
179
+ "kind": "number",
180
+ "nodeType": "YulLiteral",
181
+ "src": "137:2:2",
182
+ "type": "",
183
+ "value": "32"
184
+ }
185
+ ],
186
+ "functionName": {
187
+ "name": "slt",
188
+ "nodeType": "YulIdentifier",
189
+ "src": "108:3:2"
190
+ },
191
+ "nodeType": "YulFunctionCall",
192
+ "src": "108:32:2"
193
+ },
194
+ "nodeType": "YulIf",
195
+ "src": "105:52:2"
196
+ },
197
+ {
198
+ "nodeType": "YulVariableDeclaration",
199
+ "src": "166:29:2",
200
+ "value": {
201
+ "arguments": [
202
+ {
203
+ "name": "headStart",
204
+ "nodeType": "YulIdentifier",
205
+ "src": "185:9:2"
206
+ }
207
+ ],
208
+ "functionName": {
209
+ "name": "mload",
210
+ "nodeType": "YulIdentifier",
211
+ "src": "179:5:2"
212
+ },
213
+ "nodeType": "YulFunctionCall",
214
+ "src": "179:16:2"
215
+ },
216
+ "variables": [
217
+ {
218
+ "name": "value",
219
+ "nodeType": "YulTypedName",
220
+ "src": "170:5:2",
221
+ "type": ""
222
+ }
223
+ ]
224
+ },
225
+ {
226
+ "body": {
227
+ "nodeType": "YulBlock",
228
+ "src": "258:16:2",
229
+ "statements": [
230
+ {
231
+ "expression": {
232
+ "arguments": [
233
+ {
234
+ "kind": "number",
235
+ "nodeType": "YulLiteral",
236
+ "src": "267:1:2",
237
+ "type": "",
238
+ "value": "0"
239
+ },
240
+ {
241
+ "kind": "number",
242
+ "nodeType": "YulLiteral",
243
+ "src": "270:1:2",
244
+ "type": "",
245
+ "value": "0"
246
+ }
247
+ ],
248
+ "functionName": {
249
+ "name": "revert",
250
+ "nodeType": "YulIdentifier",
251
+ "src": "260:6:2"
252
+ },
253
+ "nodeType": "YulFunctionCall",
254
+ "src": "260:12:2"
255
+ },
256
+ "nodeType": "YulExpressionStatement",
257
+ "src": "260:12:2"
258
+ }
259
+ ]
260
+ },
261
+ "condition": {
262
+ "arguments": [
263
+ {
264
+ "arguments": [
265
+ {
266
+ "name": "value",
267
+ "nodeType": "YulIdentifier",
268
+ "src": "217:5:2"
269
+ },
270
+ {
271
+ "arguments": [
272
+ {
273
+ "name": "value",
274
+ "nodeType": "YulIdentifier",
275
+ "src": "228:5:2"
276
+ },
277
+ {
278
+ "arguments": [
279
+ {
280
+ "arguments": [
281
+ {
282
+ "kind": "number",
283
+ "nodeType": "YulLiteral",
284
+ "src": "243:3:2",
285
+ "type": "",
286
+ "value": "160"
287
+ },
288
+ {
289
+ "kind": "number",
290
+ "nodeType": "YulLiteral",
291
+ "src": "248:1:2",
292
+ "type": "",
293
+ "value": "1"
294
+ }
295
+ ],
296
+ "functionName": {
297
+ "name": "shl",
298
+ "nodeType": "YulIdentifier",
299
+ "src": "239:3:2"
300
+ },
301
+ "nodeType": "YulFunctionCall",
302
+ "src": "239:11:2"
303
+ },
304
+ {
305
+ "kind": "number",
306
+ "nodeType": "YulLiteral",
307
+ "src": "252:1:2",
308
+ "type": "",
309
+ "value": "1"
310
+ }
311
+ ],
312
+ "functionName": {
313
+ "name": "sub",
314
+ "nodeType": "YulIdentifier",
315
+ "src": "235:3:2"
316
+ },
317
+ "nodeType": "YulFunctionCall",
318
+ "src": "235:19:2"
319
+ }
320
+ ],
321
+ "functionName": {
322
+ "name": "and",
323
+ "nodeType": "YulIdentifier",
324
+ "src": "224:3:2"
325
+ },
326
+ "nodeType": "YulFunctionCall",
327
+ "src": "224:31:2"
328
+ }
329
+ ],
330
+ "functionName": {
331
+ "name": "eq",
332
+ "nodeType": "YulIdentifier",
333
+ "src": "214:2:2"
334
+ },
335
+ "nodeType": "YulFunctionCall",
336
+ "src": "214:42:2"
337
+ }
338
+ ],
339
+ "functionName": {
340
+ "name": "iszero",
341
+ "nodeType": "YulIdentifier",
342
+ "src": "207:6:2"
343
+ },
344
+ "nodeType": "YulFunctionCall",
345
+ "src": "207:50:2"
346
+ },
347
+ "nodeType": "YulIf",
348
+ "src": "204:70:2"
349
+ },
350
+ {
351
+ "nodeType": "YulAssignment",
352
+ "src": "283:15:2",
353
+ "value": {
354
+ "name": "value",
355
+ "nodeType": "YulIdentifier",
356
+ "src": "293:5:2"
357
+ },
358
+ "variableNames": [
359
+ {
360
+ "name": "value0",
361
+ "nodeType": "YulIdentifier",
362
+ "src": "283:6:2"
363
+ }
364
+ ]
365
+ }
366
+ ]
367
+ },
368
+ "name": "abi_decode_tuple_t_address_fromMemory",
369
+ "nodeType": "YulFunctionDefinition",
370
+ "parameters": [
371
+ {
372
+ "name": "headStart",
373
+ "nodeType": "YulTypedName",
374
+ "src": "61:9:2",
375
+ "type": ""
376
+ },
377
+ {
378
+ "name": "dataEnd",
379
+ "nodeType": "YulTypedName",
380
+ "src": "72:7:2",
381
+ "type": ""
382
+ }
383
+ ],
384
+ "returnVariables": [
385
+ {
386
+ "name": "value0",
387
+ "nodeType": "YulTypedName",
388
+ "src": "84:6:2",
389
+ "type": ""
390
+ }
391
+ ],
392
+ "src": "14:290:2"
393
+ }
394
+ ]
395
+ },
396
+ "contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
397
+ "id": 2,
398
+ "language": "Yul",
399
+ "name": "#utility.yul"
400
+ }
401
+ ],
402
+ "linkReferences": {},
403
+ "object": "608060405234801561001057600080fd5b5060405161013d38038061013d83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b60ab806100926000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633cb747bf14602d575b600080fd5b600054604c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212202055864bbb4cd208501aacf87d72cfb62682da21a8cbdc69912af029402bae1c64736f6c63430008090033",
404
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13D CODESIZE SUB DUP1 PUSH2 0x13D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xAB DUP1 PUSH2 0x92 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CB747BF EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x4C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 SSTORE DUP7 0x4B 0xBB 0x4C 0xD2 ADDMOD POP BYTE 0xAC 0xF8 PUSH30 0x72CFB62682DA21A8CBDC69912AF029402BAE1C64736F6C63430008090033 ",
405
+ "sourceMap": "674:2248:0:-:0;;;1049:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1091:9;:22;;-1:-1:-1;;;;;;1091:22:0;-1:-1:-1;;;;;1091:22:0;;;;;;;;;;674:2248;;14:290:2;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:2;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:2:o;:::-;674:2248:0;;;;;;"
406
+ },
407
+ "deployedBytecode": {
408
+ "functionDebugData": {
409
+ "@messenger_5": {
410
+ "entryPoint": null,
411
+ "id": 5,
412
+ "parameterSlots": 0,
413
+ "returnSlots": 0
414
+ },
415
+ "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
416
+ "entryPoint": null,
417
+ "id": null,
418
+ "parameterSlots": 2,
419
+ "returnSlots": 1
420
+ }
421
+ },
422
+ "generatedSources": [
423
+ {
424
+ "ast": {
425
+ "nodeType": "YulBlock",
426
+ "src": "0:242:2",
427
+ "statements": [
428
+ {
429
+ "nodeType": "YulBlock",
430
+ "src": "6:3:2",
431
+ "statements": []
432
+ },
433
+ {
434
+ "body": {
435
+ "nodeType": "YulBlock",
436
+ "src": "115:125:2",
437
+ "statements": [
438
+ {
439
+ "nodeType": "YulAssignment",
440
+ "src": "125:26:2",
441
+ "value": {
442
+ "arguments": [
443
+ {
444
+ "name": "headStart",
445
+ "nodeType": "YulIdentifier",
446
+ "src": "137:9:2"
447
+ },
448
+ {
449
+ "kind": "number",
450
+ "nodeType": "YulLiteral",
451
+ "src": "148:2:2",
452
+ "type": "",
453
+ "value": "32"
454
+ }
455
+ ],
456
+ "functionName": {
457
+ "name": "add",
458
+ "nodeType": "YulIdentifier",
459
+ "src": "133:3:2"
460
+ },
461
+ "nodeType": "YulFunctionCall",
462
+ "src": "133:18:2"
463
+ },
464
+ "variableNames": [
465
+ {
466
+ "name": "tail",
467
+ "nodeType": "YulIdentifier",
468
+ "src": "125:4:2"
469
+ }
470
+ ]
471
+ },
472
+ {
473
+ "expression": {
474
+ "arguments": [
475
+ {
476
+ "name": "headStart",
477
+ "nodeType": "YulIdentifier",
478
+ "src": "167:9:2"
479
+ },
480
+ {
481
+ "arguments": [
482
+ {
483
+ "name": "value0",
484
+ "nodeType": "YulIdentifier",
485
+ "src": "182:6:2"
486
+ },
487
+ {
488
+ "kind": "number",
489
+ "nodeType": "YulLiteral",
490
+ "src": "190:42:2",
491
+ "type": "",
492
+ "value": "0xffffffffffffffffffffffffffffffffffffffff"
493
+ }
494
+ ],
495
+ "functionName": {
496
+ "name": "and",
497
+ "nodeType": "YulIdentifier",
498
+ "src": "178:3:2"
499
+ },
500
+ "nodeType": "YulFunctionCall",
501
+ "src": "178:55:2"
502
+ }
503
+ ],
504
+ "functionName": {
505
+ "name": "mstore",
506
+ "nodeType": "YulIdentifier",
507
+ "src": "160:6:2"
508
+ },
509
+ "nodeType": "YulFunctionCall",
510
+ "src": "160:74:2"
511
+ },
512
+ "nodeType": "YulExpressionStatement",
513
+ "src": "160:74:2"
514
+ }
515
+ ]
516
+ },
517
+ "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
518
+ "nodeType": "YulFunctionDefinition",
519
+ "parameters": [
520
+ {
521
+ "name": "headStart",
522
+ "nodeType": "YulTypedName",
523
+ "src": "84:9:2",
524
+ "type": ""
525
+ },
526
+ {
527
+ "name": "value0",
528
+ "nodeType": "YulTypedName",
529
+ "src": "95:6:2",
530
+ "type": ""
531
+ }
532
+ ],
533
+ "returnVariables": [
534
+ {
535
+ "name": "tail",
536
+ "nodeType": "YulTypedName",
537
+ "src": "106:4:2",
538
+ "type": ""
539
+ }
540
+ ],
541
+ "src": "14:226:2"
542
+ }
543
+ ]
544
+ },
545
+ "contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}",
546
+ "id": 2,
547
+ "language": "Yul",
548
+ "name": "#utility.yul"
549
+ }
550
+ ],
551
+ "immutableReferences": {},
552
+ "linkReferences": {},
553
+ "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80633cb747bf14602d575b600080fd5b600054604c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212202055864bbb4cd208501aacf87d72cfb62682da21a8cbdc69912af029402bae1c64736f6c63430008090033",
554
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CB747BF EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x4C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 SSTORE DUP7 0x4B 0xBB 0x4C 0xD2 ADDMOD POP BYTE 0xAC 0xF8 PUSH30 0x72CFB62682DA21A8CBDC69912AF029402BAE1C64736F6C63430008090033 ",
555
+ "sourceMap": "674:2248:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;854:24;;;;;;;;;;;;190:42:2;178:55;;;160:74;;148:2;133:18;854:24:0;;;;;;"
556
+ },
557
+ "gasEstimates": {
558
+ "creation": {
559
+ "codeDepositCost": "34200",
560
+ "executionCost": "infinite",
561
+ "totalCost": "infinite"
562
+ },
563
+ "external": {
564
+ "messenger()": "2279"
565
+ },
566
+ "internal": {
567
+ "getCrossDomainMessenger()": "infinite",
568
+ "sendCrossDomainMessage(address,uint32,bytes memory)": "infinite"
569
+ }
570
+ },
571
+ "methodIdentifiers": {
572
+ "messenger()": "3cb747bf"
573
+ }
574
+ },
575
+ "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_messenger\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Helper contract for contracts performing cross-domain communications Compiler used: defined by inheriting contract Runtime target: defined by inheriting contract\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_messenger\":\"Address of the CrossDomainMessenger on the current layer.\"}}},\"title\":\"OVM_CrossDomainEnabled\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol\":\"OVM_CrossDomainEnabled\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol\":{\"content\":\"// Copied directly from https://github.com/ethereum-optimism/optimism/blob/7ffb83509c589bd35c2e5f9cb2c6ccbd5f346175/packages/contracts/contracts/optimistic-ethereum/libraries/bridge/OVM_CrossDomainEnabled.sol\\n// with a change to the solidity version. Old line is commented out for transparency.\\n\\n// SPDX-License-Identifier: MIT\\n// pragma solidity >0.5.0 <0.8.0;\\npragma solidity ^0.8.0;\\n\\n/* Interface Imports */\\nimport \\\"./iOVM_CrossDomainMessenger.sol\\\";\\n\\n/**\\n * @title OVM_CrossDomainEnabled\\n * @dev Helper contract for contracts performing cross-domain communications\\n *\\n * Compiler used: defined by inheriting contract\\n * Runtime target: defined by inheriting contract\\n */\\ncontract OVM_CrossDomainEnabled {\\n /*************\\n * Variables *\\n *************/\\n\\n // Messenger contract used to send and recieve messages from the other domain.\\n address public messenger;\\n\\n /***************\\n * Constructor *\\n ***************/\\n\\n /**\\n * @param _messenger Address of the CrossDomainMessenger on the current layer.\\n */\\n constructor(address _messenger) {\\n messenger = _messenger;\\n }\\n\\n /**********************\\n * Function Modifiers *\\n **********************/\\n\\n /**\\n * Enforces that the modified function is only callable by a specific cross-domain account.\\n * @param _sourceDomainAccount The only account on the originating domain which is\\n * authenticated to call this function.\\n */\\n modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\\n require(msg.sender == address(getCrossDomainMessenger()), \\\"OVM_XCHAIN: messenger contract unauthenticated\\\");\\n\\n require(\\n getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\\n \\\"OVM_XCHAIN: wrong sender of cross-domain message\\\"\\n );\\n\\n _;\\n }\\n\\n /**********************\\n * Internal Functions *\\n **********************/\\n\\n /**\\n * Gets the messenger, usually from storage. This function is exposed in case a child contract\\n * needs to override.\\n * @return The address of the cross-domain messenger contract which should be used.\\n */\\n function getCrossDomainMessenger() internal virtual returns (iOVM_CrossDomainMessenger) {\\n return iOVM_CrossDomainMessenger(messenger);\\n }\\n\\n /**\\n * Sends a message to an account on another domain\\n * @param _crossDomainTarget The intended recipient on the destination domain\\n * @param _message The data to send to the target (usually calldata to a function with\\n * `onlyFromCrossDomainAccount()`)\\n * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\\n */\\n function sendCrossDomainMessage(\\n address _crossDomainTarget,\\n uint32 _gasLimit,\\n bytes memory _message\\n ) internal {\\n getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\\n }\\n}\\n\",\"keccak256\":\"0xee9562fd7f450be9701e72c094077087860152a5f81bf049408482a9ae849629\",\"license\":\"MIT\"},\"contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol\":{\"content\":\"// Copied directly from https://github.com/ethereum-optimism/optimism/blob/7ffb83509c589bd35c2e5f9cb2c6ccbd5f346175/packages/contracts/contracts/optimistic-ethereum/iOVM/bridge/messaging/iOVM_CrossDomainMessenger.sol\\n// with a change to the solidity version. Old line is commented out for transparency.\\n\\n// SPDX-License-Identifier: MIT\\n// pragma solidity >0.5.0 <0.8.0;\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title iOVM_CrossDomainMessenger\\n */\\ninterface iOVM_CrossDomainMessenger {\\n /**********\\n * Events *\\n **********/\\n\\n event SentMessage(bytes message);\\n event RelayedMessage(bytes32 msgHash);\\n event FailedRelayedMessage(bytes32 msgHash);\\n\\n /*************\\n * Variables *\\n *************/\\n\\n function xDomainMessageSender() external view returns (address);\\n\\n /********************\\n * Public Functions *\\n ********************/\\n\\n /**\\n * Sends a cross domain message to the target messenger.\\n * @param _target Target contract address.\\n * @param _message Message to send to the target.\\n * @param _gasLimit Gas limit for the provided message.\\n */\\n function sendMessage(\\n address _target,\\n bytes calldata _message,\\n uint32 _gasLimit\\n ) external;\\n}\\n\",\"keccak256\":\"0x47be9de0b65d3b404f2a26cb6d6bf21f8f3c7b08630a7f15421799348f0ab597\",\"license\":\"MIT\"}},\"version\":1}",
576
+ "storageLayout": {
577
+ "storage": [
578
+ {
579
+ "astId": 5,
580
+ "contract": "contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol:OVM_CrossDomainEnabled",
581
+ "label": "messenger",
582
+ "offset": 0,
583
+ "slot": "0",
584
+ "type": "t_address"
585
+ }
586
+ ],
587
+ "types": {
588
+ "t_address": {
589
+ "encoding": "inplace",
590
+ "label": "address",
591
+ "numberOfBytes": "20"
592
+ }
593
+ }
594
+ },
595
+ "userdoc": {
596
+ "kind": "user",
597
+ "methods": {},
598
+ "version": 1
599
+ }
600
+ }
601
+ },
602
+ "contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol": {
603
+ "iOVM_CrossDomainMessenger": {
604
+ "abi": [
605
+ {
606
+ "anonymous": false,
607
+ "inputs": [
608
+ {
609
+ "indexed": false,
610
+ "internalType": "bytes32",
611
+ "name": "msgHash",
612
+ "type": "bytes32"
613
+ }
614
+ ],
615
+ "name": "FailedRelayedMessage",
616
+ "type": "event"
617
+ },
618
+ {
619
+ "anonymous": false,
620
+ "inputs": [
621
+ {
622
+ "indexed": false,
623
+ "internalType": "bytes32",
624
+ "name": "msgHash",
625
+ "type": "bytes32"
626
+ }
627
+ ],
628
+ "name": "RelayedMessage",
629
+ "type": "event"
630
+ },
631
+ {
632
+ "anonymous": false,
633
+ "inputs": [
634
+ {
635
+ "indexed": false,
636
+ "internalType": "bytes",
637
+ "name": "message",
638
+ "type": "bytes"
639
+ }
640
+ ],
641
+ "name": "SentMessage",
642
+ "type": "event"
643
+ },
644
+ {
645
+ "inputs": [
646
+ {
647
+ "internalType": "address",
648
+ "name": "_target",
649
+ "type": "address"
650
+ },
651
+ {
652
+ "internalType": "bytes",
653
+ "name": "_message",
654
+ "type": "bytes"
655
+ },
656
+ {
657
+ "internalType": "uint32",
658
+ "name": "_gasLimit",
659
+ "type": "uint32"
660
+ }
661
+ ],
662
+ "name": "sendMessage",
663
+ "outputs": [],
664
+ "stateMutability": "nonpayable",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "inputs": [],
669
+ "name": "xDomainMessageSender",
670
+ "outputs": [
671
+ {
672
+ "internalType": "address",
673
+ "name": "",
674
+ "type": "address"
675
+ }
676
+ ],
677
+ "stateMutability": "view",
678
+ "type": "function"
679
+ }
680
+ ],
681
+ "devdoc": {
682
+ "kind": "dev",
683
+ "methods": {
684
+ "sendMessage(address,bytes,uint32)": {
685
+ "params": {
686
+ "_gasLimit": "Gas limit for the provided message.",
687
+ "_message": "Message to send to the target.",
688
+ "_target": "Target contract address."
689
+ }
690
+ }
691
+ },
692
+ "title": "iOVM_CrossDomainMessenger",
693
+ "version": 1
694
+ },
695
+ "evm": {
696
+ "bytecode": {
697
+ "functionDebugData": {},
698
+ "generatedSources": [],
699
+ "linkReferences": {},
700
+ "object": "",
701
+ "opcodes": "",
702
+ "sourceMap": ""
703
+ },
704
+ "deployedBytecode": {
705
+ "functionDebugData": {},
706
+ "generatedSources": [],
707
+ "immutableReferences": {},
708
+ "linkReferences": {},
709
+ "object": "",
710
+ "opcodes": "",
711
+ "sourceMap": ""
712
+ },
713
+ "gasEstimates": null,
714
+ "methodIdentifiers": {
715
+ "sendMessage(address,bytes,uint32)": "3dbb202b",
716
+ "xDomainMessageSender()": "6e296e45"
717
+ }
718
+ },
719
+ "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_gasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"sendMessage(address,bytes,uint32)\":{\"params\":{\"_gasLimit\":\"Gas limit for the provided message.\",\"_message\":\"Message to send to the target.\",\"_target\":\"Target contract address.\"}}},\"title\":\"iOVM_CrossDomainMessenger\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"sendMessage(address,bytes,uint32)\":{\"notice\":\"Sends a cross domain message to the target messenger.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol\":\"iOVM_CrossDomainMessenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol\":{\"content\":\"// Copied directly from https://github.com/ethereum-optimism/optimism/blob/7ffb83509c589bd35c2e5f9cb2c6ccbd5f346175/packages/contracts/contracts/optimistic-ethereum/iOVM/bridge/messaging/iOVM_CrossDomainMessenger.sol\\n// with a change to the solidity version. Old line is commented out for transparency.\\n\\n// SPDX-License-Identifier: MIT\\n// pragma solidity >0.5.0 <0.8.0;\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title iOVM_CrossDomainMessenger\\n */\\ninterface iOVM_CrossDomainMessenger {\\n /**********\\n * Events *\\n **********/\\n\\n event SentMessage(bytes message);\\n event RelayedMessage(bytes32 msgHash);\\n event FailedRelayedMessage(bytes32 msgHash);\\n\\n /*************\\n * Variables *\\n *************/\\n\\n function xDomainMessageSender() external view returns (address);\\n\\n /********************\\n * Public Functions *\\n ********************/\\n\\n /**\\n * Sends a cross domain message to the target messenger.\\n * @param _target Target contract address.\\n * @param _message Message to send to the target.\\n * @param _gasLimit Gas limit for the provided message.\\n */\\n function sendMessage(\\n address _target,\\n bytes calldata _message,\\n uint32 _gasLimit\\n ) external;\\n}\\n\",\"keccak256\":\"0x47be9de0b65d3b404f2a26cb6d6bf21f8f3c7b08630a7f15421799348f0ab597\",\"license\":\"MIT\"}},\"version\":1}",
720
+ "storageLayout": {
721
+ "storage": [],
722
+ "types": null
723
+ },
724
+ "userdoc": {
725
+ "kind": "user",
726
+ "methods": {
727
+ "sendMessage(address,bytes,uint32)": {
728
+ "notice": "Sends a cross domain message to the target messenger."
729
+ }
730
+ },
731
+ "version": 1
732
+ }
733
+ }
734
+ }
735
+ },
736
+ "sources": {
737
+ "contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol": {
738
+ "ast": {
739
+ "absolutePath": "contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol",
740
+ "exportedSymbols": {
741
+ "OVM_CrossDomainEnabled": [
742
+ 77
743
+ ],
744
+ "iOVM_CrossDomainMessenger": [
745
+ 108
746
+ ]
747
+ },
748
+ "id": 78,
749
+ "license": "MIT",
750
+ "nodeType": "SourceUnit",
751
+ "nodes": [
752
+ {
753
+ "id": 1,
754
+ "literals": [
755
+ "solidity",
756
+ "^",
757
+ "0.8",
758
+ ".0"
759
+ ],
760
+ "nodeType": "PragmaDirective",
761
+ "src": "362:23:0"
762
+ },
763
+ {
764
+ "absolutePath": "contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol",
765
+ "file": "./iOVM_CrossDomainMessenger.sol",
766
+ "id": 2,
767
+ "nameLocation": "-1:-1:-1",
768
+ "nodeType": "ImportDirective",
769
+ "scope": 78,
770
+ "sourceUnit": 109,
771
+ "src": "411:41:0",
772
+ "symbolAliases": [],
773
+ "unitAlias": ""
774
+ },
775
+ {
776
+ "abstract": false,
777
+ "baseContracts": [],
778
+ "canonicalName": "OVM_CrossDomainEnabled",
779
+ "contractDependencies": [],
780
+ "contractKind": "contract",
781
+ "documentation": {
782
+ "id": 3,
783
+ "nodeType": "StructuredDocumentation",
784
+ "src": "454:219:0",
785
+ "text": " @title OVM_CrossDomainEnabled\n @dev Helper contract for contracts performing cross-domain communications\n Compiler used: defined by inheriting contract\n Runtime target: defined by inheriting contract"
786
+ },
787
+ "fullyImplemented": true,
788
+ "id": 77,
789
+ "linearizedBaseContracts": [
790
+ 77
791
+ ],
792
+ "name": "OVM_CrossDomainEnabled",
793
+ "nameLocation": "683:22:0",
794
+ "nodeType": "ContractDefinition",
795
+ "nodes": [
796
+ {
797
+ "constant": false,
798
+ "functionSelector": "3cb747bf",
799
+ "id": 5,
800
+ "mutability": "mutable",
801
+ "name": "messenger",
802
+ "nameLocation": "869:9:0",
803
+ "nodeType": "VariableDeclaration",
804
+ "scope": 77,
805
+ "src": "854:24:0",
806
+ "stateVariable": true,
807
+ "storageLocation": "default",
808
+ "typeDescriptions": {
809
+ "typeIdentifier": "t_address",
810
+ "typeString": "address"
811
+ },
812
+ "typeName": {
813
+ "id": 4,
814
+ "name": "address",
815
+ "nodeType": "ElementaryTypeName",
816
+ "src": "854:7:0",
817
+ "stateMutability": "nonpayable",
818
+ "typeDescriptions": {
819
+ "typeIdentifier": "t_address",
820
+ "typeString": "address"
821
+ }
822
+ },
823
+ "visibility": "public"
824
+ },
825
+ {
826
+ "body": {
827
+ "id": 15,
828
+ "nodeType": "Block",
829
+ "src": "1081:39:0",
830
+ "statements": [
831
+ {
832
+ "expression": {
833
+ "id": 13,
834
+ "isConstant": false,
835
+ "isLValue": false,
836
+ "isPure": false,
837
+ "lValueRequested": false,
838
+ "leftHandSide": {
839
+ "id": 11,
840
+ "name": "messenger",
841
+ "nodeType": "Identifier",
842
+ "overloadedDeclarations": [],
843
+ "referencedDeclaration": 5,
844
+ "src": "1091:9:0",
845
+ "typeDescriptions": {
846
+ "typeIdentifier": "t_address",
847
+ "typeString": "address"
848
+ }
849
+ },
850
+ "nodeType": "Assignment",
851
+ "operator": "=",
852
+ "rightHandSide": {
853
+ "id": 12,
854
+ "name": "_messenger",
855
+ "nodeType": "Identifier",
856
+ "overloadedDeclarations": [],
857
+ "referencedDeclaration": 8,
858
+ "src": "1103:10:0",
859
+ "typeDescriptions": {
860
+ "typeIdentifier": "t_address",
861
+ "typeString": "address"
862
+ }
863
+ },
864
+ "src": "1091:22:0",
865
+ "typeDescriptions": {
866
+ "typeIdentifier": "t_address",
867
+ "typeString": "address"
868
+ }
869
+ },
870
+ "id": 14,
871
+ "nodeType": "ExpressionStatement",
872
+ "src": "1091:22:0"
873
+ }
874
+ ]
875
+ },
876
+ "documentation": {
877
+ "id": 6,
878
+ "nodeType": "StructuredDocumentation",
879
+ "src": "950:94:0",
880
+ "text": " @param _messenger Address of the CrossDomainMessenger on the current layer."
881
+ },
882
+ "id": 16,
883
+ "implemented": true,
884
+ "kind": "constructor",
885
+ "modifiers": [],
886
+ "name": "",
887
+ "nameLocation": "-1:-1:-1",
888
+ "nodeType": "FunctionDefinition",
889
+ "parameters": {
890
+ "id": 9,
891
+ "nodeType": "ParameterList",
892
+ "parameters": [
893
+ {
894
+ "constant": false,
895
+ "id": 8,
896
+ "mutability": "mutable",
897
+ "name": "_messenger",
898
+ "nameLocation": "1069:10:0",
899
+ "nodeType": "VariableDeclaration",
900
+ "scope": 16,
901
+ "src": "1061:18:0",
902
+ "stateVariable": false,
903
+ "storageLocation": "default",
904
+ "typeDescriptions": {
905
+ "typeIdentifier": "t_address",
906
+ "typeString": "address"
907
+ },
908
+ "typeName": {
909
+ "id": 7,
910
+ "name": "address",
911
+ "nodeType": "ElementaryTypeName",
912
+ "src": "1061:7:0",
913
+ "stateMutability": "nonpayable",
914
+ "typeDescriptions": {
915
+ "typeIdentifier": "t_address",
916
+ "typeString": "address"
917
+ }
918
+ },
919
+ "visibility": "internal"
920
+ }
921
+ ],
922
+ "src": "1060:20:0"
923
+ },
924
+ "returnParameters": {
925
+ "id": 10,
926
+ "nodeType": "ParameterList",
927
+ "parameters": [],
928
+ "src": "1081:0:0"
929
+ },
930
+ "scope": 77,
931
+ "src": "1049:71:0",
932
+ "stateMutability": "nonpayable",
933
+ "virtual": false,
934
+ "visibility": "public"
935
+ },
936
+ {
937
+ "body": {
938
+ "id": 44,
939
+ "nodeType": "Block",
940
+ "src": "1522:314:0",
941
+ "statements": [
942
+ {
943
+ "expression": {
944
+ "arguments": [
945
+ {
946
+ "commonType": {
947
+ "typeIdentifier": "t_address",
948
+ "typeString": "address"
949
+ },
950
+ "id": 29,
951
+ "isConstant": false,
952
+ "isLValue": false,
953
+ "isPure": false,
954
+ "lValueRequested": false,
955
+ "leftExpression": {
956
+ "expression": {
957
+ "id": 22,
958
+ "name": "msg",
959
+ "nodeType": "Identifier",
960
+ "overloadedDeclarations": [],
961
+ "referencedDeclaration": -15,
962
+ "src": "1540:3:0",
963
+ "typeDescriptions": {
964
+ "typeIdentifier": "t_magic_message",
965
+ "typeString": "msg"
966
+ }
967
+ },
968
+ "id": 23,
969
+ "isConstant": false,
970
+ "isLValue": false,
971
+ "isPure": false,
972
+ "lValueRequested": false,
973
+ "memberName": "sender",
974
+ "nodeType": "MemberAccess",
975
+ "src": "1540:10:0",
976
+ "typeDescriptions": {
977
+ "typeIdentifier": "t_address",
978
+ "typeString": "address"
979
+ }
980
+ },
981
+ "nodeType": "BinaryOperation",
982
+ "operator": "==",
983
+ "rightExpression": {
984
+ "arguments": [
985
+ {
986
+ "arguments": [],
987
+ "expression": {
988
+ "argumentTypes": [],
989
+ "id": 26,
990
+ "name": "getCrossDomainMessenger",
991
+ "nodeType": "Identifier",
992
+ "overloadedDeclarations": [],
993
+ "referencedDeclaration": 57,
994
+ "src": "1562:23:0",
995
+ "typeDescriptions": {
996
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_contract$_iOVM_CrossDomainMessenger_$108_$",
997
+ "typeString": "function () returns (contract iOVM_CrossDomainMessenger)"
998
+ }
999
+ },
1000
+ "id": 27,
1001
+ "isConstant": false,
1002
+ "isLValue": false,
1003
+ "isPure": false,
1004
+ "kind": "functionCall",
1005
+ "lValueRequested": false,
1006
+ "names": [],
1007
+ "nodeType": "FunctionCall",
1008
+ "src": "1562:25:0",
1009
+ "tryCall": false,
1010
+ "typeDescriptions": {
1011
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1012
+ "typeString": "contract iOVM_CrossDomainMessenger"
1013
+ }
1014
+ }
1015
+ ],
1016
+ "expression": {
1017
+ "argumentTypes": [
1018
+ {
1019
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1020
+ "typeString": "contract iOVM_CrossDomainMessenger"
1021
+ }
1022
+ ],
1023
+ "id": 25,
1024
+ "isConstant": false,
1025
+ "isLValue": false,
1026
+ "isPure": true,
1027
+ "lValueRequested": false,
1028
+ "nodeType": "ElementaryTypeNameExpression",
1029
+ "src": "1554:7:0",
1030
+ "typeDescriptions": {
1031
+ "typeIdentifier": "t_type$_t_address_$",
1032
+ "typeString": "type(address)"
1033
+ },
1034
+ "typeName": {
1035
+ "id": 24,
1036
+ "name": "address",
1037
+ "nodeType": "ElementaryTypeName",
1038
+ "src": "1554:7:0",
1039
+ "typeDescriptions": {}
1040
+ }
1041
+ },
1042
+ "id": 28,
1043
+ "isConstant": false,
1044
+ "isLValue": false,
1045
+ "isPure": false,
1046
+ "kind": "typeConversion",
1047
+ "lValueRequested": false,
1048
+ "names": [],
1049
+ "nodeType": "FunctionCall",
1050
+ "src": "1554:34:0",
1051
+ "tryCall": false,
1052
+ "typeDescriptions": {
1053
+ "typeIdentifier": "t_address",
1054
+ "typeString": "address"
1055
+ }
1056
+ },
1057
+ "src": "1540:48:0",
1058
+ "typeDescriptions": {
1059
+ "typeIdentifier": "t_bool",
1060
+ "typeString": "bool"
1061
+ }
1062
+ },
1063
+ {
1064
+ "hexValue": "4f564d5f58434841494e3a206d657373656e67657220636f6e747261637420756e61757468656e74696361746564",
1065
+ "id": 30,
1066
+ "isConstant": false,
1067
+ "isLValue": false,
1068
+ "isPure": true,
1069
+ "kind": "string",
1070
+ "lValueRequested": false,
1071
+ "nodeType": "Literal",
1072
+ "src": "1590:48:0",
1073
+ "typeDescriptions": {
1074
+ "typeIdentifier": "t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0",
1075
+ "typeString": "literal_string \"OVM_XCHAIN: messenger contract unauthenticated\""
1076
+ },
1077
+ "value": "OVM_XCHAIN: messenger contract unauthenticated"
1078
+ }
1079
+ ],
1080
+ "expression": {
1081
+ "argumentTypes": [
1082
+ {
1083
+ "typeIdentifier": "t_bool",
1084
+ "typeString": "bool"
1085
+ },
1086
+ {
1087
+ "typeIdentifier": "t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0",
1088
+ "typeString": "literal_string \"OVM_XCHAIN: messenger contract unauthenticated\""
1089
+ }
1090
+ ],
1091
+ "id": 21,
1092
+ "name": "require",
1093
+ "nodeType": "Identifier",
1094
+ "overloadedDeclarations": [
1095
+ -18,
1096
+ -18
1097
+ ],
1098
+ "referencedDeclaration": -18,
1099
+ "src": "1532:7:0",
1100
+ "typeDescriptions": {
1101
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
1102
+ "typeString": "function (bool,string memory) pure"
1103
+ }
1104
+ },
1105
+ "id": 31,
1106
+ "isConstant": false,
1107
+ "isLValue": false,
1108
+ "isPure": false,
1109
+ "kind": "functionCall",
1110
+ "lValueRequested": false,
1111
+ "names": [],
1112
+ "nodeType": "FunctionCall",
1113
+ "src": "1532:107:0",
1114
+ "tryCall": false,
1115
+ "typeDescriptions": {
1116
+ "typeIdentifier": "t_tuple$__$",
1117
+ "typeString": "tuple()"
1118
+ }
1119
+ },
1120
+ "id": 32,
1121
+ "nodeType": "ExpressionStatement",
1122
+ "src": "1532:107:0"
1123
+ },
1124
+ {
1125
+ "expression": {
1126
+ "arguments": [
1127
+ {
1128
+ "commonType": {
1129
+ "typeIdentifier": "t_address",
1130
+ "typeString": "address"
1131
+ },
1132
+ "id": 39,
1133
+ "isConstant": false,
1134
+ "isLValue": false,
1135
+ "isPure": false,
1136
+ "lValueRequested": false,
1137
+ "leftExpression": {
1138
+ "arguments": [],
1139
+ "expression": {
1140
+ "argumentTypes": [],
1141
+ "expression": {
1142
+ "arguments": [],
1143
+ "expression": {
1144
+ "argumentTypes": [],
1145
+ "id": 34,
1146
+ "name": "getCrossDomainMessenger",
1147
+ "nodeType": "Identifier",
1148
+ "overloadedDeclarations": [],
1149
+ "referencedDeclaration": 57,
1150
+ "src": "1671:23:0",
1151
+ "typeDescriptions": {
1152
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_contract$_iOVM_CrossDomainMessenger_$108_$",
1153
+ "typeString": "function () returns (contract iOVM_CrossDomainMessenger)"
1154
+ }
1155
+ },
1156
+ "id": 35,
1157
+ "isConstant": false,
1158
+ "isLValue": false,
1159
+ "isPure": false,
1160
+ "kind": "functionCall",
1161
+ "lValueRequested": false,
1162
+ "names": [],
1163
+ "nodeType": "FunctionCall",
1164
+ "src": "1671:25:0",
1165
+ "tryCall": false,
1166
+ "typeDescriptions": {
1167
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1168
+ "typeString": "contract iOVM_CrossDomainMessenger"
1169
+ }
1170
+ },
1171
+ "id": 36,
1172
+ "isConstant": false,
1173
+ "isLValue": false,
1174
+ "isPure": false,
1175
+ "lValueRequested": false,
1176
+ "memberName": "xDomainMessageSender",
1177
+ "nodeType": "MemberAccess",
1178
+ "referencedDeclaration": 97,
1179
+ "src": "1671:46:0",
1180
+ "typeDescriptions": {
1181
+ "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
1182
+ "typeString": "function () view external returns (address)"
1183
+ }
1184
+ },
1185
+ "id": 37,
1186
+ "isConstant": false,
1187
+ "isLValue": false,
1188
+ "isPure": false,
1189
+ "kind": "functionCall",
1190
+ "lValueRequested": false,
1191
+ "names": [],
1192
+ "nodeType": "FunctionCall",
1193
+ "src": "1671:48:0",
1194
+ "tryCall": false,
1195
+ "typeDescriptions": {
1196
+ "typeIdentifier": "t_address",
1197
+ "typeString": "address"
1198
+ }
1199
+ },
1200
+ "nodeType": "BinaryOperation",
1201
+ "operator": "==",
1202
+ "rightExpression": {
1203
+ "id": 38,
1204
+ "name": "_sourceDomainAccount",
1205
+ "nodeType": "Identifier",
1206
+ "overloadedDeclarations": [],
1207
+ "referencedDeclaration": 19,
1208
+ "src": "1723:20:0",
1209
+ "typeDescriptions": {
1210
+ "typeIdentifier": "t_address",
1211
+ "typeString": "address"
1212
+ }
1213
+ },
1214
+ "src": "1671:72:0",
1215
+ "typeDescriptions": {
1216
+ "typeIdentifier": "t_bool",
1217
+ "typeString": "bool"
1218
+ }
1219
+ },
1220
+ {
1221
+ "hexValue": "4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f6d61696e206d657373616765",
1222
+ "id": 40,
1223
+ "isConstant": false,
1224
+ "isLValue": false,
1225
+ "isPure": true,
1226
+ "kind": "string",
1227
+ "lValueRequested": false,
1228
+ "nodeType": "Literal",
1229
+ "src": "1757:50:0",
1230
+ "typeDescriptions": {
1231
+ "typeIdentifier": "t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099",
1232
+ "typeString": "literal_string \"OVM_XCHAIN: wrong sender of cross-domain message\""
1233
+ },
1234
+ "value": "OVM_XCHAIN: wrong sender of cross-domain message"
1235
+ }
1236
+ ],
1237
+ "expression": {
1238
+ "argumentTypes": [
1239
+ {
1240
+ "typeIdentifier": "t_bool",
1241
+ "typeString": "bool"
1242
+ },
1243
+ {
1244
+ "typeIdentifier": "t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099",
1245
+ "typeString": "literal_string \"OVM_XCHAIN: wrong sender of cross-domain message\""
1246
+ }
1247
+ ],
1248
+ "id": 33,
1249
+ "name": "require",
1250
+ "nodeType": "Identifier",
1251
+ "overloadedDeclarations": [
1252
+ -18,
1253
+ -18
1254
+ ],
1255
+ "referencedDeclaration": -18,
1256
+ "src": "1650:7:0",
1257
+ "typeDescriptions": {
1258
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
1259
+ "typeString": "function (bool,string memory) pure"
1260
+ }
1261
+ },
1262
+ "id": 41,
1263
+ "isConstant": false,
1264
+ "isLValue": false,
1265
+ "isPure": false,
1266
+ "kind": "functionCall",
1267
+ "lValueRequested": false,
1268
+ "names": [],
1269
+ "nodeType": "FunctionCall",
1270
+ "src": "1650:167:0",
1271
+ "tryCall": false,
1272
+ "typeDescriptions": {
1273
+ "typeIdentifier": "t_tuple$__$",
1274
+ "typeString": "tuple()"
1275
+ }
1276
+ },
1277
+ "id": 42,
1278
+ "nodeType": "ExpressionStatement",
1279
+ "src": "1650:167:0"
1280
+ },
1281
+ {
1282
+ "id": 43,
1283
+ "nodeType": "PlaceholderStatement",
1284
+ "src": "1828:1:0"
1285
+ }
1286
+ ]
1287
+ },
1288
+ "documentation": {
1289
+ "id": 17,
1290
+ "nodeType": "StructuredDocumentation",
1291
+ "src": "1212:239:0",
1292
+ "text": " Enforces that the modified function is only callable by a specific cross-domain account.\n @param _sourceDomainAccount The only account on the originating domain which is\n authenticated to call this function."
1293
+ },
1294
+ "id": 45,
1295
+ "name": "onlyFromCrossDomainAccount",
1296
+ "nameLocation": "1465:26:0",
1297
+ "nodeType": "ModifierDefinition",
1298
+ "parameters": {
1299
+ "id": 20,
1300
+ "nodeType": "ParameterList",
1301
+ "parameters": [
1302
+ {
1303
+ "constant": false,
1304
+ "id": 19,
1305
+ "mutability": "mutable",
1306
+ "name": "_sourceDomainAccount",
1307
+ "nameLocation": "1500:20:0",
1308
+ "nodeType": "VariableDeclaration",
1309
+ "scope": 45,
1310
+ "src": "1492:28:0",
1311
+ "stateVariable": false,
1312
+ "storageLocation": "default",
1313
+ "typeDescriptions": {
1314
+ "typeIdentifier": "t_address",
1315
+ "typeString": "address"
1316
+ },
1317
+ "typeName": {
1318
+ "id": 18,
1319
+ "name": "address",
1320
+ "nodeType": "ElementaryTypeName",
1321
+ "src": "1492:7:0",
1322
+ "stateMutability": "nonpayable",
1323
+ "typeDescriptions": {
1324
+ "typeIdentifier": "t_address",
1325
+ "typeString": "address"
1326
+ }
1327
+ },
1328
+ "visibility": "internal"
1329
+ }
1330
+ ],
1331
+ "src": "1491:30:0"
1332
+ },
1333
+ "src": "1456:380:0",
1334
+ "virtual": false,
1335
+ "visibility": "internal"
1336
+ },
1337
+ {
1338
+ "body": {
1339
+ "id": 56,
1340
+ "nodeType": "Block",
1341
+ "src": "2245:60:0",
1342
+ "statements": [
1343
+ {
1344
+ "expression": {
1345
+ "arguments": [
1346
+ {
1347
+ "id": 53,
1348
+ "name": "messenger",
1349
+ "nodeType": "Identifier",
1350
+ "overloadedDeclarations": [],
1351
+ "referencedDeclaration": 5,
1352
+ "src": "2288:9:0",
1353
+ "typeDescriptions": {
1354
+ "typeIdentifier": "t_address",
1355
+ "typeString": "address"
1356
+ }
1357
+ }
1358
+ ],
1359
+ "expression": {
1360
+ "argumentTypes": [
1361
+ {
1362
+ "typeIdentifier": "t_address",
1363
+ "typeString": "address"
1364
+ }
1365
+ ],
1366
+ "id": 52,
1367
+ "name": "iOVM_CrossDomainMessenger",
1368
+ "nodeType": "Identifier",
1369
+ "overloadedDeclarations": [],
1370
+ "referencedDeclaration": 108,
1371
+ "src": "2262:25:0",
1372
+ "typeDescriptions": {
1373
+ "typeIdentifier": "t_type$_t_contract$_iOVM_CrossDomainMessenger_$108_$",
1374
+ "typeString": "type(contract iOVM_CrossDomainMessenger)"
1375
+ }
1376
+ },
1377
+ "id": 54,
1378
+ "isConstant": false,
1379
+ "isLValue": false,
1380
+ "isPure": false,
1381
+ "kind": "typeConversion",
1382
+ "lValueRequested": false,
1383
+ "names": [],
1384
+ "nodeType": "FunctionCall",
1385
+ "src": "2262:36:0",
1386
+ "tryCall": false,
1387
+ "typeDescriptions": {
1388
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1389
+ "typeString": "contract iOVM_CrossDomainMessenger"
1390
+ }
1391
+ },
1392
+ "functionReturnParameters": 51,
1393
+ "id": 55,
1394
+ "nodeType": "Return",
1395
+ "src": "2255:43:0"
1396
+ }
1397
+ ]
1398
+ },
1399
+ "documentation": {
1400
+ "id": 46,
1401
+ "nodeType": "StructuredDocumentation",
1402
+ "src": "1928:224:0",
1403
+ "text": " Gets the messenger, usually from storage. This function is exposed in case a child contract\n needs to override.\n @return The address of the cross-domain messenger contract which should be used."
1404
+ },
1405
+ "id": 57,
1406
+ "implemented": true,
1407
+ "kind": "function",
1408
+ "modifiers": [],
1409
+ "name": "getCrossDomainMessenger",
1410
+ "nameLocation": "2166:23:0",
1411
+ "nodeType": "FunctionDefinition",
1412
+ "parameters": {
1413
+ "id": 47,
1414
+ "nodeType": "ParameterList",
1415
+ "parameters": [],
1416
+ "src": "2189:2:0"
1417
+ },
1418
+ "returnParameters": {
1419
+ "id": 51,
1420
+ "nodeType": "ParameterList",
1421
+ "parameters": [
1422
+ {
1423
+ "constant": false,
1424
+ "id": 50,
1425
+ "mutability": "mutable",
1426
+ "name": "",
1427
+ "nameLocation": "-1:-1:-1",
1428
+ "nodeType": "VariableDeclaration",
1429
+ "scope": 57,
1430
+ "src": "2218:25:0",
1431
+ "stateVariable": false,
1432
+ "storageLocation": "default",
1433
+ "typeDescriptions": {
1434
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1435
+ "typeString": "contract iOVM_CrossDomainMessenger"
1436
+ },
1437
+ "typeName": {
1438
+ "id": 49,
1439
+ "nodeType": "UserDefinedTypeName",
1440
+ "pathNode": {
1441
+ "id": 48,
1442
+ "name": "iOVM_CrossDomainMessenger",
1443
+ "nodeType": "IdentifierPath",
1444
+ "referencedDeclaration": 108,
1445
+ "src": "2218:25:0"
1446
+ },
1447
+ "referencedDeclaration": 108,
1448
+ "src": "2218:25:0",
1449
+ "typeDescriptions": {
1450
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1451
+ "typeString": "contract iOVM_CrossDomainMessenger"
1452
+ }
1453
+ },
1454
+ "visibility": "internal"
1455
+ }
1456
+ ],
1457
+ "src": "2217:27:0"
1458
+ },
1459
+ "scope": 77,
1460
+ "src": "2157:148:0",
1461
+ "stateMutability": "nonpayable",
1462
+ "virtual": true,
1463
+ "visibility": "internal"
1464
+ },
1465
+ {
1466
+ "body": {
1467
+ "id": 75,
1468
+ "nodeType": "Block",
1469
+ "src": "2825:95:0",
1470
+ "statements": [
1471
+ {
1472
+ "expression": {
1473
+ "arguments": [
1474
+ {
1475
+ "id": 70,
1476
+ "name": "_crossDomainTarget",
1477
+ "nodeType": "Identifier",
1478
+ "overloadedDeclarations": [],
1479
+ "referencedDeclaration": 60,
1480
+ "src": "2873:18:0",
1481
+ "typeDescriptions": {
1482
+ "typeIdentifier": "t_address",
1483
+ "typeString": "address"
1484
+ }
1485
+ },
1486
+ {
1487
+ "id": 71,
1488
+ "name": "_message",
1489
+ "nodeType": "Identifier",
1490
+ "overloadedDeclarations": [],
1491
+ "referencedDeclaration": 64,
1492
+ "src": "2893:8:0",
1493
+ "typeDescriptions": {
1494
+ "typeIdentifier": "t_bytes_memory_ptr",
1495
+ "typeString": "bytes memory"
1496
+ }
1497
+ },
1498
+ {
1499
+ "id": 72,
1500
+ "name": "_gasLimit",
1501
+ "nodeType": "Identifier",
1502
+ "overloadedDeclarations": [],
1503
+ "referencedDeclaration": 62,
1504
+ "src": "2903:9:0",
1505
+ "typeDescriptions": {
1506
+ "typeIdentifier": "t_uint32",
1507
+ "typeString": "uint32"
1508
+ }
1509
+ }
1510
+ ],
1511
+ "expression": {
1512
+ "argumentTypes": [
1513
+ {
1514
+ "typeIdentifier": "t_address",
1515
+ "typeString": "address"
1516
+ },
1517
+ {
1518
+ "typeIdentifier": "t_bytes_memory_ptr",
1519
+ "typeString": "bytes memory"
1520
+ },
1521
+ {
1522
+ "typeIdentifier": "t_uint32",
1523
+ "typeString": "uint32"
1524
+ }
1525
+ ],
1526
+ "expression": {
1527
+ "arguments": [],
1528
+ "expression": {
1529
+ "argumentTypes": [],
1530
+ "id": 67,
1531
+ "name": "getCrossDomainMessenger",
1532
+ "nodeType": "Identifier",
1533
+ "overloadedDeclarations": [],
1534
+ "referencedDeclaration": 57,
1535
+ "src": "2835:23:0",
1536
+ "typeDescriptions": {
1537
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_contract$_iOVM_CrossDomainMessenger_$108_$",
1538
+ "typeString": "function () returns (contract iOVM_CrossDomainMessenger)"
1539
+ }
1540
+ },
1541
+ "id": 68,
1542
+ "isConstant": false,
1543
+ "isLValue": false,
1544
+ "isPure": false,
1545
+ "kind": "functionCall",
1546
+ "lValueRequested": false,
1547
+ "names": [],
1548
+ "nodeType": "FunctionCall",
1549
+ "src": "2835:25:0",
1550
+ "tryCall": false,
1551
+ "typeDescriptions": {
1552
+ "typeIdentifier": "t_contract$_iOVM_CrossDomainMessenger_$108",
1553
+ "typeString": "contract iOVM_CrossDomainMessenger"
1554
+ }
1555
+ },
1556
+ "id": 69,
1557
+ "isConstant": false,
1558
+ "isLValue": false,
1559
+ "isPure": false,
1560
+ "lValueRequested": false,
1561
+ "memberName": "sendMessage",
1562
+ "nodeType": "MemberAccess",
1563
+ "referencedDeclaration": 107,
1564
+ "src": "2835:37:0",
1565
+ "typeDescriptions": {
1566
+ "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$",
1567
+ "typeString": "function (address,bytes memory,uint32) external"
1568
+ }
1569
+ },
1570
+ "id": 73,
1571
+ "isConstant": false,
1572
+ "isLValue": false,
1573
+ "isPure": false,
1574
+ "kind": "functionCall",
1575
+ "lValueRequested": false,
1576
+ "names": [],
1577
+ "nodeType": "FunctionCall",
1578
+ "src": "2835:78:0",
1579
+ "tryCall": false,
1580
+ "typeDescriptions": {
1581
+ "typeIdentifier": "t_tuple$__$",
1582
+ "typeString": "tuple()"
1583
+ }
1584
+ },
1585
+ "id": 74,
1586
+ "nodeType": "ExpressionStatement",
1587
+ "src": "2835:78:0"
1588
+ }
1589
+ ]
1590
+ },
1591
+ "documentation": {
1592
+ "id": 58,
1593
+ "nodeType": "StructuredDocumentation",
1594
+ "src": "2311:369:0",
1595
+ "text": " Sends a message to an account on another domain\n @param _crossDomainTarget The intended recipient on the destination domain\n @param _message The data to send to the target (usually calldata to a function with\n `onlyFromCrossDomainAccount()`)\n @param _gasLimit The gasLimit for the receipt of the message on the target domain."
1596
+ },
1597
+ "id": 76,
1598
+ "implemented": true,
1599
+ "kind": "function",
1600
+ "modifiers": [],
1601
+ "name": "sendCrossDomainMessage",
1602
+ "nameLocation": "2694:22:0",
1603
+ "nodeType": "FunctionDefinition",
1604
+ "parameters": {
1605
+ "id": 65,
1606
+ "nodeType": "ParameterList",
1607
+ "parameters": [
1608
+ {
1609
+ "constant": false,
1610
+ "id": 60,
1611
+ "mutability": "mutable",
1612
+ "name": "_crossDomainTarget",
1613
+ "nameLocation": "2734:18:0",
1614
+ "nodeType": "VariableDeclaration",
1615
+ "scope": 76,
1616
+ "src": "2726:26:0",
1617
+ "stateVariable": false,
1618
+ "storageLocation": "default",
1619
+ "typeDescriptions": {
1620
+ "typeIdentifier": "t_address",
1621
+ "typeString": "address"
1622
+ },
1623
+ "typeName": {
1624
+ "id": 59,
1625
+ "name": "address",
1626
+ "nodeType": "ElementaryTypeName",
1627
+ "src": "2726:7:0",
1628
+ "stateMutability": "nonpayable",
1629
+ "typeDescriptions": {
1630
+ "typeIdentifier": "t_address",
1631
+ "typeString": "address"
1632
+ }
1633
+ },
1634
+ "visibility": "internal"
1635
+ },
1636
+ {
1637
+ "constant": false,
1638
+ "id": 62,
1639
+ "mutability": "mutable",
1640
+ "name": "_gasLimit",
1641
+ "nameLocation": "2769:9:0",
1642
+ "nodeType": "VariableDeclaration",
1643
+ "scope": 76,
1644
+ "src": "2762:16:0",
1645
+ "stateVariable": false,
1646
+ "storageLocation": "default",
1647
+ "typeDescriptions": {
1648
+ "typeIdentifier": "t_uint32",
1649
+ "typeString": "uint32"
1650
+ },
1651
+ "typeName": {
1652
+ "id": 61,
1653
+ "name": "uint32",
1654
+ "nodeType": "ElementaryTypeName",
1655
+ "src": "2762:6:0",
1656
+ "typeDescriptions": {
1657
+ "typeIdentifier": "t_uint32",
1658
+ "typeString": "uint32"
1659
+ }
1660
+ },
1661
+ "visibility": "internal"
1662
+ },
1663
+ {
1664
+ "constant": false,
1665
+ "id": 64,
1666
+ "mutability": "mutable",
1667
+ "name": "_message",
1668
+ "nameLocation": "2801:8:0",
1669
+ "nodeType": "VariableDeclaration",
1670
+ "scope": 76,
1671
+ "src": "2788:21:0",
1672
+ "stateVariable": false,
1673
+ "storageLocation": "memory",
1674
+ "typeDescriptions": {
1675
+ "typeIdentifier": "t_bytes_memory_ptr",
1676
+ "typeString": "bytes"
1677
+ },
1678
+ "typeName": {
1679
+ "id": 63,
1680
+ "name": "bytes",
1681
+ "nodeType": "ElementaryTypeName",
1682
+ "src": "2788:5:0",
1683
+ "typeDescriptions": {
1684
+ "typeIdentifier": "t_bytes_storage_ptr",
1685
+ "typeString": "bytes"
1686
+ }
1687
+ },
1688
+ "visibility": "internal"
1689
+ }
1690
+ ],
1691
+ "src": "2716:99:0"
1692
+ },
1693
+ "returnParameters": {
1694
+ "id": 66,
1695
+ "nodeType": "ParameterList",
1696
+ "parameters": [],
1697
+ "src": "2825:0:0"
1698
+ },
1699
+ "scope": 77,
1700
+ "src": "2685:235:0",
1701
+ "stateMutability": "nonpayable",
1702
+ "virtual": false,
1703
+ "visibility": "internal"
1704
+ }
1705
+ ],
1706
+ "scope": 78,
1707
+ "src": "674:2248:0",
1708
+ "usedErrors": []
1709
+ }
1710
+ ],
1711
+ "src": "362:2561:0"
1712
+ },
1713
+ "id": 0
1714
+ },
1715
+ "contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol": {
1716
+ "ast": {
1717
+ "absolutePath": "contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol",
1718
+ "exportedSymbols": {
1719
+ "iOVM_CrossDomainMessenger": [
1720
+ 108
1721
+ ]
1722
+ },
1723
+ "id": 109,
1724
+ "license": "MIT",
1725
+ "nodeType": "SourceUnit",
1726
+ "nodes": [
1727
+ {
1728
+ "id": 79,
1729
+ "literals": [
1730
+ "solidity",
1731
+ "^",
1732
+ "0.8",
1733
+ ".0"
1734
+ ],
1735
+ "nodeType": "PragmaDirective",
1736
+ "src": "370:23:1"
1737
+ },
1738
+ {
1739
+ "abstract": false,
1740
+ "baseContracts": [],
1741
+ "canonicalName": "iOVM_CrossDomainMessenger",
1742
+ "contractDependencies": [],
1743
+ "contractKind": "interface",
1744
+ "documentation": {
1745
+ "id": 80,
1746
+ "nodeType": "StructuredDocumentation",
1747
+ "src": "395:43:1",
1748
+ "text": " @title iOVM_CrossDomainMessenger"
1749
+ },
1750
+ "fullyImplemented": false,
1751
+ "id": 108,
1752
+ "linearizedBaseContracts": [
1753
+ 108
1754
+ ],
1755
+ "name": "iOVM_CrossDomainMessenger",
1756
+ "nameLocation": "449:25:1",
1757
+ "nodeType": "ContractDefinition",
1758
+ "nodes": [
1759
+ {
1760
+ "anonymous": false,
1761
+ "id": 84,
1762
+ "name": "SentMessage",
1763
+ "nameLocation": "537:11:1",
1764
+ "nodeType": "EventDefinition",
1765
+ "parameters": {
1766
+ "id": 83,
1767
+ "nodeType": "ParameterList",
1768
+ "parameters": [
1769
+ {
1770
+ "constant": false,
1771
+ "id": 82,
1772
+ "indexed": false,
1773
+ "mutability": "mutable",
1774
+ "name": "message",
1775
+ "nameLocation": "555:7:1",
1776
+ "nodeType": "VariableDeclaration",
1777
+ "scope": 84,
1778
+ "src": "549:13:1",
1779
+ "stateVariable": false,
1780
+ "storageLocation": "default",
1781
+ "typeDescriptions": {
1782
+ "typeIdentifier": "t_bytes_memory_ptr",
1783
+ "typeString": "bytes"
1784
+ },
1785
+ "typeName": {
1786
+ "id": 81,
1787
+ "name": "bytes",
1788
+ "nodeType": "ElementaryTypeName",
1789
+ "src": "549:5:1",
1790
+ "typeDescriptions": {
1791
+ "typeIdentifier": "t_bytes_storage_ptr",
1792
+ "typeString": "bytes"
1793
+ }
1794
+ },
1795
+ "visibility": "internal"
1796
+ }
1797
+ ],
1798
+ "src": "548:15:1"
1799
+ },
1800
+ "src": "531:33:1"
1801
+ },
1802
+ {
1803
+ "anonymous": false,
1804
+ "id": 88,
1805
+ "name": "RelayedMessage",
1806
+ "nameLocation": "575:14:1",
1807
+ "nodeType": "EventDefinition",
1808
+ "parameters": {
1809
+ "id": 87,
1810
+ "nodeType": "ParameterList",
1811
+ "parameters": [
1812
+ {
1813
+ "constant": false,
1814
+ "id": 86,
1815
+ "indexed": false,
1816
+ "mutability": "mutable",
1817
+ "name": "msgHash",
1818
+ "nameLocation": "598:7:1",
1819
+ "nodeType": "VariableDeclaration",
1820
+ "scope": 88,
1821
+ "src": "590:15:1",
1822
+ "stateVariable": false,
1823
+ "storageLocation": "default",
1824
+ "typeDescriptions": {
1825
+ "typeIdentifier": "t_bytes32",
1826
+ "typeString": "bytes32"
1827
+ },
1828
+ "typeName": {
1829
+ "id": 85,
1830
+ "name": "bytes32",
1831
+ "nodeType": "ElementaryTypeName",
1832
+ "src": "590:7:1",
1833
+ "typeDescriptions": {
1834
+ "typeIdentifier": "t_bytes32",
1835
+ "typeString": "bytes32"
1836
+ }
1837
+ },
1838
+ "visibility": "internal"
1839
+ }
1840
+ ],
1841
+ "src": "589:17:1"
1842
+ },
1843
+ "src": "569:38:1"
1844
+ },
1845
+ {
1846
+ "anonymous": false,
1847
+ "id": 92,
1848
+ "name": "FailedRelayedMessage",
1849
+ "nameLocation": "618:20:1",
1850
+ "nodeType": "EventDefinition",
1851
+ "parameters": {
1852
+ "id": 91,
1853
+ "nodeType": "ParameterList",
1854
+ "parameters": [
1855
+ {
1856
+ "constant": false,
1857
+ "id": 90,
1858
+ "indexed": false,
1859
+ "mutability": "mutable",
1860
+ "name": "msgHash",
1861
+ "nameLocation": "647:7:1",
1862
+ "nodeType": "VariableDeclaration",
1863
+ "scope": 92,
1864
+ "src": "639:15:1",
1865
+ "stateVariable": false,
1866
+ "storageLocation": "default",
1867
+ "typeDescriptions": {
1868
+ "typeIdentifier": "t_bytes32",
1869
+ "typeString": "bytes32"
1870
+ },
1871
+ "typeName": {
1872
+ "id": 89,
1873
+ "name": "bytes32",
1874
+ "nodeType": "ElementaryTypeName",
1875
+ "src": "639:7:1",
1876
+ "typeDescriptions": {
1877
+ "typeIdentifier": "t_bytes32",
1878
+ "typeString": "bytes32"
1879
+ }
1880
+ },
1881
+ "visibility": "internal"
1882
+ }
1883
+ ],
1884
+ "src": "638:17:1"
1885
+ },
1886
+ "src": "612:44:1"
1887
+ },
1888
+ {
1889
+ "functionSelector": "6e296e45",
1890
+ "id": 97,
1891
+ "implemented": false,
1892
+ "kind": "function",
1893
+ "modifiers": [],
1894
+ "name": "xDomainMessageSender",
1895
+ "nameLocation": "730:20:1",
1896
+ "nodeType": "FunctionDefinition",
1897
+ "parameters": {
1898
+ "id": 93,
1899
+ "nodeType": "ParameterList",
1900
+ "parameters": [],
1901
+ "src": "750:2:1"
1902
+ },
1903
+ "returnParameters": {
1904
+ "id": 96,
1905
+ "nodeType": "ParameterList",
1906
+ "parameters": [
1907
+ {
1908
+ "constant": false,
1909
+ "id": 95,
1910
+ "mutability": "mutable",
1911
+ "name": "",
1912
+ "nameLocation": "-1:-1:-1",
1913
+ "nodeType": "VariableDeclaration",
1914
+ "scope": 97,
1915
+ "src": "776:7:1",
1916
+ "stateVariable": false,
1917
+ "storageLocation": "default",
1918
+ "typeDescriptions": {
1919
+ "typeIdentifier": "t_address",
1920
+ "typeString": "address"
1921
+ },
1922
+ "typeName": {
1923
+ "id": 94,
1924
+ "name": "address",
1925
+ "nodeType": "ElementaryTypeName",
1926
+ "src": "776:7:1",
1927
+ "stateMutability": "nonpayable",
1928
+ "typeDescriptions": {
1929
+ "typeIdentifier": "t_address",
1930
+ "typeString": "address"
1931
+ }
1932
+ },
1933
+ "visibility": "internal"
1934
+ }
1935
+ ],
1936
+ "src": "775:9:1"
1937
+ },
1938
+ "scope": 108,
1939
+ "src": "721:64:1",
1940
+ "stateMutability": "view",
1941
+ "virtual": false,
1942
+ "visibility": "external"
1943
+ },
1944
+ {
1945
+ "documentation": {
1946
+ "id": 98,
1947
+ "nodeType": "StructuredDocumentation",
1948
+ "src": "871:233:1",
1949
+ "text": " Sends a cross domain message to the target messenger.\n @param _target Target contract address.\n @param _message Message to send to the target.\n @param _gasLimit Gas limit for the provided message."
1950
+ },
1951
+ "functionSelector": "3dbb202b",
1952
+ "id": 107,
1953
+ "implemented": false,
1954
+ "kind": "function",
1955
+ "modifiers": [],
1956
+ "name": "sendMessage",
1957
+ "nameLocation": "1118:11:1",
1958
+ "nodeType": "FunctionDefinition",
1959
+ "parameters": {
1960
+ "id": 105,
1961
+ "nodeType": "ParameterList",
1962
+ "parameters": [
1963
+ {
1964
+ "constant": false,
1965
+ "id": 100,
1966
+ "mutability": "mutable",
1967
+ "name": "_target",
1968
+ "nameLocation": "1147:7:1",
1969
+ "nodeType": "VariableDeclaration",
1970
+ "scope": 107,
1971
+ "src": "1139:15:1",
1972
+ "stateVariable": false,
1973
+ "storageLocation": "default",
1974
+ "typeDescriptions": {
1975
+ "typeIdentifier": "t_address",
1976
+ "typeString": "address"
1977
+ },
1978
+ "typeName": {
1979
+ "id": 99,
1980
+ "name": "address",
1981
+ "nodeType": "ElementaryTypeName",
1982
+ "src": "1139:7:1",
1983
+ "stateMutability": "nonpayable",
1984
+ "typeDescriptions": {
1985
+ "typeIdentifier": "t_address",
1986
+ "typeString": "address"
1987
+ }
1988
+ },
1989
+ "visibility": "internal"
1990
+ },
1991
+ {
1992
+ "constant": false,
1993
+ "id": 102,
1994
+ "mutability": "mutable",
1995
+ "name": "_message",
1996
+ "nameLocation": "1179:8:1",
1997
+ "nodeType": "VariableDeclaration",
1998
+ "scope": 107,
1999
+ "src": "1164:23:1",
2000
+ "stateVariable": false,
2001
+ "storageLocation": "calldata",
2002
+ "typeDescriptions": {
2003
+ "typeIdentifier": "t_bytes_calldata_ptr",
2004
+ "typeString": "bytes"
2005
+ },
2006
+ "typeName": {
2007
+ "id": 101,
2008
+ "name": "bytes",
2009
+ "nodeType": "ElementaryTypeName",
2010
+ "src": "1164:5:1",
2011
+ "typeDescriptions": {
2012
+ "typeIdentifier": "t_bytes_storage_ptr",
2013
+ "typeString": "bytes"
2014
+ }
2015
+ },
2016
+ "visibility": "internal"
2017
+ },
2018
+ {
2019
+ "constant": false,
2020
+ "id": 104,
2021
+ "mutability": "mutable",
2022
+ "name": "_gasLimit",
2023
+ "nameLocation": "1204:9:1",
2024
+ "nodeType": "VariableDeclaration",
2025
+ "scope": 107,
2026
+ "src": "1197:16:1",
2027
+ "stateVariable": false,
2028
+ "storageLocation": "default",
2029
+ "typeDescriptions": {
2030
+ "typeIdentifier": "t_uint32",
2031
+ "typeString": "uint32"
2032
+ },
2033
+ "typeName": {
2034
+ "id": 103,
2035
+ "name": "uint32",
2036
+ "nodeType": "ElementaryTypeName",
2037
+ "src": "1197:6:1",
2038
+ "typeDescriptions": {
2039
+ "typeIdentifier": "t_uint32",
2040
+ "typeString": "uint32"
2041
+ }
2042
+ },
2043
+ "visibility": "internal"
2044
+ }
2045
+ ],
2046
+ "src": "1129:90:1"
2047
+ },
2048
+ "returnParameters": {
2049
+ "id": 106,
2050
+ "nodeType": "ParameterList",
2051
+ "parameters": [],
2052
+ "src": "1228:0:1"
2053
+ },
2054
+ "scope": 108,
2055
+ "src": "1109:120:1",
2056
+ "stateMutability": "nonpayable",
2057
+ "virtual": false,
2058
+ "visibility": "external"
2059
+ }
2060
+ ],
2061
+ "scope": 109,
2062
+ "src": "439:792:1",
2063
+ "usedErrors": []
2064
+ }
2065
+ ],
2066
+ "src": "370:862:1"
2067
+ },
2068
+ "id": 1
2069
+ }
2070
+ }
2071
+ }
2072
+ }