MONEYFLOW GRAPH EDGES out of a Cardano (ada, ADA, cardano) address: Source -> Target, where the
targets are the recipients of the transactions this address spent in (every output except those
back to the address itself), per asset - Amount, Txs, Target_Stake_Key and
Same_Stake_Key (1 = the target shares the source's staking credential, so it is most likely the
same wallet rather than a counterparty). Building block for a MoneyFlow DIAGRAM - call per
address / hop, collect edges, render Mermaid `graph LR`, stop at exchange nodes.
NOT one transaction's outputs → use ada_tx_flow.
NOT its spending transactions one by one → use ada_sent_from_address.
Returns up to limit rows (default 20, at most 500), one per recipient and asset, largest
Amount first.
currency="ADA" (default) gives ADA edges; pass a token fingerprint (asset1...), policy id or
Currency_Id to follow a token, or currency="" for one edge per (target, asset) - then edges of
different assets are not comparable and are ranked by Txs. ADA amounts are in ADA, not lovelace.
A token amount is scaled by the token's registered decimals when they are known (Decimals > 0);
most tokens have none registered, and their amounts are raw on-chain units. Never USD - for the
ADA price use currency_price with currency_id "ada".
NOTE: in UTXO every recipient of a spend transaction is attributed to the spending address; on a
script address (DEX pool, order book) the edges are the contract's users. Cardano outputs are
not labeled as change: an output that returns to the payer counts as a recipient like any other.
Change sent to the wallet's other addresses therefore appears as an edge: Same_Stake_Key = 1
marks it for base addresses; for Byron / enterprise addresses check ada_related_addresses.
SCOPE: reads the address's most recent max_txs spending transactions (default 1000).
Two scope columns on every row state what was covered (how many of those transactions were read
and the time of the oldest one); a non-empty
Next_Cursor means older transactions may exist - pass it as cursor to continue with the next older
batch. When nothing matched in the transactions read, ONE row comes back with an empty address
column that carries only these scope columns - that means nothing in this batch, not in the
whole history. A small share of transactions (a few hours of blocks in March 2023 among them) is
missing from this aggregate, and so are most outputs of a token MINTED in the same transaction
(freshly minted tokens, LP and receipt tokens rarely show up as token edges); ada_tx_flow on a
single transaction is always complete. The edges carry no labels: identify the Targets with
labels_for_addresses(chain='cardano') in one call and stop at exchange nodes; an empty answer
there is a coverage gap, not a clean address.
`Symbol_NonAscii` = 1 flags a symbol that is not plain ASCII: normal for CJK / emoji names, also how a look-alike imitates a major token.
Each row: Source, Target, Target_Stake_Key, Same_Stake_Key, Currency, Symbol_NonAscii, Asset_Fingerprint, Policy_Id, Currency_Id, Decimals, Amount, Txs, Spend_Txs_Scanned, Oldest_Spend_Time, Next_Cursor.