You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.8 KiB
Solidity
103 lines
3.8 KiB
Solidity
2 years ago
|
// Copyright 2021-2022, Offchain Labs, Inc.
|
||
|
// For license information, see https://github.com/nitro/blob/master/LICENSE
|
||
|
// SPDX-License-Identifier: BUSL-1.1
|
||
|
// OpenZeppelin Contracts (last updated v4.8.0) (vendor/arbitrum/IBridge.sol)
|
||
|
|
||
|
// solhint-disable-next-line compiler-version
|
||
|
pragma solidity >=0.6.9 <0.9.0;
|
||
|
|
||
|
interface IBridge {
|
||
|
event MessageDelivered(
|
||
|
uint256 indexed messageIndex,
|
||
|
bytes32 indexed beforeInboxAcc,
|
||
|
address inbox,
|
||
|
uint8 kind,
|
||
|
address sender,
|
||
|
bytes32 messageDataHash,
|
||
|
uint256 baseFeeL1,
|
||
|
uint64 timestamp
|
||
|
);
|
||
|
|
||
|
event BridgeCallTriggered(address indexed outbox, address indexed to, uint256 value, bytes data);
|
||
|
|
||
|
event InboxToggle(address indexed inbox, bool enabled);
|
||
|
|
||
|
event OutboxToggle(address indexed outbox, bool enabled);
|
||
|
|
||
|
event SequencerInboxUpdated(address newSequencerInbox);
|
||
|
|
||
|
function allowedDelayedInboxList(uint256) external returns (address);
|
||
|
|
||
|
function allowedOutboxList(uint256) external returns (address);
|
||
|
|
||
|
/// @dev Accumulator for delayed inbox messages; tail represents hash of the current state; each element represents the inclusion of a new message.
|
||
|
function delayedInboxAccs(uint256) external view returns (bytes32);
|
||
|
|
||
|
/// @dev Accumulator for sequencer inbox messages; tail represents hash of the current state; each element represents the inclusion of a new message.
|
||
|
function sequencerInboxAccs(uint256) external view returns (bytes32);
|
||
|
|
||
|
// OpenZeppelin: changed return type from IOwnable
|
||
|
function rollup() external view returns (address);
|
||
|
|
||
|
function sequencerInbox() external view returns (address);
|
||
|
|
||
|
function activeOutbox() external view returns (address);
|
||
|
|
||
|
function allowedDelayedInboxes(address inbox) external view returns (bool);
|
||
|
|
||
|
function allowedOutboxes(address outbox) external view returns (bool);
|
||
|
|
||
|
function sequencerReportedSubMessageCount() external view returns (uint256);
|
||
|
|
||
|
/**
|
||
|
* @dev Enqueue a message in the delayed inbox accumulator.
|
||
|
* These messages are later sequenced in the SequencerInbox, either
|
||
|
* by the sequencer as part of a normal batch, or by force inclusion.
|
||
|
*/
|
||
|
function enqueueDelayedMessage(
|
||
|
uint8 kind,
|
||
|
address sender,
|
||
|
bytes32 messageDataHash
|
||
|
) external payable returns (uint256);
|
||
|
|
||
|
function executeCall(
|
||
|
address to,
|
||
|
uint256 value,
|
||
|
bytes calldata data
|
||
|
) external returns (bool success, bytes memory returnData);
|
||
|
|
||
|
function delayedMessageCount() external view returns (uint256);
|
||
|
|
||
|
function sequencerMessageCount() external view returns (uint256);
|
||
|
|
||
|
// ---------- onlySequencerInbox functions ----------
|
||
|
|
||
|
function enqueueSequencerMessage(
|
||
|
bytes32 dataHash,
|
||
|
uint256 afterDelayedMessagesRead,
|
||
|
uint256 prevMessageCount,
|
||
|
uint256 newMessageCount
|
||
|
) external returns (uint256 seqMessageIndex, bytes32 beforeAcc, bytes32 delayedAcc, bytes32 acc);
|
||
|
|
||
|
/**
|
||
|
* @dev Allows the sequencer inbox to submit a delayed message of the batchPostingReport type
|
||
|
* This is done through a separate function entrypoint instead of allowing the sequencer inbox
|
||
|
* to call `enqueueDelayedMessage` to avoid the gas overhead of an extra SLOAD in either
|
||
|
* every delayed inbox or every sequencer inbox call.
|
||
|
*/
|
||
|
function submitBatchSpendingReport(address batchPoster, bytes32 dataHash) external returns (uint256 msgNum);
|
||
|
|
||
|
// ---------- onlyRollupOrOwner functions ----------
|
||
|
|
||
|
function setSequencerInbox(address _sequencerInbox) external;
|
||
|
|
||
|
function setDelayedInbox(address inbox, bool enabled) external;
|
||
|
|
||
|
function setOutbox(address inbox, bool enabled) external;
|
||
|
|
||
|
// ---------- initializer ----------
|
||
|
|
||
|
// OpenZeppelin: changed rollup_ type from IOwnable
|
||
|
function initialize(address rollup_) external;
|
||
|
}
|