← All notes

Advanced Is Usually a Tell

In crypto, when something is described as highly advanced, it is usually being described that way on purpose. Complexity is a sales tactic. It makes a product look like it contains something you could not build, discourages you from asking what it actually does with your money, and gives the people who built it somewhere to hide the risk.

We build the opposite way, and we have two pieces of software to show for it. One is public and open source. One stays in house. This post is about where the line between them is, and why the genuinely difficult parts of this work are all things nobody would call advanced.

What is actually hard

None of the following involves a smart contract, a consensus algorithm, or a line of cryptography we wrote. All of it took real work to get right, and all of it is the kind of thing that quietly produces a wrong number if you skip it.

Eight chains, no two alike. Ethereum, BNB Chain, Ethereum Classic, Solana, Bitcoin, TRON, Linea, Monad. Different address formats, different unit scales, different pagination, different ideas of what an error looks like. There is no abstraction that makes them the same. There is only a lot of careful, specific code, one chain at a time, each with more than one provider so a single outage does not take the page down.

Integers, never floats. Balances come back as base units: an integer string with a decimal count beside it. Converting that to a number and back is how you lose a few units to rounding and never notice. The tracker converts base units to a decimal string by moving the digits, and floats only ever appear in things that get displayed.

Price at receipt, recorded once. Mining income is income when you receive it, valued then. Recomputing it later at today's price does not update your books, it destroys them. So the app records the price the first time it can and never overwrites it, and the database write is conditional on the price still being missing so a retry cannot clobber the original.

Wrapped and bridged tokens stay on their own line. They track the price of the real thing without being the real thing. Summing them into the native coin produces a tidy number that misrepresents what you hold.

Tokens that lie. Wallets receive unsolicited tokens constantly, and some are built to impersonate a real coin so a dashboard shows a balance that is not there. The app flags what it can detect and prices nothing it cannot verify.

Balances have no memory. A node tells you what an address holds right now and nothing about last month. If you want history, something has to write it down every day. That is a scheduled row in a database, not a feature.

Average cost across a swap. Trade one coin for another and the basis has to move with it. The units given up leave at their average cost, the gap between that and the trade's value is realized, and the units received arrive with the trade's value as their basis. Twelve lines of code, and the only hard part is deciding to do it correctly instead of approximately.

That list is the whole product. It is bookkeeping, error handling, and refusing to round. Anyone claiming their version of this is advanced is either confused or selling.

Why we gave one away and kept one

The public version reads. It shows what a set of addresses holds across those eight chains, logs mining payouts at the value they arrived, keeps a ledger of purchases and swaps with cost basis, and draws the history. It cannot move anything. There is no field for a private key or a seed phrase, and there never will be, because read-only is the design rather than a version-one limitation. That promise is written into the repository's security policy and its contributing guide, and a pull request that breaks it gets closed.

We gave that away because it is the part that generalizes. Everyone watching their own holdings needs the same careful reading and the same honest arithmetic. None of it is a competitive advantage, and all of it is easier to trust when the code is on the table.

The in-house terminal is where anything that touches a transaction lives. That is a deliberate separation, not a business one. A tool that can only read cannot be tricked into spending, and keeping those two capabilities in two different codebases means a mistake in one cannot become a loss in the other. What the internal side does, and how, is ours, and it runs on our own money.

Where this actually is

None of this is finished, and the crypto work is the newest thing this company does. What is public today is one thing: a boring, correct reader with a ledger attached, released under MIT so anyone can check the arithmetic themselves.

That is the standard we intend to hold to as it grows. Nothing described as advanced, nothing that cannot be read, and every number traceable to something public.

The code is at github.com/Gpatrickj7/tofte-wallet-tracker-. The two posts underneath this one, Balances Have No Memory and What a Swap Does to Your Basis, go through the ledger and the accounting in detail.