Skip to main content

SourceGovernor

SourceGovernor#

Functions#

constructor(contract FinderInterface _finder, uint8 _currentChainId) (public)

Constructor.

Parameters:#

  • _finder: Address of Finder that this contract uses to locate Bridge.
  • _currentChainId: Chain ID for this network. This is configurable by the deployer, rather than automatically detected via block.chainid because the type of currentChainId should match any destinationChainId's submitted as input to relayGovernance(). relayGovernance() calls Bridge.deposit() which expects a uint8 chainID passed as the first param, but block.chainid returns a uint256 value. Due to the possibility that a uint256 --> uint28 conversion leads to data loss and the complexity of mapping safely from uint256 --> uint8 on-chain, we opt to allow the user to specify a unique uint8 ID for this chain. It follows that the _currentChainId may not match with block.chainid.
relayGovernance(uint8 destinationChainId, address to, bytes data) (external)

This is the first method that should be called in order to relay a governance request to another network marked by destinationChainId. Note: this can only be called by the owner (presumably the L1 governor).

The transaction submitted to to on the sidechain with the calldata data is assumed to have 0 value in order to avoid the added complexity of sending cross-chain transactions with positive value.

Parameters:#

  • destinationChainId: Chain ID of SinkGovernor that this governance request should ultimately be sent to.
  • to: Contract on network with chain ID destinationChainId to send governance transaction to.
  • data: Calldata to include in governance transaction.
verifyRequest(address to, bytes data) (external)

This method will ultimately be called after relayGovernance calls Bridge.deposit(), which will call GenericHandler.deposit() and ultimately this method.

This method should basically check that the Bridge.deposit() was triggered by a valid relay event.

Parameters:#

  • to: Contract on network with chain ID destinationChainId to send governance transaction to.
  • data: Calldata to include in governance transaction.
getResourceId() โ†’ bytes32 (public)

Gets the resource id to send to the bridge.

More details about Resource ID's here: https://chainbridge.chainsafe.io/spec/#resource-id

_getBridge() โ†’ contract IBridge (internal)
_formatMetadata(address to, bytes data) โ†’ bytes (internal)
_computeRequestHash(address to, bytes data) โ†’ bytes32 (internal)
owner() โ†’ address (public)

Returns the address of the current owner.

renounceOwnership() (public)

Leaves the contract without owner. It will not be possible to call onlyOwner functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.

transferOwnership(address newOwner) (public)

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

_transferOwnership(address newOwner) (internal)

Transfers ownership of the contract to a new account (newOwner). Internal function without access restriction.

_msgSender() โ†’ address (internal)
_msgData() โ†’ bytes (internal)

Events#

RelayedGovernanceRequest(uint8 destinationChainId, address to, bytes data)
OwnershipTransferred(address previousOwner, address newOwner)

Modifiers#

onlyOwner()

Throws if called by any account other than the owner.