Bridge Native Transfers
Bridges are an essential part of the blockchain ecosystem. They allow users to send messages and transfer value from one chain to another. Often times, bridges aggregate messages from various users into a single transaction. This makes it difficult to track the flow of value across chains.
As an example, take this Arbitrum transaction that unwraps the WETH
token on the Arbitrum chain, and sends the native ETH to the wallet that initiated the transaction. We will set an address trigger on the wallet to notify us whenever the native token is transferred. The transfer can happen in either an internal, or a regular transaction.
{
"type": "TRIGGER_TYPE_ADDRESS",
"address": "0x14b76966dd9b45fd20e42f6e60384733184c2712"
}
// Create this function with an address trigger on your wallet.
export async function triggerHandler(context, data) {
if (context.dataType !== "DATA_TYPE_TRACE") {
return;
}
// Only CALL can be used to transfer native currency
if (data.type !== "CALL") {
return;
}
// Get triggered address from context
const walletAddress = context.trigger.address.address;
const lowerAddress = walletAddress.toLowerCase();
if (!data.to.includes(lowerAddress) && !data.from.includes(lowerAddress)) {
return;
}
const bigValue = BigInt(data.value);
if (bigValue === BigInt(0)) {
return;
}
return {
tokenSymbol: "ETH",
tokenName: "Ether",
tokenDecimals: 18,
sender: data.from,
receiver: data.to,
value: bigValue.toString(),
context: context,
};
}
Updated 3 months ago