Developer Fundamentals

7. VET Transfers

Track native VET movements without contracts using specialized filters.

Prerequisites

Native VET Flows

VET is native—no ERC20 contract! 🎯 Track transfers via filterTransferLogs with sender/txOrigin/recipient.

javascriptconst vetLogs = await thor.logs.filterTransferLogs({
  criteriaSet: [{ sender: '0xSender', recipient: '0xDead', txOrigin: '0xUser' }],
  range: { unit: 'block', from: 0, to: 20000000 },
  options: { offset: 0, limit: 3 },
  'asc'
});
console.log('VET Transfers:', vetLogs);
javascriptconst vetLogs = await thor.logs.filterTransferLogs({
  criteriaSet: [{ sender: '0xSender', recipient: '0xDead', txOrigin: '0xUser' }],
  range: { unit: 'block', from: 0, to: 20000000 },
  options: { offset: 0, limit: 3 },
  'asc'
});
console.log('VET Transfers:', vetLogs);
javascriptconst vetLogs = await thor.logs.filterTransferLogs({
  criteriaSet: [{ sender: '0xSender', recipient: '0xDead', txOrigin: '0xUser' }],
  range: { unit: 'block', from: 0, to: 20000000 },
  options: { offset: 0, limit: 3 },
  'asc'
});
console.log('VET Transfers:', vetLogs);

Same pagination as events. Perfect for wallets, analytics, or your disaster data heatmaps!
Series crushed—you read the entire chain! 🚀​

Common Pitfall

VET lacks contract—don't hunt ABI; combine with receipts for context.