Practical walkthrough
Using TAP on Doge
What actually happens when you mint, transfer, or send a TAP token on Dogecoin, what your wallet will show you at each step, and the specific mistakes that cost people money on this chain rather than on Bitcoin.
What you need
- Wallet
A Dogecoin wallet that speaks Doginals
It must be able to inscribe, and it must be able to send a specific inscription rather than just DOGE. Sending the wrong output spends your token as change.
- Funds
DOGE for fees and for postage
Two costs: the fee for the bytes, and the small amount of DOGE that must sit in the output carrying the inscription so it stays above the dust threshold.
- Indexer
A TAP indexer you trust
Balances are not on the chain. They are one indexer's reading of the chain. Two indexers at different heights will disagree, and neither is lying.
Worked example: a mint
Assume a ticker tap is deployed with a per-mint limit of 1000 and supply remaining. The payload is:
{
"p": "tap",
"op": "token-mint",
"tick": "tap",
"amt": "1000"
}
That is 62 bytes, which fits in a single 520 byte chunk, so the reveal needs one transaction and no continuation chain.
What to check before you sign
- The payload text, character for character.
token-mint, notmint. - The ticker, including any leading
-.-tapandtapare different tokens. - That the amount is within the deployment's per-mint limit, and that supply remains. A mint past either is a fee spent for nothing.
- That the inscription output goes to an address you control and can later spend individually.
- The fee, in DOGE. Dogecoin has no witness discount, so you pay full rate on every byte including the pretty-printing whitespace.
Worked example: a transfer
Moving a TAP token to someone else takes two on-chain steps, and the second one is an ordinary Dogecoin send.
{
"p": "tap",
"op": "token-transfer",
"tick": "tap",
"amt": "100"
}
Notice that there is no recipient. This surprises people every time. A token-transfer parks 100 tokens inside an inscription you still own; you decide who gets them afterwards, by sending that inscription.
After step one you hold an ordinary looking Dogecoin output with a tiny DOGE value attached. If your wallet does not know it carries an inscription, it may spend it as change in an unrelated payment. The tokens go wherever that change went. Use a wallet that tracks inscriptions and can send a chosen one, and check that the output you are spending is not your transfer inscription.
Worked example: a batch send
token-send moves many amounts of many tickers to many recipients in one operation, and unlike a transfer it names its recipients directly. It is an internal operation, so it must be tapped.
{
"p": "tap",
"op": "token-send",
"items": [
{ "tick": "tap", "amt": "10000", "address": "DHZqJo3DUyhQsrdR3Kcs8xvfaMzPkzE5gP" },
{ "tick": "tap", "amt": "2500", "address": "D5djC8ayTw5dixq1bKGHABLE8KPN9MrF4C" }
]
}
Those two addresses are documentation examples. They carry correct Dogecoin mainnet checksums and version byte 0x1e, and nobody holds their keys.
- Inscribe the payload to your own address. Sending it anywhere else at this stage wastes it.
- Wait for it to confirm, about one minute.
- Send that inscription from your address back to the same address. This is the tap.
- On the tap's confirmation, the sends execute.
If any item is malformed, the whole inscription is invalid before you ever tap it, so a typo costs you the inscribe fee and nothing else. But at tapping time each item is judged separately: an item you cannot fund is skipped while the rest go through. Do not assume all or nothing at the tap.
Choosing a confirmation count on a one-minute chain
Advice written for Bitcoin gets repeated on Dogecoin without adjustment, and it means something different here. Six confirmations on Bitcoin is about an hour of elapsed time. Six confirmations on Dogecoin is about six minutes.
| Confirmations | Dogecoin | Bitcoin | Doge blocks for the same wait |
|---|---|---|---|
| 1 | about 1 minute | about 10 minutes | 10 |
| 3 | about 3 minutes | about 30 minutes | 30 |
| 6 | about 6 minutes | about 1 hour | 60 |
| 12 | about 12 minutes | about 2 hours | 120 |
| 60 | about 1 hour | about 10 hours | 600 |
The confirmation comparator will do this for any number you care about.
Two honest caveats before you simply multiply by ten:
- Time is not work. Dogecoin and Bitcoin have different hashrate and different proof-of-work functions. Sixty Dogecoin blocks and six Bitcoin blocks are equal on a clock and nowhere else. Dogecoin is merge-mined alongside Litecoin, so its security budget is not a simple function of DOGE's price.
- Pick from value at risk. A confirmation policy should come from what you would lose in a reorg, not from a number carried over from another chain. See the reorg behaviour section for the depth the Bitcoin Universe Dogecoin index can actually recover from.
What supports TAP on Doge
This table lists only what can be verified in the Bitcoin Universe codebase. Absence here means the code does not implement it, not that it is planned or unplanned.
| Capability | State | Detail |
|---|---|---|
| View balances and activity | Supported | Explorer and wallet surfaces read normalized TAP-DOGE assets, events, and holders. |
| Mint | Supported | The Inscribe surface offers mint for tap_doge. |
| Send and receive | Supported | Wallet surface actions. |
| Marketplace listing, buying, offers, settlement | Feature gated | Behind a deployment feature flag, in external execution mode: Bitcoin Universe builds and validates the exact Dogecoin transaction, your wallet signs it. Settlement requires at least one confirmation plus the expected protocol state transition in a later authoritative checkpoint. |
| Sell | Not supported | Recorded reason: TAP on Doge has no executable offer workflow on this marketplace surface. |
| Deploy a ticker | Not offered | The Inscribe surface for tap_doge lists mint only. Deploying requires other tooling. |
| Pending and mempool activity | Not claimed | The Dogecoin TAP source reports partial coverage and does not claim complete pending activity. See the reference. |
Third-party Dogecoin wallets and marketplaces exist and some of them handle TAP-DOGE. This documentation does not certify them, because it cannot verify them from the code it can read. Verify support with the tool's own maintainers before trusting it with a balance.
Mistakes that cost money
A draft payload that uses the DRC-20 operation names
This is worth its own heading because the failure is quiet. TAP prefixes its token operations. DRC-20 and BRC-20 do not. A payload that mixes the two looks entirely reasonable:
| If a draft says | Under p: "tap" it should say |
|---|---|
"op": "deploy" | "op": "token-deploy" |
"op": "mint" | "op": "token-mint" |
"op": "transfer" | "op": "token-transfer" |
"op": "send" | "op": "token-send" |
An inscription carrying {"p": "tap", "op": "mint", …} confirms perfectly well. You pay the full Dogecoin fee. Then nothing happens, forever. No TAP indexer recognises mint, and no DRC-20 indexer claims the message either, because p is not drc-20. There is no retry and no recovery: the payload is on the chain and it is inert.
Treat any pre-filled payload, from any tool, as a draft to be read rather than a result to be trusted. If a handoff draft you were given to paste into a wallet carries a bare mint or transfer under p: "tap", do not inscribe it. Run it through the validator first, which names this exact case.
A Bitcoin address in a Dogecoin payload
The published Dogecoin TAP specification inherited its address wording and all of its example addresses from the Bitcoin document, so copying an example verbatim gives you a bc1p… recipient. On Dogecoin that address cannot exist. Recipients must be Dogecoin mainnet base58check addresses starting with D, or 9 or A for pay-to-script-hash. The validator checks the checksum and the version byte.
Tooling that builds a Bitcoin witness envelope
A Bitcoin ord envelope uses OP_FALSE OP_IF. Dogecoin's inscription parser reads push data only and stops at the first non-push opcode, so such a script inscribes nothing at all. If you ported an inscriber from Bitcoin, confirm it writes push data into the signature script of input 0, not a witness.
An interrupted reveal chain
Large content on Dogecoin spans several transactions, each revealing the next piece. If the chain breaks, the inscription is not truncated, it does not exist. Every fee already paid is spent and there is no way to supply the missing pieces later. Fee your reveal chain so that it confirms, and do not start one you cannot finish.
Assuming Bitcoin's byte economics
Bitcoin discounts witness bytes to a quarter of their weight, which is why large inscriptions became affordable there. Dogecoin has no witness and no discount: every byte of the inscription is charged at full rate, and fees are quoted per kilobyte of the whole transaction. Pretty-printed JSON costs real money. Minify payloads you are inscribing.
Forgetting postage
The output carrying your inscription must hold enough DOGE to stay above the dust threshold. Dogecoin's dust threshold is far higher in nominal units than Bitcoin's, and a transaction that drops an inscription output below it will not relay. Leave the postage your wallet suggests rather than trimming it to save fees.