Docs / Get started / The orbit

How it fits together

The orbit

How the wallet, indexer, inscriber, DiggyDoge, launches, bridge, and Origin talk, with Dogecoin Core as the only chain.

Doge Soft isn't one app with a database. It's a small constellation of independent services that all agree on one thing: Dogecoin Core is the source of truth. The wallet holds the keys and signs. The chain settles. Everything else reads the index or writes a transaction Core will accept.

The map

The orbit, each piece doing one job:

PieceJobTalks to
Dogecoin Core The chain. Coins, transactions, and the proof that let a block in. The indexer reads it. A merge-mined block carries a Litecoin proof after the header; Core checks that proof. The index does not store it.
Indexer Watches each block. Records the UTXO set, the coin an inscription rides, and DRC-20 deploys, mints, transfers, and balances. One writer. Dogecoin Core
Explorer The website and the read API of that same index. Transactions, inscriptions, balances, history. The indexer. Same service.
Wallet Holds the keys and signs on the device. The extension injects window.dogesoft. Explorer for what an address holds. Inscriber to create a DRC-20 transfer. It does not parse blocks.
Inscriber Writes an inscription, or the standard tag {"ds":{"action","ref"}}, and the Doge Soft signature on that record. Dogecoin Core to publish. The indexer to check a balance. It does not keep the ledger. The indexer is the source of truth.
DiggyDoge Marketplace. A listing, offer, bid, or cancel is a signed record. When a dog moves, the transaction carries one tag of at most 80 bytes. The indexer for who owns the dog and which coin it rides. GET /ds/ref/<ref> returns the signed record. A separate proof of settled volume and fees lives at /attestations. See the inscription standard.
Swap (AMM) Quotes, pools and liquidity for DRC-20 ↔ DOGE (paused for now), plus bonding-curve launches Indexer for deposits, on-chain pool state
Bridge Locks DRC-20 on Dogecoin L1; registered attesters sign the mint of wDRC-20 on Robinhood Chain (DogeOS is still testnet) Indexer plus the L2 bridge contract. Live wraps are on Robinhood.
Launch A collection record is one creator-signed LAUNCH_DEPLOY. A mint is a LAUNCH_MINT tag on the buyer's transaction. The art stays a plain Doginal. Inscriber, the indexer, window.dogesoft
Origin Carries a Dogecoin fact onto DogeOS testnet. Two of three attesters sign before the contract stores it. It does not take custody of the L1 coin. A Dogecoin read, then the Origin contract. See Origin.
Pulse Displays live price and momentum for DRC-20 Coins Public oracle at oracle.dogesoft.io, plus DOGE/USD from pulse.dogesoft.io/api/doge-spot
𝕏Đ Good Tips, hire, rewards & marketplace on X Chrome extension on x.com; wallet signs every payment

The indexer is the spine

Explorer, the wallet, DiggyDoge, Swap, and the bridge read one index. That index watches Dogecoin Core block by block. It keeps the UTXO set, the coin each inscription rides, and DRC-20 state: deploys, mints, transfers, and current balances. Nothing above it re-parses the chain. A balance in the wallet, on Explorer, and in Swap is the same row.

The inscription standard does not make a second ledger. A sale, a launch mint, or a bridge deposit puts one tag on the transaction that moves the coins: {"ds":{"action","ref"}}. Price, seller, and buyer are the outputs. The long record stays a signed GET /ds/ref/<ref> on the service that issued the ref. Listings, offers, bids, and cancels are signed records, not inscriptions. A governance action is the inscription. The indexer stores each GOV_* body and rebuilds the organization from Dogecoin. See Governance.

How a send actually flows

Take the most common path — a user sends DRC-20 Coins from the wallet. It touches four of the pieces above, in order:

  1. The wallet asks the inscriber for a transfer inscription. The inscriber checks the sender's indexed balance covers it.
  2. The inscriber writes the commit and reveal on Dogecoin L1. The transfer inscription lands on the sender's own address. Nothing has moved to the recipient yet.
  3. The wallet sees the reveal, checks it, and signs the move transaction on the device, which sends the inscription to the recipient.
  4. The indexer picks up the confirmed move and credits the recipient. Explorer, the wallet and every other service read that same result.

The full walkthrough — including what's proven in production versus still being hardened — lives on the send pipeline page.

A marketplace sale is the other common path. The dog already exists. The seller signs SIGHASH_SINGLE|ANYONECANPAY (0x83). The buyer signs SIGHASH_ALL. The move carries {"ds":{"action":"BUY","ref":"r_…"}} and nothing else about the price. DiggyDoge reads the new owner from the index. The ref names the record signed with a Dogecoin signmessage.

What Doge Soft never touches

Private keys are generated and stored on the user's device, and every transaction that spends the user's coins, including the DRC-20 move, is signed there after the user approves. Services that sign (the inscriber for the inscriptions it creates, the bridge attesters for mints, a marketplace for its own ref record) sign their own messages and never hold a key to a user's wallet. The browser extension keeps its own encrypted wallet and signs locally, or relays requests to a paired phone. See the security model and Bridge pages.

💡

If you're integrating from outside the wallet — a website, a bot, a game — you'll talk to Explorer for reads and the wallet provider for anything that needs a signature. You will not need to run your own indexer, and you do not talk to Core.