Data access · 9 min read
Monitoring tokenized assets onchain: a real treasury fund, decoded
A tokenized treasury fund is a regulated security that lives on a public chain. BlackRock's BUIDL fund is the obvious example, and rather than describe what you could watch, this guide pulls its actual onchain life with one query: who shares are issued to, the issuer's own control events, and holder transfers, all in a single query's raw logs that you decode by their topic0, with no node and no integration built per issuer. Every value below comes straight from the Portal, pinned to a fixed block so you can run it yourself.
1. A regulated security, live onchain
BUIDL is the BlackRock USD Institutional Digital Liquidity Fund, a tokenized money-market fund issued via Securitize. It is a permissioned token: only approved wallets can hold it, and each share tracks a US dollar. On Ethereum its contract resolves, from an open token list rather than memory, to a single deterministic address (0x7712…2aec):
For a risk, compliance, or treasury desk, the questions about an instrument like this are concrete: who holds it, when shares are issued or redeemed, where they move, and what control actions the issuer takes. The claim this guide makes good on is that all of that is onchain and reachable in one query shape, decoded, without operating a node or wiring up a bespoke feed for each issuer.
2. What its onchain life actually looks like
One bounded query returns every BUIDL log in a block. This pulls block 25,344,852:
That block holds a single BUIDL transaction that does something specific and, to most people, invisible: the fund distributes its yield by minting new shares to its holders. In this one transaction it issued new BUIDL to a batch of whitelisted wallets, thirty-three of them, each a separate mint, all returned by the one query above:
- 0xed71…cf72 4,693.97
- 0xf2f4…510f 871.21
- 0xe6a8…13b8 499.56
- 0x12c0…b0b4 362.81
- 0xce90…ada6 262.96
- 0xf19a…49e8 245.94
- and 27 more in the same transaction, down to 0.03 BUIDL
Transfer from the zero address, the largest 4,693.97 shares. Eleven blocks later, transaction 0xc78c…0fb6 shows a secondary transfer of 326.81 BUIDL between two approved holders. Issuance, yield, and movement, all onchain.
A monitoring agent does not have to know any of this in advance. It points one query at the contract, gets every event in the window as raw logs, and reads the issuance off the Transfer-from-zero rows, matching topic0 to the known ERC-20 Transfer signature. The same query on a wider window is the fund's full issuance and transfer history.
3. The control events that ride alongside
A tokenized security carries more than transfers, and the extra events ride in the same log stream. Every BUIDL mint above is paired, in the same transaction, with a second event the standard ERC-20 ABI does not recognize. Here are both, raw from the stream for one holder: the Transfer, whose topic0 is the well-known ERC-20 signature, and the event riding alongside it, whose topic0 is not:
That topic0 resolves to Issue(address,uint256,uint256), BUIDL's own issuance event: the holder sits in the indexed topic, and the first word of the data, 262960000, matches the paired transfer to the same holder. You name issuer-specific events like this by supplying the issuer's ABI, which is exactly the work a monitoring desk does once per asset. The Portal's job is to make sure none of the events are missing: it hands you every log, the standard ones and the issuer-specific ones alike, keyed by topic0.
Some regulated tokens standardize this vocabulary. The ERC-3643 (T-REX) standard defines named compliance events that an identity-and-freeze framework emits, with these signatures (quoted from its token interface):
- AddressFrozen Account frozen or unfrozen(address indexed _userAddress, bool indexed _isFrozen, address indexed _owner)
- TokensFrozen Partial balance frozen(address indexed _userAddress, uint256 _amount)
- Paused Transfers halted(address _userAddress)
- RecoverySuccess Tokens recovered to a new wallet(address indexed _lostWallet, address indexed _newWallet, address indexed _investorOnchainID)
Issue event or T-REX's AddressFrozen, the monitoring mechanic is identical: filter the asset's logs, decode against its ABI, cite the block and transaction. A blocked transfer under a restriction standard like ERC-1404 reverts rather than emitting, so the durable trail is these control events plus the transfers that went through.
4. Every deployment, one shape; pin the contract
Tokenized funds increasingly deploy across several chains, and the query does not change between them. The identical decoded-log request runs on every chain SQD indexes, swapping only the dataset name and the asset's per-chain address, the same way the stablecoin guide reads one token across chains.
One mistake quietly ruins this. An event signature is global: the Transfer topic0 (0xddf2...3b3ef) is identical on every ERC-20 on every chain, so a query that filters by the event but not by a contract returns transfers from thousands of unrelated tokens at once.
- event onlyevery contract with that signature (noise)
- event + contract pinonly BUIDL on that chain (signal)
The symbol is not safe to reuse across chains either. Resolving BUIDL on Base does not return BlackRock's fund; it lands on an unrelated token called GoHacker.AI (0x4b73…6642) with 18 decimals instead of BUIDL's 6, so a symbol-based filter would watch the wrong contract and misread every amount. Pin the per-chain contract, not the ticker.
So monitoring starts by resolving the asset's exact address per chain and always pinning it in the filter, which is why the first call in this guide was resolve_entity, not a global event scan.
5. Movement and control events, not balances
Two boundaries keep this honest. First, the data is the events the contract emits, issuance, transfers, and control actions, not a reconstructed per-holder balance series. You can watch every share issued and moved, which is what monitoring needs; turning that into holder positions over time is a separate aggregation you build on your own rows. Second, onchain events attest to onchain actions only. The BUIDL issuance proves shares were minted to those wallets; it does not prove the offchain treasuries behind them. This is a precise, timestamped trail of onchain activity, and it is not a proof of reserves. Stating both is what makes the monitoring trustworthy rather than overclaimed.
6. Why this is harder elsewhere
Curated token-activity APIs are built around the ERC-20 surface: transfers and balances. The issuer-specific control events, BUIDL's Issue, a T-REX token's AddressFrozen, an allowlist change, are not part of that standard surface, so they tend not to be exposed as queryable, decoded, citable data.
Getting every log a regulated token emits, the standard events named and the issuer-specific ones handed back raw to decode against the ABI, and doing it across every chain the asset is deployed on in one query shape, is the harder thing. It needs raw decoded logs for arbitrary signatures, not a fixed transfer-and-balance endpoint, which is what reading logs directly off the Portal provides.
For the same one-query-shape mechanics applied to a stablecoin, see stablecoin data. For the agent pattern that drives the monitoring loop, see AI agents and onchain data, and to wire the tools into an editor, the Portal MCP setup.
Frequently asked questions
Can I see a tokenized treasury fund's activity onchain?
What control events does a tokenized asset emit beyond Transfer?
Why does decode=true sometimes return event_name null?
Why must I pin the exact contract address when monitoring an asset?
Does this tell me each holder's balance, or that the fund is backed?
Related guides
Monitoring tokenized assets?
See how issuance, transfer, and control-event data feed RWA tooling on the RWA solution page.