SRC20 Event Watching
Watch and decrypt SRC20 token events
Last updated
const unwatch = await walletClient.watchSRC20Events({
address: "0xYourTokenAddress",
onTransfer: (log) => {
console.log(`Transfer ${log.from} -> ${log.to}: ${log.decryptedAmount}`);
},
onApproval: (log) => {
console.log(
`Approval ${log.owner} -> ${log.spender}: ${log.decryptedAmount}`,
);
},
onError: (err) => console.error("decrypt failed:", err),
});
// stop watching
unwatch();const viewingKey: Hex = "0x..."; // 32-byte AES key
const unwatch = await publicClient.watchSRC20EventsWithKey(viewingKey, {
address: "0xYourTokenAddress",
onTransfer: (log) => console.log(log),
onApproval: (log) => console.log(log),
onError: (err) => console.error(err),
});type DecryptedTransferLog = {
from: Address;
to: Address;
encryptKeyHash: Hex; // keccak256 of the viewing key
encryptedAmount: Hex; // original AES-GCM ciphertext
decryptedAmount: bigint; // plaintext amount
transactionHash: Hex;
blockNumber: bigint;
};
type DecryptedApprovalLog = {
owner: Address;
spender: Address;
encryptKeyHash: Hex;
encryptedAmount: Hex;
decryptedAmount: bigint;
transactionHash: Hex;
blockNumber: bigint;
};