Cost basis engine
The chain records that tokens moved. It does not record whose they were.
How a number gets made
Priced from the trade, not from a quote looked up afterwards
Moving your own tokens is not a sale
Between two addresses you both watch, it is provable rather than asserted — you claimed control of both by adding them, so no label and no guess is needed.
Posting collateral is not a sale
You kept the exposure. What is a disposal is the liquidation afterwards, which is why the risk monitor exists on the next page over.
Bridging is not a sale
Same position, different chain. Nothing is realised and the basis carries across.
Four matching rules, and you choose
First in first out, last in first out, highest cost first, average cost pooling. The same trades give different gains under each, so the one in force is stated, never assumed.
Dividends with no transaction
The multiplier moves, your balance does not, and income arrives that no transfer-reading tool will ever see. It is measured from the multiplier at acquisition against the multiplier now.
A truncated history says so
If a wallet has more transfers than were read in one pass, the earliest acquisition we saw is a lower bound and is labelled as one — never quietly presented as the acquisition.
Where the chain runs out
A transfer we cannot explain gets read, cited, and handed back to you
It never claims to know who you are
There is no verdict meaning “this is your other wallet”. That fact exists only in your head, and inventing it would replace something you know with something we made up.
The reading changes no figure
It sits beside the honest “unknown”. What actually reclassifies a movement is you confirming who the counterparty is — and one confirmation settles every transfer that address was ever part of.