LibTransferKey
the
LibTransferKey library provides functionality for encoding, decoding, and validating TransferKey structs, which are used to represent transfer keys in the application.struct TransferKey {
uint16 networkId;
bytes32 senderAddress;
uint64 swapSequence;
}
Field | Type | Description |
|---|---|---|
networkId | uint16 | networkId of the current chain in Magpie protocol, it is different from the actual networkId
ethereum: 1
polygon: 2
bsc: 3
avalanche: 4
arbitrum: 5
optimism: 6 |
senderAddress | bytes32 | The address who initiated the transfer. |
swapSequence | uint64 | The magpie sequence for the current swap. |
In the
encode function, a new bytes array (payload) of size 42 is created to store the encoded transfer key.Input:
Field | Type | Description |
|---|---|---|
transferKey | TransferKey | struct TransferKey { uint16 networkId; bytes32 senderAddress; uint64 swapSequence; } |
Output:
Field | Type | Description |
|---|---|---|
payload | bytes | The transferKey concatenated and converted to bytes |
In the
decode function, the assembly block is used to extract the values of each field from the payload array and store them in the transferKey struct.Input:
Field | Type | Description |
|---|---|---|
payload | bytes | The data which contains the transferKey. |
Output:
Field | Type | Description |
|---|---|---|
transferKey | TransferKey | struct TransferKey { uint16 networkId; bytes32 senderAddress; uint64 swapSequence; } |
The
validate function checks if the networkId, senderAddress, and swapSequence fields of both TransferKey structs are equal. If any of the fields differ, indicating an invalid transfer key, the function reverts with an InvalidTransferKey error.Input:
Field | Type | Description |
|---|---|---|
self | TransferKey | struct TransferKey { uint16 networkId; bytes32 senderAddress; uint64 swapSequence; } |
transferKey | TransferKey | struct TransferKey { uint16 networkId; bytes32 senderAddress; uint64 swapSequence; } |
Last modified 26d ago

