PermissionedBridge

Git Source

Inherits: Vault

Manages bridge operations with manually set operator weights

Extends Vault for bridging functionality

State Variables

operatorResponses

Tracks bridge requests that this operator has responded to once to avoid duplications

Double attestations would technically be valid and allow operators to recursively call until funds are released

mapping(address => mapping(uint256 => bool)) public operatorResponses;

bridgeRequestWeights

Tracks the total operator weight attested to a bridge request

Helpful for determining when enough attestations have been collected to release funds.

mapping(uint256 => uint256) public bridgeRequestWeights;

operatorWeights

Maps operator addresses to their respective weights

Temporary solution for illustrative purposes on non-mainnet chains

mapping(address => uint256) public operatorWeights;

Functions

constructor

Initializes the contract with the necessary parameters

constructor(uint256 _crankGasCost, uint256 _AVSReward, uint256 _bridgeFee, string memory _name, string memory _version)
    Vault(_crankGasCost, _AVSReward, _bridgeFee, _name, _version);

Parameters

NameTypeDescription
_crankGasCostuint256The estimated gas cost for calling release funds, used to calculate rebate and incentivize users to call
_AVSRewarduint256The total reward for AVS attestation
_bridgeFeeuint256The total fee charged to the user for bridging
_namestringThe name of the contract, used for EIP-712 domain construction
_versionstringThe version of the contract, used for EIP-712 domain construction

onlyOperator

Ensures that only operators with non-zero weight can call the function

modifier onlyOperator();

publishAttestation

Publishes an attestation for a bridge request

function publishAttestation(bytes memory attestation, uint256 _bridgeRequestId) public nonReentrant onlyOperator;

Parameters

NameTypeDescription
attestationbytesThe signed attestation
_bridgeRequestIduint256The ID of the bridge request

_releaseFunds

Releases funds to the destination address

function _releaseFunds(bytes memory data) public override nonReentrant;

Parameters

NameTypeDescription
databytesThe bridge request data and signatures

releaseFunds

Releases funds to the destination address with typed data for ABI construction

function releaseFunds(bytes[] memory signatures, Structs.BridgeRequestData memory data) public nonReentrant;

Parameters

NameTypeDescription
signaturesbytes[]The signatures of the operators attesting to the bridge request
dataStructs.BridgeRequestDataThe bridge request data

operatorHasMinimumWeight

Checks if the operator has the minimum required weight

function operatorHasMinimumWeight(address operator) public view returns (bool);

Parameters

NameTypeDescription
operatoraddressThe address of the operator

Returns

NameTypeDescription
<none>boolTrue if the operator has the minimum weight, false otherwise

getOperatorWeight

Gets the weight of an operator

function getOperatorWeight(address operator) public view returns (uint256);

Parameters

NameTypeDescription
operatoraddressThe address of the operator

Returns

NameTypeDescription
<none>uint256The weight of the operator

setOperatorWeight

Sets the weight of an operator

function setOperatorWeight(address operator, uint256 weight) public onlyOwner;

Parameters

NameTypeDescription
operatoraddressThe address of the operator
weightuint256The new weight of the operator

receive

Fallback function to receive ether

receive() external payable;