@hyperlane-xyz/core 1.3.8-beta0 → 1.4.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 (374) hide show
  1. package/contracts/hooks/ERC5164/ERC5164MessageHook.sol +95 -0
  2. package/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.sol +30 -0
  3. package/contracts/hooks/OptimismMessageHook.sol +4 -2
  4. package/contracts/isms/{native/AbstractNativeISM.sol → hook/AbstractHookISM.sol} +17 -9
  5. package/contracts/isms/hook/CrossChainEnabled.sol +57 -0
  6. package/contracts/isms/hook/ERC5164ISM.sol +75 -0
  7. package/contracts/isms/hook/optimism/CrossChainEnabledOptimism.sol +50 -0
  8. package/contracts/isms/hook/optimism/LibOptimism.sol +41 -0
  9. package/contracts/isms/{native → hook/optimism}/OptimismISM.sol +21 -10
  10. package/contracts/middleware/InterchainAccountRouter.sol +8 -14
  11. package/contracts/mock/MockERC5164.sol +26 -0
  12. package/dist/@openzeppelin/contracts/index.d.ts +0 -2
  13. package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
  14. package/dist/contracts/hooks/ERC5164/ERC5164MessageHook.d.ts +75 -0
  15. package/dist/contracts/hooks/ERC5164/ERC5164MessageHook.d.ts.map +1 -0
  16. package/dist/contracts/hooks/ERC5164/ERC5164MessageHook.js +4 -0
  17. package/dist/contracts/hooks/ERC5164/ERC5164MessageHook.js.map +1 -0
  18. package/dist/contracts/hooks/ERC5164/index.d.ts +4 -0
  19. package/dist/contracts/hooks/ERC5164/index.d.ts.map +1 -0
  20. package/dist/contracts/hooks/ERC5164/index.js.map +1 -0
  21. package/dist/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.d.ts +72 -0
  22. package/dist/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.d.ts.map +1 -0
  23. package/dist/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.js +4 -0
  24. package/dist/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.js.map +1 -0
  25. package/dist/contracts/hooks/ERC5164/interfaces/index.d.ts +2 -0
  26. package/dist/contracts/hooks/ERC5164/interfaces/index.d.ts.map +1 -0
  27. package/dist/contracts/hooks/ERC5164/interfaces/index.js.map +1 -0
  28. package/dist/contracts/hooks/index.d.ts +2 -0
  29. package/dist/contracts/hooks/index.d.ts.map +1 -1
  30. package/dist/contracts/hooks/index.js +1 -0
  31. package/dist/contracts/hooks/index.js.map +1 -1
  32. package/dist/contracts/index.d.ts +0 -1
  33. package/dist/contracts/index.d.ts.map +1 -1
  34. package/dist/contracts/isms/{native/AbstractNativeISM.d.ts → hook/AbstractHookISM.d.ts} +14 -14
  35. package/dist/contracts/isms/hook/AbstractHookISM.d.ts.map +1 -0
  36. package/dist/contracts/isms/{native/AbstractNativeISM.js → hook/AbstractHookISM.js} +1 -1
  37. package/dist/contracts/isms/hook/AbstractHookISM.js.map +1 -0
  38. package/dist/contracts/isms/hook/CrossChainEnabled.d.ts +28 -0
  39. package/dist/contracts/isms/hook/CrossChainEnabled.d.ts.map +1 -0
  40. package/dist/contracts/isms/hook/CrossChainEnabled.js +4 -0
  41. package/dist/contracts/isms/hook/CrossChainEnabled.js.map +1 -0
  42. package/dist/contracts/isms/hook/ERC5164ISM.d.ts +107 -0
  43. package/dist/contracts/isms/hook/ERC5164ISM.d.ts.map +1 -0
  44. package/dist/contracts/{libs/TestMerkle.sol/MerkleTree.js → isms/hook/ERC5164ISM.js} +1 -1
  45. package/dist/contracts/isms/hook/ERC5164ISM.js.map +1 -0
  46. package/dist/contracts/isms/hook/index.d.ts +6 -0
  47. package/dist/contracts/isms/hook/index.d.ts.map +1 -0
  48. package/dist/contracts/isms/hook/index.js +4 -0
  49. package/dist/contracts/isms/hook/index.js.map +1 -0
  50. package/dist/contracts/isms/hook/optimism/CrossChainEnabledOptimism.d.ts +28 -0
  51. package/dist/contracts/isms/hook/optimism/CrossChainEnabledOptimism.d.ts.map +1 -0
  52. package/dist/contracts/{CheckpointFraudProofs.js → isms/hook/optimism/CrossChainEnabledOptimism.js} +1 -1
  53. package/dist/contracts/isms/hook/optimism/CrossChainEnabledOptimism.js.map +1 -0
  54. package/dist/contracts/isms/hook/optimism/LibOptimism.d.ts +28 -0
  55. package/dist/contracts/isms/hook/optimism/LibOptimism.d.ts.map +1 -0
  56. package/dist/contracts/isms/hook/optimism/LibOptimism.js +4 -0
  57. package/dist/contracts/isms/hook/optimism/LibOptimism.js.map +1 -0
  58. package/dist/contracts/isms/{native → hook/optimism}/OptimismISM.d.ts +18 -18
  59. package/dist/contracts/isms/hook/optimism/OptimismISM.d.ts.map +1 -0
  60. package/dist/contracts/isms/hook/optimism/OptimismISM.js.map +1 -0
  61. package/dist/contracts/isms/hook/optimism/index.d.ts +4 -0
  62. package/dist/contracts/isms/hook/optimism/index.d.ts.map +1 -0
  63. package/dist/contracts/isms/hook/optimism/index.js.map +1 -0
  64. package/dist/contracts/isms/index.d.ts +2 -2
  65. package/dist/contracts/isms/index.d.ts.map +1 -1
  66. package/dist/contracts/libs/index.d.ts +0 -2
  67. package/dist/contracts/libs/index.d.ts.map +1 -1
  68. package/dist/contracts/libs/index.js +0 -1
  69. package/dist/contracts/libs/index.js.map +1 -1
  70. package/dist/contracts/mock/MockERC5164.sol/MockMessageDispatcher.d.ts +72 -0
  71. package/dist/contracts/mock/MockERC5164.sol/MockMessageDispatcher.d.ts.map +1 -0
  72. package/dist/{@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger.js → contracts/mock/MockERC5164.sol/MockMessageDispatcher.js} +1 -1
  73. package/dist/contracts/mock/MockERC5164.sol/MockMessageDispatcher.js.map +1 -0
  74. package/dist/contracts/mock/MockERC5164.sol/MockMessageExecutor.d.ts +44 -0
  75. package/dist/contracts/mock/MockERC5164.sol/MockMessageExecutor.d.ts.map +1 -0
  76. package/dist/contracts/mock/MockERC5164.sol/MockMessageExecutor.js +4 -0
  77. package/dist/contracts/mock/MockERC5164.sol/MockMessageExecutor.js.map +1 -0
  78. package/dist/contracts/mock/MockERC5164.sol/index.d.ts +3 -0
  79. package/dist/contracts/mock/MockERC5164.sol/index.d.ts.map +1 -0
  80. package/dist/contracts/mock/MockERC5164.sol/index.js.map +1 -0
  81. package/dist/contracts/mock/index.d.ts +2 -0
  82. package/dist/contracts/mock/index.d.ts.map +1 -1
  83. package/dist/contracts/mock/index.js +1 -0
  84. package/dist/contracts/mock/index.js.map +1 -1
  85. package/dist/factories/@openzeppelin/contracts/index.d.ts +0 -1
  86. package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
  87. package/dist/factories/@openzeppelin/contracts/index.js +1 -2
  88. package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
  89. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.d.ts +45 -0
  90. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.d.ts.map +1 -0
  91. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.js +125 -0
  92. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.js.map +1 -0
  93. package/dist/factories/contracts/hooks/ERC5164/index.d.ts +3 -0
  94. package/dist/factories/contracts/hooks/ERC5164/index.d.ts.map +1 -0
  95. package/dist/factories/{@openzeppelin/contracts/vendor → contracts/hooks/ERC5164}/index.js +4 -2
  96. package/dist/factories/contracts/hooks/ERC5164/index.js.map +1 -0
  97. package/dist/factories/{@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger__factory.d.ts → contracts/hooks/ERC5164/interfaces/IMessageDispatcher__factory.d.ts} +5 -12
  98. package/dist/factories/contracts/hooks/ERC5164/interfaces/IMessageDispatcher__factory.d.ts.map +1 -0
  99. package/dist/factories/{@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger__factory.js → contracts/hooks/ERC5164/interfaces/IMessageDispatcher__factory.js} +26 -59
  100. package/dist/factories/contracts/hooks/ERC5164/interfaces/IMessageDispatcher__factory.js.map +1 -0
  101. package/dist/factories/contracts/hooks/ERC5164/interfaces/index.d.ts +2 -0
  102. package/dist/factories/contracts/hooks/ERC5164/interfaces/index.d.ts.map +1 -0
  103. package/dist/factories/contracts/hooks/ERC5164/interfaces/index.js +9 -0
  104. package/dist/factories/contracts/hooks/ERC5164/interfaces/index.js.map +1 -0
  105. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.d.ts +1 -1
  106. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.d.ts.map +1 -1
  107. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.js +1 -1
  108. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.js.map +1 -1
  109. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  110. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  111. package/dist/factories/contracts/hooks/index.js +25 -1
  112. package/dist/factories/contracts/hooks/index.js.map +1 -1
  113. package/dist/factories/contracts/index.d.ts +0 -1
  114. package/dist/factories/contracts/index.d.ts.map +1 -1
  115. package/dist/factories/contracts/index.js +1 -3
  116. package/dist/factories/contracts/index.js.map +1 -1
  117. package/dist/factories/contracts/isms/{native/AbstractNativeISM__factory.d.ts → hook/AbstractHookISM__factory.d.ts} +5 -5
  118. package/dist/factories/contracts/isms/hook/AbstractHookISM__factory.d.ts.map +1 -0
  119. package/dist/factories/contracts/isms/{native/AbstractNativeISM__factory.js → hook/AbstractHookISM__factory.js} +9 -9
  120. package/dist/factories/contracts/isms/hook/AbstractHookISM__factory.js.map +1 -0
  121. package/dist/factories/contracts/isms/hook/CrossChainEnabled__factory.d.ts +17 -0
  122. package/dist/factories/contracts/isms/hook/CrossChainEnabled__factory.d.ts.map +1 -0
  123. package/dist/factories/contracts/isms/hook/CrossChainEnabled__factory.js +39 -0
  124. package/dist/factories/contracts/isms/hook/CrossChainEnabled__factory.js.map +1 -0
  125. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.d.ts +59 -0
  126. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.d.ts.map +1 -0
  127. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.js +176 -0
  128. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.js.map +1 -0
  129. package/dist/factories/contracts/isms/hook/index.d.ts +5 -0
  130. package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -0
  131. package/dist/factories/contracts/isms/hook/index.js +37 -0
  132. package/dist/factories/contracts/isms/hook/index.js.map +1 -0
  133. package/dist/factories/contracts/isms/hook/optimism/CrossChainEnabledOptimism__factory.d.ts +17 -0
  134. package/dist/factories/contracts/isms/hook/optimism/CrossChainEnabledOptimism__factory.d.ts.map +1 -0
  135. package/dist/factories/contracts/isms/hook/optimism/CrossChainEnabledOptimism__factory.js +39 -0
  136. package/dist/factories/contracts/isms/hook/optimism/CrossChainEnabledOptimism__factory.js.map +1 -0
  137. package/dist/factories/contracts/isms/hook/optimism/LibOptimism__factory.d.ts +25 -0
  138. package/dist/factories/contracts/isms/hook/optimism/LibOptimism__factory.d.ts.map +1 -0
  139. package/dist/factories/contracts/isms/hook/optimism/LibOptimism__factory.js +46 -0
  140. package/dist/factories/contracts/isms/hook/optimism/LibOptimism__factory.js.map +1 -0
  141. package/dist/factories/contracts/isms/hook/optimism/OptimismISM__factory.d.ts +70 -0
  142. package/dist/factories/contracts/isms/hook/optimism/OptimismISM__factory.d.ts.map +1 -0
  143. package/dist/factories/contracts/isms/hook/optimism/OptimismISM__factory.js +215 -0
  144. package/dist/factories/contracts/isms/hook/optimism/OptimismISM__factory.js.map +1 -0
  145. package/dist/factories/contracts/isms/hook/optimism/index.d.ts +4 -0
  146. package/dist/factories/contracts/isms/hook/optimism/index.d.ts.map +1 -0
  147. package/dist/factories/contracts/isms/hook/optimism/index.js +13 -0
  148. package/dist/factories/contracts/isms/hook/optimism/index.js.map +1 -0
  149. package/dist/factories/contracts/isms/index.d.ts +1 -1
  150. package/dist/factories/contracts/isms/index.d.ts.map +1 -1
  151. package/dist/factories/contracts/isms/index.js +2 -2
  152. package/dist/factories/contracts/isms/index.js.map +1 -1
  153. package/dist/factories/contracts/libs/index.d.ts +0 -1
  154. package/dist/factories/contracts/libs/index.d.ts.map +1 -1
  155. package/dist/factories/contracts/libs/index.js +1 -25
  156. package/dist/factories/contracts/libs/index.js.map +1 -1
  157. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +3 -3
  158. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  159. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +5 -10
  160. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  161. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageDispatcher__factory.d.ts +48 -0
  162. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageDispatcher__factory.d.ts.map +1 -0
  163. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageDispatcher__factory.js +107 -0
  164. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageDispatcher__factory.js.map +1 -0
  165. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageExecutor__factory.d.ts +31 -0
  166. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageExecutor__factory.d.ts.map +1 -0
  167. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageExecutor__factory.js +60 -0
  168. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageExecutor__factory.js.map +1 -0
  169. package/dist/factories/contracts/mock/MockERC5164.sol/index.d.ts +3 -0
  170. package/dist/factories/contracts/mock/MockERC5164.sol/index.d.ts.map +1 -0
  171. package/dist/factories/contracts/mock/MockERC5164.sol/index.js +11 -0
  172. package/dist/factories/contracts/mock/MockERC5164.sol/index.js.map +1 -0
  173. package/dist/factories/contracts/mock/index.d.ts +1 -0
  174. package/dist/factories/contracts/mock/index.d.ts.map +1 -1
  175. package/dist/factories/contracts/mock/index.js +25 -1
  176. package/dist/factories/contracts/mock/index.js.map +1 -1
  177. package/dist/index.d.ts +20 -8
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +23 -11
  180. package/dist/index.js.map +1 -1
  181. package/package.json +4 -5
  182. package/dist/@openzeppelin/contracts/vendor/index.d.ts +0 -3
  183. package/dist/@openzeppelin/contracts/vendor/index.d.ts.map +0 -1
  184. package/dist/@openzeppelin/contracts/vendor/index.js.map +0 -1
  185. package/dist/@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger.d.ts +0 -102
  186. package/dist/@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger.d.ts.map +0 -1
  187. package/dist/@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger.js.map +0 -1
  188. package/dist/@openzeppelin/contracts/vendor/optimism/index.d.ts +0 -2
  189. package/dist/@openzeppelin/contracts/vendor/optimism/index.d.ts.map +0 -1
  190. package/dist/@openzeppelin/contracts/vendor/optimism/index.js.map +0 -1
  191. package/dist/contracts/CheckpointFraudProofs.d.ts +0 -103
  192. package/dist/contracts/CheckpointFraudProofs.d.ts.map +0 -1
  193. package/dist/contracts/CheckpointFraudProofs.js.map +0 -1
  194. package/dist/contracts/isms/native/AbstractNativeISM.d.ts.map +0 -1
  195. package/dist/contracts/isms/native/AbstractNativeISM.js.map +0 -1
  196. package/dist/contracts/isms/native/OptimismISM.d.ts.map +0 -1
  197. package/dist/contracts/isms/native/OptimismISM.js.map +0 -1
  198. package/dist/contracts/isms/native/index.d.ts +0 -3
  199. package/dist/contracts/isms/native/index.d.ts.map +0 -1
  200. package/dist/contracts/isms/native/index.js.map +0 -1
  201. package/dist/contracts/libs/TestMerkle.sol/MerkleTree.d.ts +0 -77
  202. package/dist/contracts/libs/TestMerkle.sol/MerkleTree.d.ts.map +0 -1
  203. package/dist/contracts/libs/TestMerkle.sol/MerkleTree.js.map +0 -1
  204. package/dist/contracts/libs/TestMerkle.sol/index.d.ts +0 -2
  205. package/dist/contracts/libs/TestMerkle.sol/index.d.ts.map +0 -1
  206. package/dist/contracts/libs/TestMerkle.sol/index.js.map +0 -1
  207. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts +0 -2
  208. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts.map +0 -1
  209. package/dist/factories/@openzeppelin/contracts/vendor/index.js.map +0 -1
  210. package/dist/factories/@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger__factory.d.ts.map +0 -1
  211. package/dist/factories/@openzeppelin/contracts/vendor/optimism/ICrossDomainMessenger__factory.js.map +0 -1
  212. package/dist/factories/@openzeppelin/contracts/vendor/optimism/index.d.ts +0 -2
  213. package/dist/factories/@openzeppelin/contracts/vendor/optimism/index.d.ts.map +0 -1
  214. package/dist/factories/@openzeppelin/contracts/vendor/optimism/index.js +0 -9
  215. package/dist/factories/@openzeppelin/contracts/vendor/optimism/index.js.map +0 -1
  216. package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +0 -45
  217. package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts.map +0 -1
  218. package/dist/factories/contracts/CheckpointFraudProofs__factory.js +0 -231
  219. package/dist/factories/contracts/CheckpointFraudProofs__factory.js.map +0 -1
  220. package/dist/factories/contracts/isms/native/AbstractNativeISM__factory.d.ts.map +0 -1
  221. package/dist/factories/contracts/isms/native/AbstractNativeISM__factory.js.map +0 -1
  222. package/dist/factories/contracts/isms/native/OptimismISM__factory.d.ts +0 -66
  223. package/dist/factories/contracts/isms/native/OptimismISM__factory.d.ts.map +0 -1
  224. package/dist/factories/contracts/isms/native/OptimismISM__factory.js +0 -194
  225. package/dist/factories/contracts/isms/native/OptimismISM__factory.js.map +0 -1
  226. package/dist/factories/contracts/isms/native/index.d.ts +0 -3
  227. package/dist/factories/contracts/isms/native/index.d.ts.map +0 -1
  228. package/dist/factories/contracts/isms/native/index.js +0 -11
  229. package/dist/factories/contracts/isms/native/index.js.map +0 -1
  230. package/dist/factories/contracts/libs/TestMerkle.sol/MerkleTree__factory.d.ts +0 -41
  231. package/dist/factories/contracts/libs/TestMerkle.sol/MerkleTree__factory.d.ts.map +0 -1
  232. package/dist/factories/contracts/libs/TestMerkle.sol/MerkleTree__factory.js +0 -151
  233. package/dist/factories/contracts/libs/TestMerkle.sol/MerkleTree__factory.js.map +0 -1
  234. package/dist/factories/contracts/libs/TestMerkle.sol/index.d.ts +0 -2
  235. package/dist/factories/contracts/libs/TestMerkle.sol/index.d.ts.map +0 -1
  236. package/dist/factories/contracts/libs/TestMerkle.sol/index.js +0 -9
  237. package/dist/factories/contracts/libs/TestMerkle.sol/index.js.map +0 -1
  238. package/docs/book.css +0 -13
  239. package/docs/book.toml +0 -12
  240. package/docs/solidity.min.js +0 -74
  241. package/docs/src/README.md +0 -15
  242. package/docs/src/SUMMARY.md +0 -128
  243. package/docs/src/contracts/GasRouter.sol/abstract.GasRouter.md +0 -124
  244. package/docs/src/contracts/HyperlaneConnectionClient.sol/abstract.HyperlaneConnectionClient.md +0 -191
  245. package/docs/src/contracts/Mailbox.sol/contract.Mailbox.md +0 -251
  246. package/docs/src/contracts/OwnableMulticall.sol/contract.OwnableMulticall.md +0 -41
  247. package/docs/src/contracts/PausableReentrancyGuard.sol/abstract.PausableReentrancyGuardUpgradeable.md +0 -100
  248. package/docs/src/contracts/README.md +0 -19
  249. package/docs/src/contracts/Router.sol/abstract.Router.md +0 -255
  250. package/docs/src/contracts/ValidatorAnnounce.sol/contract.ValidatorAnnounce.md +0 -117
  251. package/docs/src/contracts/hooks/OptimismMessageHook.sol/contract.OptimismMessageHook.md +0 -71
  252. package/docs/src/contracts/hooks/README.md +0 -4
  253. package/docs/src/contracts/igps/InterchainGasPaymaster.sol/contract.InterchainGasPaymaster.md +0 -231
  254. package/docs/src/contracts/igps/OverheadIgp.sol/contract.OverheadIgp.md +0 -161
  255. package/docs/src/contracts/igps/README.md +0 -6
  256. package/docs/src/contracts/igps/gas-oracles/README.md +0 -4
  257. package/docs/src/contracts/igps/gas-oracles/StorageGasOracle.sol/contract.StorageGasOracle.md +0 -114
  258. package/docs/src/contracts/interfaces/IGasOracle.sol/interface.IGasOracle.md +0 -25
  259. package/docs/src/contracts/interfaces/IHyperlaneConnectionClient.sol/interface.IHyperlaneConnectionClient.md +0 -43
  260. package/docs/src/contracts/interfaces/IInterchainGasPaymaster.sol/interface.IInterchainGasPaymaster.md +0 -33
  261. package/docs/src/contracts/interfaces/IInterchainSecurityModule.sol/interface.IInterchainSecurityModule.md +0 -55
  262. package/docs/src/contracts/interfaces/IInterchainSecurityModule.sol/interface.ISpecifiesInterchainSecurityModule.md +0 -12
  263. package/docs/src/contracts/interfaces/ILiquidityLayerMessageRecipient.sol/interface.ILiquidityLayerMessageRecipient.md +0 -13
  264. package/docs/src/contracts/interfaces/ILiquidityLayerRouter.sol/interface.ILiquidityLayerRouter.md +0 -19
  265. package/docs/src/contracts/interfaces/IMailbox.sol/interface.IMailbox.md +0 -103
  266. package/docs/src/contracts/interfaces/IMessageRecipient.sol/interface.IMessageRecipient.md +0 -12
  267. package/docs/src/contracts/interfaces/IRouter.sol/interface.IRouter.md +0 -33
  268. package/docs/src/contracts/interfaces/IValidatorAnnounce.sol/interface.IValidatorAnnounce.md +0 -78
  269. package/docs/src/contracts/interfaces/README.md +0 -17
  270. package/docs/src/contracts/interfaces/hooks/IMessageHook.sol/interface.IMessageHook.md +0 -12
  271. package/docs/src/contracts/interfaces/hooks/README.md +0 -4
  272. package/docs/src/contracts/interfaces/isms/IAggregationIsm.sol/interface.IAggregationIsm.md +0 -36
  273. package/docs/src/contracts/interfaces/isms/IMultisigIsm.sol/interface.IMultisigIsm.md +0 -36
  274. package/docs/src/contracts/interfaces/isms/IRoutingIsm.sol/interface.IRoutingIsm.md +0 -31
  275. package/docs/src/contracts/interfaces/isms/README.md +0 -6
  276. package/docs/src/contracts/interfaces/middleware/IInterchainAccountRouter.sol/interface.IInterchainAccountRouter.md +0 -64
  277. package/docs/src/contracts/interfaces/middleware/IInterchainQueryRouter.sol/interface.IInterchainQueryRouter.md +0 -21
  278. package/docs/src/contracts/interfaces/middleware/README.md +0 -5
  279. package/docs/src/contracts/isms/README.md +0 -7
  280. package/docs/src/contracts/isms/aggregation/AbstractAggregationIsm.sol/abstract.AbstractAggregationIsm.md +0 -60
  281. package/docs/src/contracts/isms/aggregation/README.md +0 -6
  282. package/docs/src/contracts/isms/aggregation/StaticAggregationIsm.sol/contract.StaticAggregationIsm.md +0 -30
  283. package/docs/src/contracts/isms/aggregation/StaticAggregationIsmFactory.sol/contract.StaticAggregationIsmFactory.md +0 -15
  284. package/docs/src/contracts/isms/multisig/AbstractMerkleRootMultisigIsm.sol/abstract.AbstractMerkleRootMultisigIsm.md +0 -78
  285. package/docs/src/contracts/isms/multisig/AbstractMessageIdMultisigIsm.sol/abstract.AbstractMessageIdMultisigIsm.md +0 -69
  286. package/docs/src/contracts/isms/multisig/AbstractMultisigIsm.sol/abstract.AbstractMultisigIsm.md +0 -102
  287. package/docs/src/contracts/isms/multisig/LegacyMultisigIsm.sol/contract.LegacyMultisigIsm.md +0 -355
  288. package/docs/src/contracts/isms/multisig/README.md +0 -12
  289. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/abstract.AbstractMetaProxyMultisigIsm.md +0 -36
  290. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsm.md +0 -11
  291. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsmFactory.md +0 -15
  292. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsm.md +0 -10
  293. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsmFactory.md +0 -15
  294. package/docs/src/contracts/isms/native/AbstractNativeISM.sol/abstract.AbstractNativeISM.md +0 -44
  295. package/docs/src/contracts/isms/native/OptimismISM.sol/contract.OptimismISM.md +0 -66
  296. package/docs/src/contracts/isms/native/README.md +0 -5
  297. package/docs/src/contracts/isms/routing/AbstractRoutingIsm.sol/abstract.AbstractRoutingIsm.md +0 -55
  298. package/docs/src/contracts/isms/routing/DomainRoutingIsm.sol/contract.DomainRoutingIsm.md +0 -112
  299. package/docs/src/contracts/isms/routing/DomainRoutingIsmFactory.sol/contract.DomainRoutingIsmFactory.md +0 -47
  300. package/docs/src/contracts/isms/routing/InterchainAccountIsm.sol/contract.InterchainAccountIsm.md +0 -44
  301. package/docs/src/contracts/isms/routing/README.md +0 -7
  302. package/docs/src/contracts/libs/Call.sol/library.CallLib.md +0 -124
  303. package/docs/src/contracts/libs/CheckpointLib.sol/library.CheckpointLib.md +0 -61
  304. package/docs/src/contracts/libs/EnumerableMapExtended.sol/library.EnumerableMapExtended.md +0 -63
  305. package/docs/src/contracts/libs/LegacyCheckpointLib.sol/library.LegacyCheckpointLib.md +0 -55
  306. package/docs/src/contracts/libs/Merkle.sol/library.MerkleLib.md +0 -354
  307. package/docs/src/contracts/libs/Message.sol/library.Message.md +0 -304
  308. package/docs/src/contracts/libs/MetaProxy.sol/library.MetaProxy.md +0 -36
  309. package/docs/src/contracts/libs/MinimalProxy.sol/library.MinimalProxy.md +0 -34
  310. package/docs/src/contracts/libs/README.md +0 -16
  311. package/docs/src/contracts/libs/StaticMOfNAddressSetFactory.sol/abstract.StaticMOfNAddressSetFactory.md +0 -123
  312. package/docs/src/contracts/libs/TestMerkle.sol/contract.MerkleTree.md +0 -66
  313. package/docs/src/contracts/libs/TypeCasts.sol/library.TypeCasts.md +0 -19
  314. package/docs/src/contracts/libs/ValidatorAnnouncements.sol/library.ValidatorAnnouncements.md +0 -31
  315. package/docs/src/contracts/libs/isms/AggregationIsmMetadata.sol/library.AggregationIsmMetadata.md +0 -97
  316. package/docs/src/contracts/libs/isms/LegacyMultisigIsmMetadata.sol/library.LegacyMultisigIsmMetadata.md +0 -296
  317. package/docs/src/contracts/libs/isms/MerkleRootMultisigIsmMetadata.sol/library.MerkleRootMultisigIsmMetadata.md +0 -177
  318. package/docs/src/contracts/libs/isms/MessageIdMultisigIsmMetadata.sol/library.MessageIdMultisigIsmMetadata.md +0 -109
  319. package/docs/src/contracts/libs/isms/README.md +0 -7
  320. package/docs/src/contracts/libs/middleware/InterchainAccountMessage.sol/library.InterchainAccountMessage.md +0 -134
  321. package/docs/src/contracts/libs/middleware/InterchainQueryMessage.sol/library.InterchainQueryMessage.md +0 -203
  322. package/docs/src/contracts/libs/middleware/README.md +0 -5
  323. package/docs/src/contracts/middleware/InterchainAccountRouter.sol/contract.InterchainAccountRouter.md +0 -545
  324. package/docs/src/contracts/middleware/InterchainQueryRouter.sol/contract.InterchainQueryRouter.md +0 -119
  325. package/docs/src/contracts/middleware/README.md +0 -6
  326. package/docs/src/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol/contract.LiquidityLayerRouter.md +0 -81
  327. package/docs/src/contracts/middleware/liquidity-layer/README.md +0 -6
  328. package/docs/src/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol/contract.CircleBridgeAdapter.md +0 -197
  329. package/docs/src/contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol/contract.PortalAdapter.md +0 -189
  330. package/docs/src/contracts/middleware/liquidity-layer/adapters/README.md +0 -5
  331. package/docs/src/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md +0 -23
  332. package/docs/src/contracts/middleware/liquidity-layer/interfaces/README.md +0 -6
  333. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol/interface.ICircleMessageTransmitter.md +0 -54
  334. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.sol/interface.ITokenMessenger.md +0 -92
  335. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/README.md +0 -5
  336. package/docs/src/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.sol/interface.IPortalTokenBridge.md +0 -131
  337. package/docs/src/contracts/middleware/liquidity-layer/interfaces/portal/README.md +0 -4
  338. package/docs/src/contracts/mock/MockCircleMessageTransmitter.sol/contract.MockCircleMessageTransmitter.md +0 -58
  339. package/docs/src/contracts/mock/MockCircleTokenMessenger.sol/contract.MockCircleTokenMessenger.md +0 -44
  340. package/docs/src/contracts/mock/MockHyperlaneEnvironment.sol/contract.MockHyperlaneEnvironment.md +0 -69
  341. package/docs/src/contracts/mock/MockMailbox.sol/contract.MockMailbox.md +0 -137
  342. package/docs/src/contracts/mock/MockPortalBridge.sol/contract.MockPortalBridge.md +0 -82
  343. package/docs/src/contracts/mock/MockToken.sol/contract.MockToken.md +0 -22
  344. package/docs/src/contracts/mock/README.md +0 -9
  345. package/docs/src/contracts/test/LightTestRecipient.sol/contract.LightTestRecipient.md +0 -15
  346. package/docs/src/contracts/test/README.md +0 -20
  347. package/docs/src/contracts/test/TestGasRouter.sol/contract.TestGasRouter.md +0 -27
  348. package/docs/src/contracts/test/TestHyperlaneConnectionClient.sol/contract.TestHyperlaneConnectionClient.md +0 -29
  349. package/docs/src/contracts/test/TestInterchainGasPaymaster.sol/contract.TestInterchainGasPaymaster.md +0 -30
  350. package/docs/src/contracts/test/TestLegacyMultisigIsm.sol/contract.TestLegacyMultisigIsm.md +0 -15
  351. package/docs/src/contracts/test/TestLiquidityLayerMessageRecipient.sol/contract.TestLiquidityLayerMessageRecipient.md +0 -23
  352. package/docs/src/contracts/test/TestMailbox.sol/contract.TestMailbox.md +0 -29
  353. package/docs/src/contracts/test/TestMerkle.sol/contract.TestMerkle.md +0 -50
  354. package/docs/src/contracts/test/TestMessage.sol/contract.TestMessage.md +0 -68
  355. package/docs/src/contracts/test/TestMultisigIsm.sol/contract.TestMultisigIsm.md +0 -51
  356. package/docs/src/contracts/test/TestQuery.sol/contract.TestQuery.md +0 -45
  357. package/docs/src/contracts/test/TestQuerySender.sol/contract.TestQuerySender.md +0 -128
  358. package/docs/src/contracts/test/TestRecipient.sol/contract.TestRecipient.md +0 -78
  359. package/docs/src/contracts/test/TestRouter.sol/contract.TestRouter.md +0 -63
  360. package/docs/src/contracts/test/TestSendReceiver.sol/contract.TestSendReceiver.md +0 -49
  361. package/docs/src/contracts/test/TestTokenRecipient.sol/contract.TestTokenRecipient.md +0 -80
  362. package/docs/src/contracts/test/bad-recipient/BadRecipient1.sol/contract.BadRecipient1.md +0 -15
  363. package/docs/src/contracts/test/bad-recipient/BadRecipient2.sol/contract.BadRecipient2.md +0 -12
  364. package/docs/src/contracts/test/bad-recipient/BadRecipient3.sol/contract.BadRecipient3.md +0 -15
  365. package/docs/src/contracts/test/bad-recipient/BadRecipient5.sol/contract.BadRecipient5.md +0 -15
  366. package/docs/src/contracts/test/bad-recipient/BadRecipient6.sol/contract.BadRecipient6.md +0 -15
  367. package/docs/src/contracts/test/bad-recipient/README.md +0 -8
  368. package/docs/src/contracts/upgrade/README.md +0 -4
  369. package/docs/src/contracts/upgrade/Versioned.sol/contract.Versioned.md +0 -14
  370. /package/dist/{@openzeppelin/contracts/vendor → contracts/hooks/ERC5164}/index.js +0 -0
  371. /package/dist/{@openzeppelin/contracts/vendor/optimism → contracts/hooks/ERC5164/interfaces}/index.js +0 -0
  372. /package/dist/contracts/isms/{native → hook/optimism}/OptimismISM.js +0 -0
  373. /package/dist/contracts/isms/{native → hook/optimism}/index.js +0 -0
  374. /package/dist/contracts/{libs/TestMerkle.sol → mock/MockERC5164.sol}/index.js +0 -0
@@ -0,0 +1,95 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ // ============ Internal Imports ============
17
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
18
+ import {IMessageHook} from "../../interfaces/hooks/IMessageHook.sol";
19
+ import {IMessageDispatcher} from "./interfaces/IMessageDispatcher.sol";
20
+ import {ERC5164ISM} from "../../isms/hook/ERC5164ISM.sol";
21
+
22
+ // ============ External Imports ============
23
+
24
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
25
+
26
+ /**
27
+ * @title 5164MessageHook
28
+ * @notice Message hook to inform the 5164 ISM of messages published through
29
+ * any of the 5164 adapters.
30
+ */
31
+ contract ERC5164MessageHook is IMessageHook {
32
+ using TypeCasts for address;
33
+ // ============ Constants ============
34
+
35
+ // Domain of chain on which the ERC5164ISM is deployed
36
+ uint32 public immutable destinationDomain;
37
+ // Dispatcher used to send messages
38
+ IMessageDispatcher public immutable dispatcher;
39
+ // address for ERC5164ISM to verify messages
40
+ address public immutable ism;
41
+
42
+ // ============ Constructor ============
43
+
44
+ constructor(
45
+ uint32 _destinationDomain,
46
+ address _dispatcher,
47
+ address _ism
48
+ ) {
49
+ require(
50
+ _destinationDomain != 0,
51
+ "ERC5164Hook: invalid destination domain"
52
+ );
53
+ require(_ism != address(0), "ERC5164Hook: invalid ISM");
54
+ destinationDomain = _destinationDomain;
55
+
56
+ require(
57
+ Address.isContract(_dispatcher),
58
+ "ERC5164Hook: invalid dispatcher"
59
+ );
60
+ dispatcher = IMessageDispatcher(_dispatcher);
61
+ ism = _ism;
62
+ }
63
+
64
+ // ============ External Functions ============
65
+
66
+ /**
67
+ * @notice Hook to inform the ERC5164ISM of messages published through.
68
+ * @dev anyone can call this function, that's why we need to send msg.sender
69
+ * @param _destinationDomain The destination domain of the message.
70
+ * @param _messageId The message ID.
71
+ * @return gasOverhead The gas overhead for the function call on destination.
72
+ */
73
+ function postDispatch(uint32 _destinationDomain, bytes32 _messageId)
74
+ public
75
+ payable
76
+ override
77
+ returns (uint256)
78
+ {
79
+ require(msg.value == 0, "ERC5164Hook: no value allowed");
80
+ require(
81
+ _destinationDomain == destinationDomain,
82
+ "ERC5164Hook: invalid destination domain"
83
+ );
84
+
85
+ bytes memory _payload = abi.encodeCall(
86
+ ERC5164ISM.verifyMessageId,
87
+ (msg.sender.addressToBytes32(), _messageId)
88
+ );
89
+
90
+ dispatcher.dispatchMessage(_destinationDomain, ism, _payload);
91
+
92
+ // EIP-5164 doesn't specify a gas overhead
93
+ return 0;
94
+ }
95
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /**
5
+ * @title ERC-5164: Cross-Chain Execution Standard
6
+ * @dev See https://eips.ethereum.org/EIPS/eip-5164
7
+ */
8
+ interface IMessageDispatcher {
9
+ /**
10
+ * @notice Emitted when a message has successfully been dispatched to the executor chain.
11
+ * @param messageId ID uniquely identifying the message
12
+ * @param from Address that dispatched the message
13
+ * @param toChainId ID of the chain receiving the message
14
+ * @param to Address that will receive the message
15
+ * @param data Data that was dispatched
16
+ */
17
+ event MessageDispatched(
18
+ bytes32 indexed messageId,
19
+ address indexed from,
20
+ uint256 indexed toChainId,
21
+ address to,
22
+ bytes data
23
+ );
24
+
25
+ function dispatchMessage(
26
+ uint256 toChainId,
27
+ address to,
28
+ bytes calldata data
29
+ ) external returns (bytes32);
30
+ }
@@ -15,7 +15,8 @@ pragma solidity >=0.8.0;
15
15
 
16
16
  // ============ Internal Imports ============
17
17
  import {IMessageHook} from "../interfaces/hooks/IMessageHook.sol";
18
- import {OptimismISM} from "../isms/native/OptimismISM.sol";
18
+ import {OptimismISM} from "../isms/hook/optimism/OptimismISM.sol";
19
+ import {TypeCasts} from "../libs/TypeCasts.sol";
19
20
 
20
21
  // ============ External Imports ============
21
22
  import {ICrossDomainMessenger} from "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol";
@@ -27,6 +28,7 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
27
28
  * the native Optimism bridge.
28
29
  */
29
30
  contract OptimismMessageHook is IMessageHook {
31
+ using TypeCasts for address;
30
32
  // ============ Constants ============
31
33
 
32
34
  // Domain of chain on which the optimism ISM is deployed
@@ -85,7 +87,7 @@ contract OptimismMessageHook is IMessageHook {
85
87
 
86
88
  bytes memory _payload = abi.encodeCall(
87
89
  OptimismISM.verifyMessageId,
88
- (msg.sender, _messageId)
90
+ (msg.sender.addressToBytes32(), _messageId)
89
91
  );
90
92
 
91
93
  l1Messenger.sendMessage(ism, _payload, GAS_LIMIT);
@@ -1,6 +1,18 @@
1
1
  // SPDX-License-Identifier: MIT OR Apache-2.0
2
2
  pragma solidity >=0.8.0;
3
3
 
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
4
16
  // ============ Internal Imports ============
5
17
 
6
18
  import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
@@ -11,7 +23,6 @@ import {TypeCasts} from "../../libs/TypeCasts.sol";
11
23
 
12
24
  import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
13
25
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
14
- import {Address} from "@openzeppelin/contracts/utils/Address.sol";
15
26
 
16
27
  /**
17
28
  * @title ArbtractNativeISM
@@ -19,19 +30,16 @@ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
19
30
  * @dev In the future, the hook might be moved inside the Mailbox which doesn't require storage mappings for senders.
20
31
  * for more details see https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/2381
21
32
  */
22
- abstract contract AbstractNativeISM is
23
- IInterchainSecurityModule,
24
- Initializable
25
- {
33
+ abstract contract AbstractHookISM is IInterchainSecurityModule, Initializable {
26
34
  // ============ Public Storage ============
27
35
 
28
- // mapping to check if the specific messageID from a specific sender has been received
36
+ // Maps messageId to whether or not the sender attested to that message ID on the origin chain
29
37
  // @dev anyone can send an untrusted messageId, so need to check for that while verifying
30
- mapping(bytes32 => mapping(address => bool)) public verifiedMessageIds;
38
+ mapping(bytes32 => mapping(bytes32 => bool)) public verifiedMessageIds;
31
39
 
32
40
  // ============ Events ============
33
41
 
34
- event ReceivedMessage(address indexed sender, bytes32 indexed messageId);
42
+ event ReceivedMessage(bytes32 indexed sender, bytes32 indexed messageId);
35
43
 
36
44
  // ============ External Functions ============
37
45
 
@@ -44,7 +52,7 @@ abstract contract AbstractNativeISM is
44
52
  bytes calldata _message
45
53
  ) external view returns (bool) {
46
54
  bytes32 _messageId = Message.id(_message);
47
- address _messageSender = Message.senderAddress(_message);
55
+ bytes32 _messageSender = Message.sender(_message);
48
56
 
49
57
  return verifiedMessageIds[_messageId][_messageSender];
50
58
  }
@@ -0,0 +1,57 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v4.6.0) (crosschain/CrossChainEnabled.sol)
3
+
4
+ pragma solidity ^0.8.4;
5
+
6
+ /**
7
+ * @author OpenZeppelin
8
+ * @dev LibOptimism was removed from the OpenZeppelin Contracts library as of v4.7.0
9
+ * @dev Provides information for building cross-chain aware contracts. This
10
+ * abstract contract provides accessors and modifiers to control the execution
11
+ * flow when receiving cross-chain messages.
12
+ *
13
+ * Actual implementations of cross-chain aware contracts, which are based on
14
+ * this abstraction, will have to inherit from a bridge-specific
15
+ * specialization. Such specializations are provided under
16
+ * `crosschain/<chain>/CrossChainEnabled<chain>.sol`.
17
+ *
18
+ * _Available since v4.6._
19
+ */
20
+ abstract contract CrossChainEnabled {
21
+ error NotCrossChainCall();
22
+ error InvalidCrossChainSender(address actual, address expected);
23
+ /**
24
+ * @dev Throws if the current function call is not the result of a
25
+ * cross-chain execution.
26
+ */
27
+ modifier onlyCrossChain() {
28
+ if (!_isCrossChain()) revert NotCrossChainCall();
29
+ _;
30
+ }
31
+
32
+ /**
33
+ * @dev Throws if the current function call is not the result of a
34
+ * cross-chain execution initiated by `account`.
35
+ */
36
+ modifier onlyCrossChainSender(address expected) {
37
+ address actual = _crossChainSender();
38
+ if (expected != actual)
39
+ revert InvalidCrossChainSender(actual, expected);
40
+ _;
41
+ }
42
+
43
+ /**
44
+ * @dev Returns whether the current function call is the result of a
45
+ * cross-chain message.
46
+ */
47
+ function _isCrossChain() internal view virtual returns (bool);
48
+
49
+ /**
50
+ * @dev Returns the address of the sender of the cross-chain message that
51
+ * triggered the current function call.
52
+ *
53
+ * IMPORTANT: Should revert with `NotCrossChainCall` if the current function
54
+ * call is not the result of a cross-chain message.
55
+ */
56
+ function _crossChainSender() internal view virtual returns (address);
57
+ }
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ // ============ Internal Imports ============
17
+
18
+ import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
19
+ import {ERC5164MessageHook} from "../../hooks/ERC5164/ERC5164MessageHook.sol";
20
+ import {Message} from "../../libs/Message.sol";
21
+ import {TypeCasts} from "../../libs/TypeCasts.sol";
22
+ import {AbstractHookISM} from "./AbstractHookISM.sol";
23
+
24
+ // ============ External Imports ============
25
+
26
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
27
+
28
+ /**
29
+ * @title ERC5164ISM
30
+ * @notice Uses the generic eip-5164 standard to verify interchain messages.
31
+ */
32
+ contract ERC5164ISM is AbstractHookISM {
33
+ // ============ Constants ============
34
+
35
+ uint8 public constant moduleType =
36
+ uint8(IInterchainSecurityModule.Types.NULL);
37
+ // corresponding 5164 executor address
38
+ address public immutable executor;
39
+
40
+ // ============ Modifiers ============
41
+
42
+ /**
43
+ * @notice Check if sender is authorized to message `verifyMessageId`.
44
+ */
45
+ modifier isAuthorized() {
46
+ require(
47
+ msg.sender == executor,
48
+ "ERC5164ISM: sender is not the executor"
49
+ );
50
+ _;
51
+ }
52
+
53
+ // ============ Constructor ============
54
+
55
+ constructor(address _executor) {
56
+ require(Address.isContract(_executor), "ERC5164ISM: invalid executor");
57
+ executor = _executor;
58
+ }
59
+
60
+ // ============ External Functions ============
61
+
62
+ /**
63
+ * @notice Receive a message from the executor.
64
+ * @param _sender Left-padded address of the sender.
65
+ * @param _messageId Hyperlane ID for the message.
66
+ */
67
+ function verifyMessageId(bytes32 _sender, bytes32 _messageId)
68
+ external
69
+ isAuthorized
70
+ {
71
+ verifiedMessageIds[_messageId][_sender] = true;
72
+
73
+ emit ReceivedMessage(_sender, _messageId);
74
+ }
75
+ }
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v4.7.0) (crosschain/optimism/CrossChainEnabledOptimism.sol)
3
+
4
+ pragma solidity ^0.8.4;
5
+
6
+ import {CrossChainEnabled} from "../CrossChainEnabled.sol";
7
+ import {LibOptimism} from "./LibOptimism.sol";
8
+
9
+ /**
10
+ * @author OpenZeppelin
11
+ * @dev CrossChainEnabledOptimism was removed from the OpenZeppelin Contracts library as of v4.7.0
12
+ * @dev https://www.optimism.io/[Optimism] specialization or the
13
+ * {CrossChainEnabled} abstraction.
14
+ *
15
+ * The messenger (`CrossDomainMessenger`) contract is provided and maintained by
16
+ * the optimism team. You can find the address of this contract on mainnet and
17
+ * kovan in the https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/deployments[deployments section of Optimism monorepo].
18
+ *
19
+ * _Available since v4.6._
20
+ */
21
+ abstract contract CrossChainEnabledOptimism is CrossChainEnabled {
22
+ /// @custom:oz-upgrades-unsafe-allow state-variable-immutable
23
+ address private immutable _messenger;
24
+
25
+ /// @custom:oz-upgrades-unsafe-allow constructor
26
+ constructor(address messenger) {
27
+ _messenger = messenger;
28
+ }
29
+
30
+ /**
31
+ * @dev see {CrossChainEnabled-_isCrossChain}
32
+ */
33
+ function _isCrossChain() internal view virtual override returns (bool) {
34
+ return LibOptimism.isCrossChain(_messenger);
35
+ }
36
+
37
+ /**
38
+ * @dev see {CrossChainEnabled-_crossChainSender}
39
+ */
40
+ function _crossChainSender()
41
+ internal
42
+ view
43
+ virtual
44
+ override
45
+ onlyCrossChain
46
+ returns (address)
47
+ {
48
+ return LibOptimism.crossChainSender(_messenger);
49
+ }
50
+ }
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v4.7.0) (crosschain/optimism/LibOptimism.sol)
3
+
4
+ pragma solidity ^0.8.4;
5
+
6
+ import {ICrossDomainMessenger} from "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol";
7
+
8
+ /**
9
+ * @dev Primitives for cross-chain aware contracts for https://www.optimism.io/[Optimism].
10
+ * See the https://community.optimism.io/docs/developers/bridge/messaging/#accessing-msg-sender[documentation]
11
+ * for the functionality used here.
12
+ */
13
+ library LibOptimism {
14
+ error NotCrossChainCall();
15
+
16
+ /**
17
+ * @dev Returns whether the current function call is the result of a
18
+ * cross-chain message relayed by `messenger`.
19
+ */
20
+ function isCrossChain(address messenger) internal view returns (bool) {
21
+ return msg.sender == messenger;
22
+ }
23
+
24
+ /**
25
+ * @dev Returns the address of the sender that triggered the current
26
+ * cross-chain message through `messenger`.
27
+ *
28
+ * NOTE: {isCrossChain} should be checked before trying to recover the
29
+ * sender, as it will revert with `NotCrossChainCall` if the current
30
+ * function call is not the result of a cross-chain message.
31
+ */
32
+ function crossChainSender(address messenger)
33
+ internal
34
+ view
35
+ returns (address)
36
+ {
37
+ if (!isCrossChain(messenger)) revert NotCrossChainCall();
38
+
39
+ return ICrossDomainMessenger(messenger).xDomainMessageSender();
40
+ }
41
+ }
@@ -1,28 +1,39 @@
1
1
  // SPDX-License-Identifier: MIT OR Apache-2.0
2
2
  pragma solidity >=0.8.0;
3
3
 
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
4
16
  // ============ Internal Imports ============
5
17
 
6
- import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
7
- import {OptimismMessageHook} from "../../hooks/OptimismMessageHook.sol";
8
- import {Message} from "../../libs/Message.sol";
9
- import {TypeCasts} from "../../libs/TypeCasts.sol";
10
- import {AbstractNativeISM} from "./AbstractNativeISM.sol";
18
+ import {IInterchainSecurityModule} from "../../../interfaces/IInterchainSecurityModule.sol";
19
+ import {OptimismMessageHook} from "../../../hooks/OptimismMessageHook.sol";
20
+ import {Message} from "../../../libs/Message.sol";
21
+ import {TypeCasts} from "../../../libs/TypeCasts.sol";
22
+ import {AbstractHookISM} from "../AbstractHookISM.sol";
23
+ import {CrossChainEnabledOptimism} from "./CrossChainEnabledOptimism.sol";
11
24
 
12
25
  // ============ External Imports ============
13
26
 
14
27
  import {ICrossDomainMessenger} from "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol";
15
- import {CrossChainEnabledOptimism} from "@openzeppelin/contracts/crosschain/optimism/CrossChainEnabledOptimism.sol";
16
28
  import {Address} from "@openzeppelin/contracts/utils/Address.sol";
17
29
 
18
30
  /**
19
31
  * @title OptimismISM
20
32
  * @notice Uses the native Optimism bridge to verify interchain messages.
21
33
  */
22
- contract OptimismISM is CrossChainEnabledOptimism, AbstractNativeISM {
34
+ contract OptimismISM is CrossChainEnabledOptimism, AbstractHookISM {
23
35
  // ============ Constants ============
24
36
 
25
- // solhint-disable-next-line const-name-snakecase
26
37
  uint8 public constant moduleType =
27
38
  uint8(IInterchainSecurityModule.Types.NULL);
28
39
 
@@ -66,10 +77,10 @@ contract OptimismISM is CrossChainEnabledOptimism, AbstractNativeISM {
66
77
  /**
67
78
  * @notice Receive a message from the L2 messenger.
68
79
  * @dev Only callable by the L2 messenger.
69
- * @param _sender Address of the sender.
80
+ * @param _sender Left-padded address of the sender.
70
81
  * @param _messageId Hyperlane ID for the message.
71
82
  */
72
- function verifyMessageId(address _sender, bytes32 _messageId)
83
+ function verifyMessageId(bytes32 _sender, bytes32 _messageId)
73
84
  external
74
85
  isAuthorized
75
86
  {
@@ -34,8 +34,8 @@ contract InterchainAccountRouter is
34
34
  // ============ Constants ============
35
35
 
36
36
  uint32 internal immutable localDomain;
37
- address internal immutable implementation;
38
- bytes32 internal immutable bytecodeHash;
37
+ address internal implementation;
38
+ bytes32 internal bytecodeHash;
39
39
 
40
40
  // ============ Private Storage ============
41
41
  uint32[] private _domains;
@@ -100,20 +100,9 @@ contract InterchainAccountRouter is
100
100
  * will be cloned for each interchain account.
101
101
  * @param _localDomain The Hyperlane domain ID on which this contract is
102
102
  * deployed.
103
- * @param _proxy The address of a proxy contract that delegates calls to
104
- * this contract. Used by OwnableMulticall for access control.
105
- * @dev Set proxy to address(0) to use this contract without a proxy.
106
103
  */
107
- constructor(uint32 _localDomain, address _proxy) {
104
+ constructor(uint32 _localDomain) {
108
105
  localDomain = _localDomain;
109
- // TODO: always proxy and remove this sentinel
110
- if (_proxy == address(0)) {
111
- _proxy = address(this);
112
- }
113
- implementation = address(new OwnableMulticall(_proxy));
114
- // cannot be stored immutably because it is dynamically sized
115
- bytes memory _bytecode = MinimalProxy.bytecode(implementation);
116
- bytecodeHash = keccak256(_bytecode);
117
106
  }
118
107
 
119
108
  // ============ Initializers ============
@@ -138,6 +127,11 @@ contract InterchainAccountRouter is
138
127
  _owner
139
128
  );
140
129
  require(localDomain == mailbox.localDomain(), "domain mismatch");
130
+
131
+ implementation = address(new OwnableMulticall(address(this)));
132
+ // cannot be stored immutably because it is dynamically sized
133
+ bytes memory _bytecode = MinimalProxy.bytecode(implementation);
134
+ bytecodeHash = keccak256(_bytecode);
141
135
  }
142
136
 
143
137
  // ============ External Functions ============
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: MIT or Apache-2.0
2
+ pragma solidity ^0.8.13;
3
+
4
+ import {IMessageDispatcher} from "../hooks/ERC5164/interfaces/IMessageDispatcher.sol";
5
+
6
+ contract MockMessageDispatcher is IMessageDispatcher {
7
+ function dispatchMessage(
8
+ uint256 toChainId,
9
+ address to,
10
+ bytes calldata data
11
+ ) external returns (bytes32) {
12
+ bytes32 messageId = keccak256(abi.encodePacked(toChainId, to, data));
13
+
14
+ // simulate a successful dispatch
15
+ emit MessageDispatched(messageId, msg.sender, toChainId, to, data);
16
+
17
+ return messageId;
18
+ }
19
+ }
20
+
21
+ contract MockMessageExecutor {
22
+ event MessageIdExecuted(
23
+ uint256 indexed fromChainId,
24
+ bytes32 indexed messageId
25
+ );
26
+ }
@@ -4,12 +4,10 @@ import type * as interfaces from "./interfaces";
4
4
  import type * as proxy from "./proxy";
5
5
  import type * as token from "./token";
6
6
  import type * as utils from "./utils";
7
- import type * as vendor from "./vendor";
8
7
  export type { access };
9
8
  export type { governance };
10
9
  export type { interfaces };
11
10
  export type { proxy };
12
11
  export type { token };
13
12
  export type { utils };
14
- export type { vendor };
15
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../types/@openzeppelin/contracts/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AAExC,YAAY,EAAE,MAAM,EAAE,CAAC;AAEvB,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,YAAY,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../types/@openzeppelin/contracts/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,KAAK,UAAU,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC,YAAY,EAAE,MAAM,EAAE,CAAC;AAEvB,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,YAAY,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,75 @@
1
+ import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "../../../common";
2
+ import type { FunctionFragment, Result } from "@ethersproject/abi";
3
+ import type { Listener, Provider } from "@ethersproject/providers";
4
+ import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
5
+ export interface ERC5164MessageHookInterface extends utils.Interface {
6
+ functions: {
7
+ "destinationDomain()": FunctionFragment;
8
+ "dispatcher()": FunctionFragment;
9
+ "ism()": FunctionFragment;
10
+ "postDispatch(uint32,bytes32)": FunctionFragment;
11
+ };
12
+ getFunction(nameOrSignatureOrTopic: "destinationDomain" | "dispatcher" | "ism" | "postDispatch"): FunctionFragment;
13
+ encodeFunctionData(functionFragment: "destinationDomain", values?: undefined): string;
14
+ encodeFunctionData(functionFragment: "dispatcher", values?: undefined): string;
15
+ encodeFunctionData(functionFragment: "ism", values?: undefined): string;
16
+ encodeFunctionData(functionFragment: "postDispatch", values: [BigNumberish, BytesLike]): string;
17
+ decodeFunctionResult(functionFragment: "destinationDomain", data: BytesLike): Result;
18
+ decodeFunctionResult(functionFragment: "dispatcher", data: BytesLike): Result;
19
+ decodeFunctionResult(functionFragment: "ism", data: BytesLike): Result;
20
+ decodeFunctionResult(functionFragment: "postDispatch", data: BytesLike): Result;
21
+ events: {};
22
+ }
23
+ export interface ERC5164MessageHook extends BaseContract {
24
+ connect(signerOrProvider: Signer | Provider | string): this;
25
+ attach(addressOrName: string): this;
26
+ deployed(): Promise<this>;
27
+ interface: ERC5164MessageHookInterface;
28
+ queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
29
+ listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
30
+ listeners(eventName?: string): Array<Listener>;
31
+ removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
32
+ removeAllListeners(eventName?: string): this;
33
+ off: OnEvent<this>;
34
+ on: OnEvent<this>;
35
+ once: OnEvent<this>;
36
+ removeListener: OnEvent<this>;
37
+ functions: {
38
+ destinationDomain(overrides?: CallOverrides): Promise<[number]>;
39
+ dispatcher(overrides?: CallOverrides): Promise<[string]>;
40
+ ism(overrides?: CallOverrides): Promise<[string]>;
41
+ postDispatch(_destinationDomain: BigNumberish, _messageId: BytesLike, overrides?: PayableOverrides & {
42
+ from?: string | Promise<string>;
43
+ }): Promise<ContractTransaction>;
44
+ };
45
+ destinationDomain(overrides?: CallOverrides): Promise<number>;
46
+ dispatcher(overrides?: CallOverrides): Promise<string>;
47
+ ism(overrides?: CallOverrides): Promise<string>;
48
+ postDispatch(_destinationDomain: BigNumberish, _messageId: BytesLike, overrides?: PayableOverrides & {
49
+ from?: string | Promise<string>;
50
+ }): Promise<ContractTransaction>;
51
+ callStatic: {
52
+ destinationDomain(overrides?: CallOverrides): Promise<number>;
53
+ dispatcher(overrides?: CallOverrides): Promise<string>;
54
+ ism(overrides?: CallOverrides): Promise<string>;
55
+ postDispatch(_destinationDomain: BigNumberish, _messageId: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
56
+ };
57
+ filters: {};
58
+ estimateGas: {
59
+ destinationDomain(overrides?: CallOverrides): Promise<BigNumber>;
60
+ dispatcher(overrides?: CallOverrides): Promise<BigNumber>;
61
+ ism(overrides?: CallOverrides): Promise<BigNumber>;
62
+ postDispatch(_destinationDomain: BigNumberish, _messageId: BytesLike, overrides?: PayableOverrides & {
63
+ from?: string | Promise<string>;
64
+ }): Promise<BigNumber>;
65
+ };
66
+ populateTransaction: {
67
+ destinationDomain(overrides?: CallOverrides): Promise<PopulatedTransaction>;
68
+ dispatcher(overrides?: CallOverrides): Promise<PopulatedTransaction>;
69
+ ism(overrides?: CallOverrides): Promise<PopulatedTransaction>;
70
+ postDispatch(_destinationDomain: BigNumberish, _messageId: BytesLike, overrides?: PayableOverrides & {
71
+ from?: string | Promise<string>;
72
+ }): Promise<PopulatedTransaction>;
73
+ };
74
+ }
75
+ //# sourceMappingURL=ERC5164MessageHook.d.ts.map