Files
scroll/contracts/docs/apis/L2ScrollMessenger.md
2022-10-10 21:04:30 +08:00

8.5 KiB

L2ScrollMessenger

L2ScrollMessenger

The L2ScrollMessenger contract can: 1. send messages from layer 2 to layer 1; 2. relay messages from layer 1 layer 2; 3. drop expired message due to sequencer problems.

It should be a predeployed contract in layer 2 and should hold infinite amount of Ether (Specifically, uint256(-1)), which can be initialized in Genesis Block.

Methods

dropDelayDuration

function dropDelayDuration() external view returns (uint256)

The amount of seconds needed to wait if we want to drop message.

Returns

Name Type Description
_0 uint256 undefined

dropMessage

function dropMessage(address, address, uint256, uint256, uint256, uint256, bytes, uint256) external nonpayable

Parameters

Name Type Description
_0 address undefined
_1 address undefined
_2 uint256 undefined
_3 uint256 undefined
_4 uint256 undefined
_5 uint256 undefined
_6 bytes undefined
_7 uint256 undefined

gasOracle

function gasOracle() external view returns (address)

The gas oracle used to estimate transaction fee on layer 2.

Returns

Name Type Description
_0 address undefined

isMessageExecuted

function isMessageExecuted(bytes32) external view returns (bool)

Mapping from message hash to execution status.

Parameters

Name Type Description
_0 bytes32 undefined

Returns

Name Type Description
_0 bool undefined

isMessageRelayed

function isMessageRelayed(bytes32) external view returns (bool)

Mapping from relay id to relay status.

Parameters

Name Type Description
_0 bytes32 undefined

Returns

Name Type Description
_0 bool undefined

messageNonce

function messageNonce() external view returns (uint256)

Message nonce, used to avoid relay attack.

Returns

Name Type Description
_0 uint256 undefined

messagePasser

function messagePasser() external view returns (contract L2ToL1MessagePasser)

Contract to store the sent message.

Returns

Name Type Description
_0 contract L2ToL1MessagePasser undefined

owner

function owner() external view returns (address)

The address of the current owner.

Returns

Name Type Description
_0 address undefined

relayMessage

function relayMessage(address _from, address _to, uint256 _value, uint256 _fee, uint256 _deadline, uint256 _nonce, bytes _message) external nonpayable

execute L1 => L2 message

Make sure this is only called by privileged accounts.

Parameters

Name Type Description
_from address The address of the sender of the message.
_to address The address of the recipient of the message.
_value uint256 The msg.value passed to the message call.
_fee uint256 The amount of fee in ETH to charge.
_deadline uint256 The deadline of the message.
_nonce uint256 The nonce of the message to avoid replay attack.
_message bytes The content of the message.

renounceOwnership

function renounceOwnership() external nonpayable

Leaves the contract without owner. It will not be possible to call onlyOwner functions anymore. Can only be called by the current owner.

Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.

sendMessage

function sendMessage(address _to, uint256 _fee, bytes _message, uint256 _gasLimit) external payable

Send cross chain message (L1 => L2 or L2 => L1)

Currently, only privileged accounts can call this function for safty. And adding an extra _fee variable make it more easy to upgrade to decentralized version.

Parameters

Name Type Description
_to address The address of account who recieve the message.
_fee uint256 The amount of fee in Ether the caller would like to pay to the relayer.
_message bytes The content of the message.
_gasLimit uint256 Unused, but included for potential forward compatibility considerations.

transferOwnership

function transferOwnership(address _newOwner) external nonpayable

Transfers ownership of the contract to a new account (newOwner). Can only be called by the current owner.

Parameters

Name Type Description
_newOwner address undefined

updateDropDelayDuration

function updateDropDelayDuration(uint256 _newDuration) external nonpayable

Update the drop delay duration.

This function can only called by contract owner.

Parameters

Name Type Description
_newDuration uint256 The new delay duration to update.

updateGasOracle

function updateGasOracle(address _newGasOracle) external nonpayable

Update the address of gas oracle.

This function can only called by contract owner.

Parameters

Name Type Description
_newGasOracle address The address to update.

updateWhitelist

function updateWhitelist(address _newWhitelist) external nonpayable

Update whitelist contract.

This function can only called by contract owner.

Parameters

Name Type Description
_newWhitelist address The address of new whitelist contract.

whitelist

function whitelist() external view returns (address)

The whitelist contract to track the sender who can call sendMessage in ScrollMessenger.

Returns

Name Type Description
_0 address undefined

xDomainMessageSender

function xDomainMessageSender() external view returns (address)

See {IScrollMessenger-xDomainMessageSender}

Returns

Name Type Description
_0 address undefined

Events

FailedRelayedMessage

event FailedRelayedMessage(bytes32 indexed msgHash)

Parameters

Name Type Description
msgHash indexed bytes32 undefined

MessageDropped

event MessageDropped(bytes32 indexed msgHash)

Parameters

Name Type Description
msgHash indexed bytes32 undefined

OwnershipTransferred

event OwnershipTransferred(address indexed _oldOwner, address indexed _newOwner)

Emitted when owner is changed by current owner.

Parameters

Name Type Description
_oldOwner indexed address undefined
_newOwner indexed address undefined

RelayedMessage

event RelayedMessage(bytes32 indexed msgHash)

Parameters

Name Type Description
msgHash indexed bytes32 undefined

SentMessage

event SentMessage(address indexed target, address sender, uint256 value, uint256 fee, uint256 deadline, bytes message, uint256 messageNonce, uint256 gasLimit)

Parameters

Name Type Description
target indexed address undefined
sender address undefined
value uint256 undefined
fee uint256 undefined
deadline uint256 undefined
message bytes undefined
messageNonce uint256 undefined
gasLimit uint256 undefined

UpdateDropDelayDuration

event UpdateDropDelayDuration(uint256 _oldDuration, uint256 _newDuration)

Emitted when owner updates drop delay duration

Parameters

Name Type Description
_oldDuration uint256 undefined
_newDuration uint256 undefined

UpdateGasOracle

event UpdateGasOracle(address _oldGasOracle, address _newGasOracle)

Emitted when owner updates gas oracle contract.

Parameters

Name Type Description
_oldGasOracle address undefined
_newGasOracle address undefined

UpdateWhitelist

event UpdateWhitelist(address _oldWhitelist, address _newWhitelist)

Emitted when owner updates whitelist contract.

Parameters

Name Type Description
_oldWhitelist address undefined
_newWhitelist address undefined