IBridgehub

Git Source

Author: Matter Labs

Note: security-contact: security@matterlabs.dev

Functions

setPendingAdmin

Starts the transfer of admin rights. Only the current admin or owner can propose a new pending one.

New admin can accept admin rights by calling acceptAdmin function.

function setPendingAdmin(address _newPendingAdmin) external;

Parameters

NameTypeDescription
_newPendingAdminaddressAddress of the new admin

acceptAdmin

Accepts transfer of admin rights. Only pending admin can accept the role.

function acceptAdmin() external;

chainTypeManagerIsRegistered

Getters

function chainTypeManagerIsRegistered(address _chainTypeManager)
  external
  view
  returns (bool);

chainTypeManager

function chainTypeManager(uint256 _chainId) external view returns (address);

assetIdIsRegistered

function assetIdIsRegistered(bytes32 _baseTokenAssetId)
  external
  view
  returns (bool);

baseToken

function baseToken(uint256 _chainId) external view returns (address);

baseTokenAssetId

function baseTokenAssetId(uint256 _chainId) external view returns (bytes32);

messageRoot

function messageRoot() external view returns (IMessageRoot);

getZKChain

function getZKChain(uint256 _chainId) external view returns (address);

getAllZKChains

function getAllZKChains() external view returns (address[] memory);

getAllZKChainChainIDs

function getAllZKChainChainIDs() external view returns (uint256[] memory);

migrationPaused

function migrationPaused() external view returns (bool);

admin

function admin() external view returns (address);

assetRouter

function assetRouter() external view returns (address);

proveL2MessageInclusion

Mailbox forwarder

function proveL2MessageInclusion(
  uint256 _chainId,
  uint256 _batchNumber,
  uint256 _index,
  L2Message calldata _message,
  bytes32[] calldata _proof
) external view returns (bool);

proveL2LogInclusion

function proveL2LogInclusion(
  uint256 _chainId,
  uint256 _batchNumber,
  uint256 _index,
  L2Log memory _log,
  bytes32[] calldata _proof
) external view returns (bool);

proveL1ToL2TransactionStatus

function proveL1ToL2TransactionStatus(
  uint256 _chainId,
  bytes32 _l2TxHash,
  uint256 _l2BatchNumber,
  uint256 _l2MessageIndex,
  uint16 _l2TxNumberInBatch,
  bytes32[] calldata _merkleProof,
  TxStatus _status
) external view returns (bool);

requestL2TransactionDirect

function requestL2TransactionDirect(
  L2TransactionRequestDirect calldata _request
) external payable returns (bytes32 canonicalTxHash);

requestL2TransactionTwoBridges

function requestL2TransactionTwoBridges(
  L2TransactionRequestTwoBridgesOuter calldata _request
) external payable returns (bytes32 canonicalTxHash);

l2TransactionBaseCost

function l2TransactionBaseCost(
  uint256 _chainId,
  uint256 _gasPrice,
  uint256 _l2GasLimit,
  uint256 _l2GasPerPubdataByteLimit
) external view returns (uint256);

createNewChain

function createNewChain(
  uint256 _chainId,
  address _chainTypeManager,
  bytes32 _baseTokenAssetId,
  uint256 _salt,
  address _admin,
  bytes calldata _initData,
  bytes[] calldata _factoryDeps
) external returns (uint256 chainId);

addChainTypeManager

function addChainTypeManager(address _chainTypeManager) external;

removeChainTypeManager

function removeChainTypeManager(address _chainTypeManager) external;

addTokenAssetId

function addTokenAssetId(bytes32 _baseTokenAssetId) external;

setAddresses

function setAddresses(
  address _sharedBridge,
  ICTMDeploymentTracker _l1CtmDeployer,
  IMessageRoot _messageRoot,
  address _chainAssetHandler
) external;

setChainAssetHandler

function setChainAssetHandler(address _chainAssetHandler) external;

whitelistedSettlementLayers

function whitelistedSettlementLayers(uint256 _chainId)
  external
  view
  returns (bool);

registerSettlementLayer

function registerSettlementLayer(
  uint256 _newSettlementLayerChainId,
  bool _isWhitelisted
) external;

settlementLayer

function settlementLayer(uint256 _chainId) external view returns (uint256);

forwardTransactionOnGateway

function forwardTransactionOnGateway(
  uint256 _chainId,
  bytes32 _canonicalTxHash,
  uint64 _expirationTimestamp
) external;

ctmAssetIdFromChainId

function ctmAssetIdFromChainId(uint256 _chainId)
  external
  view
  returns (bytes32);

ctmAssetIdFromAddress

function ctmAssetIdFromAddress(address _ctmAddress)
  external
  view
  returns (bytes32);

l1CtmDeployer

function l1CtmDeployer() external view returns (ICTMDeploymentTracker);

ctmAssetIdToAddress

function ctmAssetIdToAddress(bytes32 _assetInfo)
  external
  view
  returns (address);

setCTMAssetAddress

function setCTMAssetAddress(bytes32 _additionalData, address _assetAddress)
  external;

L1_CHAIN_ID

function L1_CHAIN_ID() external view returns (uint256);

chainAssetHandler

function chainAssetHandler() external view returns (address);

registerAlreadyDeployedZKChain

function registerAlreadyDeployedZKChain(uint256 _chainId, address _hyperchain)
  external;

registerLegacyChain

function registerLegacyChain(uint256 _chainId) external;

pauseMigration

function pauseMigration() external;

unpauseMigration

function unpauseMigration() external;

forwardedBridgeBurnSetSettlementLayer

function forwardedBridgeBurnSetSettlementLayer(
  uint256 _chainId,
  uint256 _newSettlementLayerChainId
) external returns (address zkChain, address ctm);

forwardedBridgeMint

function forwardedBridgeMint(
  bytes32 _assetId,
  uint256 _chainId,
  bytes32 _baseTokenAssetId
) external returns (address zkChain, address ctm);

registerNewZKChain

function registerNewZKChain(
  uint256 _chainId,
  address _zkChain,
  bool _checkMaxNumberOfZKChains
) external;

forwardedBridgeRecoverFailedTransfer

function forwardedBridgeRecoverFailedTransfer(uint256 _chainId)
  external
  returns (address zkChain, address ctm);

Events

NewPendingAdmin

pendingAdmin is changed

Also emitted when new admin is accepted and in this case, newPendingAdmin would be zero address

event NewPendingAdmin(
  address indexed oldPendingAdmin, address indexed newPendingAdmin
);

NewAdmin

Admin changed

event NewAdmin(address indexed oldAdmin, address indexed newAdmin);

AssetRegistered

CTM asset registered

event AssetRegistered(
  bytes32 indexed assetInfo,
  address indexed _assetAddress,
  bytes32 indexed additionalData,
  address sender
);

SettlementLayerRegistered

event SettlementLayerRegistered(
  uint256 indexed chainId, bool indexed isWhitelisted
);

NewChain

event NewChain(
  uint256 indexed chainId,
  address chainTypeManager,
  address indexed chainGovernance
);

ChainTypeManagerAdded

event ChainTypeManagerAdded(address indexed chainTypeManager);

ChainTypeManagerRemoved

event ChainTypeManagerRemoved(address indexed chainTypeManager);

BaseTokenAssetIdRegistered

event BaseTokenAssetIdRegistered(bytes32 indexed assetId);