Blockchain · 12 March 2019
TriveAsset — Putting Assets on Bitcoin Before the Inscription Wave
by Tan Ji Sheng
An archival field note — documenting work from that era, written up for the record later.
We built TriveAsset — TA for short — to encode both fungible and non-fungible assets directly on Bitcoin. No sidechain, no smart-contract state machine. Just a Bitcoin transaction carrying a tiny "dust" output for ownership and an OP_RETURN payload for the asset's data. It sat squarely in the colored-coins lineage — the same broad instinct the industry would later chase again with "inscriptions," though by a different mechanism. We were early. Early is not the same as polished, and I want to be honest about both halves of that sentence.
The mechanism, plainly
Bitcoin doesn't have accounts. It has UTXOs — unspent transaction outputs. Your balance is just the set of outputs you can spend. TriveAsset piggybacks on that.
To issue an asset, you broadcast a transaction with two things in it:
- A tiny dust output — a few hundred satoshis sent to an address. This UTXO is the asset. Whoever can spend it, owns the asset. Transfer ownership by spending the dust to a new address.
- An
OP_RETURNoutput carrying the "open data" — the asset's rules and metadata: what it is, how many units, divisible or not, this operation's issue/transfer/burn intent.
OP_RETURN is an unspendable, prunable output built for exactly this — attaching a small blob of data to a transaction. On Bitcoin that blob was capped at 80 bytes of payload, which matters a lot later.
The chain itself has no idea any of this means "an asset." Bitcoin sees a normal transaction moving dust around. The meaning lives entirely off-chain: a wallet or indexer walks the blockchain, finds transactions tagged as TriveAsset, reads each OP_RETURN, follows the dust UTXOs as they're spent, and reconstructs who owns what. The blockchain stores the events; the indexer computes the state.
That's the whole trick. On-chain data, off-chain interpretation.
We did not invent this — and that matters
I want to place this honestly in its lineage, because the honest version is more useful than the flattering one.
Embedding asset meaning into Bitcoin's UTXOs is the colored coins family, and it predates us by years. Yoni Assia floated "colored bitcoin" in 2012; Meni Rosenfeld's colored-coins writeup landed the same year. Then came the protocol wave: Mastercoin (2013, later renamed Omni — the rail Tether first launched on in 2014), and Counterparty (2014), which was one of the first to use OP_RETURN to carry asset data directly. Those projects proved you could run programmable asset infrastructure on top of Bitcoin without touching the base protocol.
TriveAsset stands on that shoulder. We didn't invent embedding assets on Bitcoin. What we did was build and ship our own take on it — a working tokenization layer for fungible and non-fungible assets — inside Trivechain, at a time when almost nobody in our region had operated this class of system end to end.
The honest, still-interesting claim is the narrow one: we were building asset-on-Bitcoin encoding years before the inscription wave made the idea mainstream. When Casey Rodarmor shipped Ordinals in January 2023, and @domodata posted the BRC-20 schema that March, the mechanism was different — inscriptions write into Taproot witness data rather than an 80-byte OP_RETURN — but the philosophy rhymed with the colored-coins lineage we were already living in: put the asset's data directly onto Bitcoin instead of into a smart-contract state machine, and let indexers reconstruct the rest. BRC-20 ran into a familiar set of tradeoffs — off-chain indexer consensus, fee overhead, no native on-chain state — the same class of problems we'd already hit, even where the specifics differed.
The honest contrast: it was clunkier than ERC-20
If you've only worked with ERC-20, the UTXO approach feels like fighting the tool. That feeling is correct.
ERC-20 is account/state-based. One smart contract holds a clean global balance table — a mapping from address to balance — and the chain enforces it. You query the contract and it just tells you the truth. The state is native.
UTXO-embedded assets have no native state. There is no balance table anywhere on-chain. You reconstruct it by replaying every relevant transaction through an indexer. Which means:
- You depend on off-chain indexers. Two indexers with slightly different rules can disagree about a balance. The chain won't referee — it doesn't know the asset exists.
- You fight the dust limit. Every ownership record is a live UTXO you have to keep funded above dust. Assets bloat the UTXO set, and you're paying attention to satoshi-level accounting just to hold a token.
- You fight
OP_RETURNsize. 80 bytes is enough for a tag or a hash, not for rich metadata. You encode tightly, or you spill data across transactions, or you point to something off-chain. - You pay fee overhead on everything. Every mint, transfer, and burn is a full Bitcoin transaction with real miner fees, whether the asset is worth a lot or nothing.
None of that is fatal. All of it is friction. Sending an ERC-20 is one contract call; doing the equivalent with dust plus OP_RETURN is a small archaeology project every time you want to know the truth. I'm not going to pretend the UX was competitive. It wasn't.
What being early actually taught me
Being early doesn't hand you the market. It hands you the shape of the problem before anyone agrees on a name for it. We hit the indexer-consensus problem, the dust-management problem, the metadata-size problem, and the fee-overhead problem years before "BRC-20" was a phrase people argued about on Twitter. When the inscription wave arrived and the whole ecosystem started tripping over those same four rocks, none of them were new to us.
That's the real lesson, and it's not a victory lap. Early only pays if you're still standing when the idea's time arrives. Being early is a form of tuition — you pay it in clunky UX and dead ends, and the return only shows up if you survive to the moment the market catches up. We built asset encoding on Bitcoin before the mainstream cared. That taught me the terrain. Whether the timing ever paid off is a different question, and an honest post keeps those two things apart.