Skip to main content

On-chain analysis

Wallet flow analysis: track transfers and net flows

A transfer between two addresses can look like new inflow even when both belong to the same treasury. To measure wallet flows, first define which addresses belong in the study, then separate transfers within that group from transfers entering or leaving it. The fictional treasury example below shows the arithmetic and the checks needed to reconcile it with balances.

Educational research methods, without recommendations to buy, sell or hold an asset. Crypto assets can lose all their value. Read the risk disclosure.

By AlfaDAOPublished Updated

1. Define the cohort, asset and boundary

Write the question before collecting addresses. A study of a disclosed treasury, an application’s published contracts and an exchange-related label are different investigations. Record every included address, its public source, the network, the asset contract and the observation window. Describe whether the boundary follows accounts, a contract system or an explicitly defined group. Avoid adding addresses solely because their activity makes a chart look compelling.

Create a separate attribution field. An official address disclosure, an explorer label and a researcher’s inference provide different kinds of support. Preserve the source and confidence limitation of each relationship. Do not equate a cohort of addresses with a count of people or publish private identity links obtained through membership administration. When a controlling relationship is unknown, the analysis can still describe the addresses without pretending to know who owns them.

2. Collect records with stable identifiers and coverage

Fix the block range and record the query inputs, provider and retrieval time. Ethereum’s JSON-RPC documentation describes filtering logs by contract and block range; preserve those filters with the exported result. Check provider limits and incomplete pages before interpreting the totals. Use transaction hash and log index, together with the network, to identify a particular event and avoid counting duplicate exports as additional activity. Preserve block hashes and finality context; if a feed flags logs as removed after a reorganization, revise the dataset instead of treating unfinalized observations as permanent.

Record what the source actually covers. ERC-20 defines balance and transfer-related interfaces, but a token-specific implementation or a dataset’s indexing choices can require extra interpretation. Keep raw integer amounts and display-decimal conversion separate. A native-asset transaction value is also a different field from token-transfer records. Reconcile like quantities rather than adding every number shown on an explorer into an apparently comprehensive flow total.

3. Separate gross transfers from net boundary movement

For a chosen asset and cohort, define incoming boundary transfers, outgoing boundary transfers and movements between addresses inside the cohort. State whether reported volume includes internal transfers; it often answers a different question from net external flow. Do not label every incoming transfer a purchase or every outgoing transfer a sale. Those interpretations require evidence about the surrounding transaction and counterparties.

Consider a fictional treasury cohort with addresses A and B. A receives 100 token units from outside, transfers 80 units to B, and B sends 30 units outside. The three transfer rows total 210 units of gross movement. Across the cohort boundary, incoming flow is 100, outgoing flow is 30 and net flow is plus 70. The internal 80-unit transfer changes distribution within the cohort but does not add another 80 units to the cohort’s external inflow.

Fictional treasury transfers and balance reconciliation

Fictional treasury transfers and balance reconciliation
MeasureIllustrative calculationToken units
Gross transfer movement100 incoming + 80 internal + 30 outgoing210
Net external flow100 incoming − 30 outgoing+70
Internal movementA transfers to B inside the cohort80 (excluded from external inflow)
Closing balance under the stated assumptions50 opening balance + 70 net inflow120

4. Reconcile movement with balances and token mechanics

Compare start and end balances at consistent observation points and explain any gap between their change and the defined net-flow measure. For the invented conventional-token example, a starting cohort balance of 50 and net inflow of 70 suggests an ending balance of 120, assuming no other balance-changing mechanism or missing records. A mismatch should trigger an investigation of the assumptions and coverage rather than an immediate accusation.

Check minting, burning, fees, rebasing or other token-specific behavior when relevant. A Transfer event is a record to interpret in the context of its emitting contract, not a universal certificate of economic value. Etherscan also documents that its Transaction Action display summarizes selected events. Use such a summary as a navigation aid and return to underlying records when a conclusion depends on details that the summary omits.

5. Treat bridges and wrappers as linked mechanisms

Cross-chain analysis needs a distinct ledger for each network and asset representation. Ethereum’s bridge documentation describes mechanisms such as locking assets on one chain while minting a representation elsewhere, as well as other designs. A source-chain deposit and a destination-chain receipt should not automatically be counted as two independent economic inflows. Identify the actual bridge mechanism and link the legs only when its records support that relationship.

Keep unresolved bridge messages, different token representations and timing gaps visible. Do not merge assets solely because they share a ticker or assume that equal nominal amounts imply identical redemption rights. Likewise, wrapping an asset within one system can create several technical movements around one economic action. Explain which boundary the study measures and retain a separate count of unmatched paths instead of forcing every transfer into a complete narrative.

6. Publish the method and a reconciliation table

Present the cohort definition, time window, sources, raw-data coverage and the exact arithmetic behind the headline. A compact reconciliation can list opening balance, external inflows, external outflows, separately classified adjustments and closing balance. Add a note for unresolved differences. Report address counts as addresses and observed transfers as transfers unless further evidence supports a stronger interpretation.

Save revisions when an address label or bridge match changes. If the provider cannot supply part of the history, report the missing coverage rather than counting it as zero activity. Net transfers alone do not establish purchases, sales, profit or a wallet owner's plans.

Sources and further reading

Explore the research process

Bring your questions to the community.

These guides are public. AlfaDAO's NFT-gated platform gives members a place to compare research, discuss projects and organize their work.