IBridge.sol 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // Copyright 2021-2022, Offchain Labs, Inc.
  2. // For license information, see https://github.com/nitro/blob/master/LICENSE
  3. // SPDX-License-Identifier: BUSL-1.1
  4. // OpenZeppelin Contracts (last updated v4.8.0) (vendor/arbitrum/IBridge.sol)
  5. // solhint-disable-next-line compiler-version
  6. pragma solidity >=0.6.9 <0.9.0;
  7. interface IBridge {
  8. event MessageDelivered(
  9. uint256 indexed messageIndex,
  10. bytes32 indexed beforeInboxAcc,
  11. address inbox,
  12. uint8 kind,
  13. address sender,
  14. bytes32 messageDataHash,
  15. uint256 baseFeeL1,
  16. uint64 timestamp
  17. );
  18. event BridgeCallTriggered(address indexed outbox, address indexed to, uint256 value, bytes data);
  19. event InboxToggle(address indexed inbox, bool enabled);
  20. event OutboxToggle(address indexed outbox, bool enabled);
  21. event SequencerInboxUpdated(address newSequencerInbox);
  22. function allowedDelayedInboxList(uint256) external returns (address);
  23. function allowedOutboxList(uint256) external returns (address);
  24. /// @dev Accumulator for delayed inbox messages; tail represents hash of the current state; each element represents the inclusion of a new message.
  25. function delayedInboxAccs(uint256) external view returns (bytes32);
  26. /// @dev Accumulator for sequencer inbox messages; tail represents hash of the current state; each element represents the inclusion of a new message.
  27. function sequencerInboxAccs(uint256) external view returns (bytes32);
  28. // OpenZeppelin: changed return type from IOwnable
  29. function rollup() external view returns (address);
  30. function sequencerInbox() external view returns (address);
  31. function activeOutbox() external view returns (address);
  32. function allowedDelayedInboxes(address inbox) external view returns (bool);
  33. function allowedOutboxes(address outbox) external view returns (bool);
  34. function sequencerReportedSubMessageCount() external view returns (uint256);
  35. /**
  36. * @dev Enqueue a message in the delayed inbox accumulator.
  37. * These messages are later sequenced in the SequencerInbox, either
  38. * by the sequencer as part of a normal batch, or by force inclusion.
  39. */
  40. function enqueueDelayedMessage(
  41. uint8 kind,
  42. address sender,
  43. bytes32 messageDataHash
  44. ) external payable returns (uint256);
  45. function executeCall(
  46. address to,
  47. uint256 value,
  48. bytes calldata data
  49. ) external returns (bool success, bytes memory returnData);
  50. function delayedMessageCount() external view returns (uint256);
  51. function sequencerMessageCount() external view returns (uint256);
  52. // ---------- onlySequencerInbox functions ----------
  53. function enqueueSequencerMessage(
  54. bytes32 dataHash,
  55. uint256 afterDelayedMessagesRead,
  56. uint256 prevMessageCount,
  57. uint256 newMessageCount
  58. )
  59. external
  60. returns (
  61. uint256 seqMessageIndex,
  62. bytes32 beforeAcc,
  63. bytes32 delayedAcc,
  64. bytes32 acc
  65. );
  66. /**
  67. * @dev Allows the sequencer inbox to submit a delayed message of the batchPostingReport type
  68. * This is done through a separate function entrypoint instead of allowing the sequencer inbox
  69. * to call `enqueueDelayedMessage` to avoid the gas overhead of an extra SLOAD in either
  70. * every delayed inbox or every sequencer inbox call.
  71. */
  72. function submitBatchSpendingReport(address batchPoster, bytes32 dataHash) external returns (uint256 msgNum);
  73. // ---------- onlyRollupOrOwner functions ----------
  74. function setSequencerInbox(address _sequencerInbox) external;
  75. function setDelayedInbox(address inbox, bool enabled) external;
  76. function setOutbox(address inbox, bool enabled) external;
  77. // ---------- initializer ----------
  78. // OpenZeppelin: changed rollup_ type from IOwnable
  79. function initialize(address rollup_) external;
  80. }