PolygonRollupBaseEtrog.sol
## Functions ### ##### Parameters | Name | Type | Description | | :--- | :--- | :------------------------------------------------------------------- | | | contr
Functions
constructor
function constructor(
contract IPolygonZkEVMGlobalExitRootV2 _globalExitRootManager,
contract IERC20Upgradeable _pol,
contract IPolygonZkEVMBridgeV2 _bridgeAddress,
contract PolygonRollupManager _rollupManager
) internalParameters
| Name | Type | Description |
|---|---|---|
_globalExitRootManager | contract IPolygonZkEVMGlobalExitRootV2 | Global exit root manager address. |
_pol | contract IERC20Upgradeable | POL token address. |
_bridgeAddress | contract IPolygonZkEVMBridgeV2 | Bridge address. |
_rollupManager | contract PolygonRollupManager | Global exit root manager address. |
initialize
function initialize(
address _admin,
address sequencer,
uint32 networkID,
address _gasTokenAddress,
string sequencerURL,
string _networkName
) externalParameters
| Name | Type | Description |
|---|---|---|
_admin | address | Admin address. |
sequencer | address | Trusted sequencer address. |
networkID | uint32 | Indicates the network identifier used in the bridge. |
_gasTokenAddress | address | Indicates the address of the token used in mainnet as the gas token. Note that if a wrapped token of the bridge is used, its original network and address are used instead. |
sequencerURL | string | Trusted sequencer URL. |
_networkName | string | L2 network name. |
sequenceBatches
Allows a sequencer to send multiple batches.
function sequenceBatches(
struct PolygonRollupBaseEtrog.BatchData[] batches,
uint64 maxSequenceTimestamp,
uint64 initSequencedBatch,
address l2Coinbase
) publicParameters
| Name | Type | Description |
|---|---|---|
batches | struct PolygonRollupBaseEtrog.BatchData[] | Struct array which holds the necessary data to append new batches to the sequence. |
maxSequenceTimestamp | uint64 | Max timestamp of the sequence. The timestamp must be inside a safety range (actual + 36 seconds). It should be equal or greater than the last block inside the sequence. Otherwise the circuit invalidates the batch. |
initSequencedBatch | uint64 | This parameter must match the current last batch sequenced. This is a protection mechanism against the sequencer sending undesired data. |
l2Coinbase | address | Address that will receive the fees from L2. Note that POL is not a reentrant token. |
onVerifyBatches
It's a callback on verify batches. It can only be called by the rollup manager.
function onVerifyBatches(
uint64 lastVerifiedBatch,
bytes32 newStateRoot,
address aggregator
) publicParameters
| Name | Type | Description |
|---|---|---|
lastVerifiedBatch | uint64 | Last verified batch. |
newStateRoot | bytes32 | New state root. |
aggregator | address | Aggregator address. |
forceBatch
Allows a sequencer/user to force a batch of L2 transactions. This should be used only in extreme cases where the trusted sequencer does not work as expected.
function forceBatch(
bytes transactions,
uint256 polAmount
) public- The sequencer has a degree of control on how non-forced and forced batches are ordered.
- In order to assure that users' force transactions are processed properly, each transaction must be signed with a unique nonce.
Parameters
| Name | Type | Description |
|---|---|---|
transactions | bytes | L2 ethereum transactions. EIP-155 or pre-EIP-155 with signature: |
polAmount | uint256 | Max amount of pol tokens that the sender is willing to pay. |
sequenceForceBatches
Allows anyone to sequence forced batches if the trusted sequencer has not done so within the timeout period.
function sequenceForceBatches(
struct PolygonRollupBaseEtrog.BatchData[] batches
) externalParameters
| Name | Type | Description |
|---|---|---|
batches | struct PolygonRollupBaseEtrog.BatchData[] | Struct array which holds the data necessary for appending force batches. |
setTrustedSequencer
Allows the admin to set a new trusted sequencer.
function setTrustedSequencer(
address newTrustedSequencer
) externalParameters
| Name | Type | Description |
|---|---|---|
newTrustedSequencer | address | Address of the new trusted sequencer. |
setTrustedSequencerURL
Allows the admin to set the trusted sequencer URL.
function setTrustedSequencerURL(
string newTrustedSequencerURL
) externalParameters
| Name | Type | Description |
|---|---|---|
newTrustedSequencerURL | string | URL of trusted sequencer. |
setForceBatchAddress
Allows the admin to change the address allowed to force batches. If address 0 is set, then everyone is able to force batches. This action is irreversible.
function setForceBatchAddress(
address newForceBatchAddress
) externalParameters
| Name | Type | Description |
|---|---|---|
newForceBatchAddress | address | New force batch address. |
setForceBatchTimeout
Allows the admin to set the forcedBatchTimeout. The new value can only be lower, except if emergency state is active.
function setForceBatchTimeout(
uint64 newforceBatchTimeout
) externalParameters
| Name | Type | Description |
|---|---|---|
newforceBatchTimeout | uint64 | New force batch timeout. |
transferAdminRole
Starts the admin role transfer. This is a two step process. And the pending admin must accept to finalize the process.
function transferAdminRole(
address newPendingAdmin
) externalParameters
| Name | Type | Description |
|---|---|---|
newPendingAdmin | address | Address of the new pending admin. |
acceptAdminRole
Allows the current pending admin to accept the admin role.
function acceptAdminRole(
) externalcalculatePolPerForceBatch
A function to calculate the reward for a forced batch.
function calculatePolPerForceBatch(
) public returns (uint256)generateInitializeTransaction
Generates and initializes transaction for the bridge on L2.
function generateInitializeTransaction(
uint32 networkID,
address _gasTokenAddress,
uint32 _gasTokenNetwork,
bytes _gasTokenMetadata
) public returns (bytes)Parameters
| Name | Type | Description |
|---|---|---|
networkID | uint32 | Indicates the network identifier used in the bridge. |
_gasTokenAddress | address | Indicates the token address used to pay gas fees in the new rollup. |
_gasTokenNetwork | uint32 | Indicates the native network of the token address. |
_gasTokenMetadata | bytes | Abi encoded gas token metadata. |
Events
SequenceBatches
Emitted when the trusted sequencer sends a new batch of transactions.
event SequenceBatches(
)ForceBatch
Emitted when a batch is forced.
event ForceBatch(
)SequenceForceBatches
Emitted when forced batches are sequenced by an entity other than the trusted sequencer.
event SequenceForceBatches(
)InitialSequenceBatches
Emitted when the contract is initialized. It contains the first sequenced transaction.
event InitialSequenceBatches(
)VerifyBatches
Emitted when an aggregator verifies batches.
event VerifyBatches(
)SetTrustedSequencer
Emitted when the admin updates the trusted sequencer address.
event SetTrustedSequencer(
)SetTrustedSequencerURL
Emitted when the admin updates the sequencer URL.
event SetTrustedSequencerURL(
)SetForceBatchTimeout
Emitted when the admin updates the force batch timeout.
event SetForceBatchTimeout(
)SetForceBatchAddress
Emitted when the admin updates the force batch address.
event SetForceBatchAddress(
)TransferAdminRole
Emitted when the admin starts the two-step transfer role of setting a new pending admin.
event TransferAdminRole(
)AcceptAdminRole
Emitted when the pending admin accepts the admin role.
event AcceptAdminRole(
)Last updated on
PolygonAccessControlUpgradeable.sol
A contract that inherits from Openzeppelin, but with the following modifications: - Deletes dependencies to save us the "gap" variables and let us have consiste
PolygonTransparentProxy.sol
Inherits from , a Openzeppelin v5 contract, with the following modifications: - Admin is a parameter in the constructor instead of being deployed. - Let the adm