MagpieStargateBridge
The contract serves as a bridge between Magpie and the Stargate network, allowing deposits and withdrawals of assets between the two networks. It has a modifier onlyMagpieAggregator
that restricts access to functions only to the Magpie aggregator address specified in the settings
struct. It has a modifier onlyStargate
that restricts access to functions only to the Stargate router address specified in the settings
struct.
Magpie Aggregator Address
Stargate Router Address
A uint16
value representing the source chain ID from which the withdrawal is initiated.
A uint256
value representing a unique identifier for the withdrawal transaction.
An address
representing the asset address that is being withdrawn.
A bytes
array representing the source address on the source chain.
An instance of the TransferKey
struct from the LibTransferKey
library, which contains the network ID, sender address, and swap sequence associated with the withdrawal.
updateSettings():
to update the bridge settings. Only the contract owner can call this function.
Input:
withdraw():
to withdraw deposited funds. It checks the deposited amount based on the transfer key and asset address, clears the cached swap if the amount is zero, and transfers the amount to the aggregator address. Only the Magpie aggregator can call this function.
Input:
Output:
The amount that is withdrawn.
sgReceive():
sgReceive
is called by the Stargate router when assets are received from another chain. It increments the deposited amount based on the transfer key, asset address, and amount.
Input:
Network Id extracted from the TransferKey struct
Sender Address extracted from the TransferKey struct
Swap Sequence extracted from the TransferKey struct
An address
parameter representing the address of the received asset.
A uint256
parameter representing the amount of the received asset.
A bytes calldata
parameter containing encoded information about the transfer, including the TransferKey
.
Last updated