InterfaceLightManager

Git Source

Functions

updateAgentStatus

Updates agent status, using a proof against the latest known Agent Merkle Root.

Will revert if the provided proof doesn't match the latest merkle root.

function updateAgentStatus(address agent, AgentStatus memory status, bytes32[] memory proof) external;

Parameters

NameTypeDescription
agentaddressAgent address
statusAgentStatusStructure specifying agent status: (flag, domain, index)
proofbytes32[]Merkle proof of Active status for the agent

setAgentRoot

Updates the root of Agent Merkle Tree that the Light Manager is tracking. Could be only called by a local Destination contract, which is supposed to verify the attested Agent Merkle Roots.

function setAgentRoot(bytes32 agentRoot_) external;

Parameters

NameTypeDescription
agentRoot_bytes32New Agent Merkle Root

proposeAgentRootWhenStuck

Allows contract owner to set the agent root to resolve the "stuck" chain by proposing the new agent root. The contract owner will be able to resolve the proposed agent root after a certain period of time. Note: this function could be called multiple times, each time the timer will be reset. This could only be called if no fresh data has been submitted by the Notaries to the Inbox, indicating that the chain is stuck for one of the reasons:

  • All active Notaries are in Dispute.
  • No active Notaries exist under the current agent root.

*Will revert if any of the following conditions is met:

  • Caller is not the contract owner.
  • Agent root is empty.
  • The chain is not in a stuck state (has recently received a fresh data from the Notaries).*
function proposeAgentRootWhenStuck(bytes32 agentRoot_) external;

Parameters

NameTypeDescription
agentRoot_bytes32New Agent Merkle Root that is proposed to be set

cancelProposedAgentRoot

Allows contract owner to cancel the previously proposed agent root.

*Will revert if any of the following conditions is met:

  • Caller is not the contract owner.
  • No agent root was proposed.*
function cancelProposedAgentRoot() external;

resolveProposedAgentRoot

Allows contract owner to resolve the previously proposed agent root. This will update the agent root, allowing the agents to update their status, effectively resolving the "stuck" chain.

*Will revert if any of the following conditions is met:

  • Caller is not the contract owner.
  • No agent root was proposed.
  • Not enough time has passed since the agent root was proposed.*
function resolveProposedAgentRoot() external;

remoteWithdrawTips

Withdraws locked base message tips from local Origin to the recipient.

Could only be remote-called by BondingManager contract on Synapse Chain. Note: as an extra security check this function returns its own selector, so that Destination could verify that a "remote" function was called when executing a manager message.

function remoteWithdrawTips(uint32 msgOrigin, uint256 proofMaturity, address recipient, uint256 amount)
    external
    returns (bytes4 magicValue);

Parameters

NameTypeDescription
msgOriginuint32
proofMaturityuint256
recipientaddressAddress to withdraw tips to
amountuint256Tips value to withdraw

proposedAgentRootData

Returns the latest proposed agent root and the timestamp when it was proposed.

Will return zero values if no agent root was proposed, or if the proposed agent root was already resolved.

function proposedAgentRootData() external view returns (bytes32 agentRoot_, uint256 proposedAt_);