MNT is two different assets, and other reasons currency codes lie
MNT is the Mongolian tugrik. MNT is also Mantle, a crypto token. One is
worth about a thirty-five-hundredth of a dollar; the other is worth about a
dollar. They differ by three orders of magnitude and they share a name.
If a finance app stores your holdings by currency code, and you hold both, it cannot tell them apart. It will not error. It will show you a number, and the number will be wrong by a factor of a few thousand.
This is a small story about a small bug, and it is the clearest illustration we have of how Walleet is built.
The assumption that fails
ISO 4217 assigns three-letter codes to national currencies: USD, EUR, JPY.
It is a real standard with a registration authority, and within its own scope
the codes are unique.
Crypto has no such authority. Tokens pick their own tickers, and there is nothing to stop one picking a ticker that ISO already assigned. Several have.
So the moment an app prices both national currencies and crypto, the assumption underneath most of its code — a code identifies an asset — quietly stops being true. Nothing announces this. The schema still works. The queries still return rows. They just return the wrong ones.
Why it is worse than a normal bug
Most bugs fail loudly. A wrong column name throws. A missing record returns nothing.
This one returns a plausible number. Your net worth is computed, formatted, charted and displayed, and it is wrong. Every downstream figure inherits the error: the total, the currency breakdown, the change since last month, the all-time high. Nothing looks broken.
Worse, it is data-dependent. It only misfires for users holding both colliding
assets — which for MNT is a small set — so it survives testing, review and
months of production. It is the kind of defect you find from a support email
that says "my total looks strange", if you are lucky.
What Walleet does
An asset is identified by a pair: its code and its type. MNT/currency is
the tugrik. MNT/crypto is Mantle. They are two rows, two prices, two
histories.
The pair goes everywhere. An account's denomination is a pair. The currency you read your net worth in is a pair. A rate lookup takes a pair. The database enforces it — an account's currency is a foreign key onto the code-and-type of a supported asset, so an account in an asset that does not exist cannot be created.
And the type is not optional at the edges. The API asks for it wherever it is needed, and the parts of the codebase that handle assets are written so that dropping half of the pair does not compile. That is deliberate: a rule enforced by review gets broken eventually, and a rule enforced by the compiler does not.
The other place codes lie
The same wrong assumption shows up in formatting.
The standard machinery for rendering currency in a browser takes a three-letter
ISO code. Give it four letters — USDT, DOGE — and it does not return a
best-effort string. It throws. In the wrong place, that takes the page down
rather than misrendering one number.
And a three-letter crypto code is worse, because it is accepted. BTC is
three letters, so it is formatted happily — at the ISO default of two decimal
places. A tenth of a bitcoin renders as BTC 0.10, which is fine, and a
thousand satoshis render as BTC 0.00, which is not.
Both cases are handled explicitly: codes are classified before they reach a formatter, and every asset carries its own precision. National currencies take theirs from the same standard data your operating system uses — the yen has no decimal places, the Bahraini dinar has three — and coins take a declared one, capped at eight.
Eight is a stated limit rather than a hidden one. Some tokens are divisible to eighteen places, and a floating-point number cannot carry eighteen significant digits alongside a realistic holding. So the cap is documented and applied uniformly, rather than a number quietly losing its tail.
Why this is in a marketing article
Because it is the sort of thing you cannot check from the outside.
Every net worth tracker shows you a number. None of them show you the reasoning, and from the screen a correct total and a total that is wrong by three orders of magnitude look equally confident. You are trusting the arithmetic and you have no way to inspect it.
We would rather tell you where the sharp edges are and what was done about them. A team that has thought about the tugrik has probably thought about the ordinary cases too — and if any of this turns out to be wrong, the fix belongs in the product rather than in the wording.
If you want more of how the arithmetic works, the conversion method is written up in what net worth in one currency actually means.
