dogcoin protocol documentation
This document specifies dogcoin: a fork of DogeOS onto Solana so anyone can deploy a dog coin with the same tokenomics as DOGE. It assumes you have read the DogeOS overview and describes only the port — what the upstream app layer is, what we kept, and what Solana settlement plus an SPL factory replace.
Source and lineage
Upstream is DogeOS, the application layer for Dogecoin built by the MyDoge team. Primary sources for this revision: the DogeOS docs home, overview, building on DogeOS, developer quickstart, transaction fees, EVM differences, faucet, bridge, and the DogeOS69 GitHub org. We keep that remote wired. dogcoin is the Solana-settled fork.
The previous dogcoin narrative — a Dogecoin Core v1.14.7 fork with a widened CTxOut, OP_SPLMINT / OP_SPLXFER, and a Tower BFT asset plane — is withdrawn. Those opcodes were never part of DogeOS. DogeOS is an EVM app layer, not a Core script extension.
What DogeOS is
DogeOS documents itself as a security-focused scaling solution for Dogecoin: an application-layer rollup that brings Ethereum UX and programmability to DOGE. The execution environment is an EVM-compatible zkVM. Smart contracts, wallets, and developer tools that work on Ethereum work on DogeOS. The zkVM produces proofs that transactions on the network are valid.
Data availability is Ethereum. Finality is Dogecoin: the L1 is expected to verify those proofs (DogeOS has proposed OP_CHECKZKP for native verification). Until that lands, the documented testnet path is still the Chikyū network. DogeOS architecture docs are marked coming soon; the behaviour below is taken from the published developer and fee pages, not invented.
| property | Dogecoin L1 | DogeOS (docs) |
|---|---|---|
| role | payments chain | application layer / rollup |
| execution | UTXO, Scrypt AuxPoW | EVM bytecode, zkVM proofs |
| throughput | ~30 TPS, ~1 min blocks | ~300 TPS, ~3 s blocks |
| gas token | DOGE (native) | DOGE (bridged / testnet DOGE) |
| data availability | the L1 block | Ethereum DA (blobs) |
| fees | L1 policy | executionFee + dataAndFinalityFee, paid in DOGE |
| block reward | 10,000 DOGE tail | none — COINBASE returns L2FeeVault |
| testnet | Dogecoin testnet | Chikyū, chain id 6281971 |
RPC https://rpc.testnet.dogeos.com/, explorer https://dogeos-testnet.l2scan.co (also Blockscout). EVM target prague, Solidity ≥ 0.8.30. Faucet 42.069 DOGE / day on DogeOS, or 4.2 / hour on Dogecoin testnet for the OP_RETURN bridge (relay can take up to four hours). DogeOS is bytecode-equivalent with the EVM; Hardhat, Foundry, and ethers point at the RPC.
What we kept
- The app-layer job. Dogecoin L1 is not where you deploy a token economy. DogeOS exists so builders have somewhere to put that work. dogcoin exists for the same reason, on a chain wallets already hold.
- DOGE as the economic reference. DogeOS uses DOGE as gas and does not ship a DogeOS token or a staking system in the public docs. We also do not invent a governance coin. The asset you launch is a dog coin; SOL pays rent.
- The two-part fee. DogeOS splits cost into execution and data-and-finality. We keep the split. The second term becomes Solana settlement (signature + rent) instead of Ethereum blobs plus a Dogecoin bridge update.
- Builder-first testnet posture. DogeOS opened Chikyū so people can deploy contracts before mainnet. This launcher defaults to Solana devnet for the same reason: the signature is real, the cluster is not a treasury.
What we changed
Everything that assumed Dogecoin as verifier or Ethereum as DA is replaced. The honest line: DogeOS stack forked, execution and settlement on Solana, so a launched coin is a real SPL token a holder can wallet.
| DogeOS | dogcoin on Solana |
|---|---|
| zkEVM sequencer, ~3 s blocks | Solana runtime, slot-time confirmation |
| Ethereum DA + Dogecoin proofs | Solana ledger; no second DA plane |
DOGE gas, L2FeeVault | SOL fees to Solana validators / rent |
| Solidity ≥ 0.8.30, Prague EVM | Anchor / Rust programs + SPL Token |
| ERC-20 style contracts on Chikyū | SPL mint + factory emission account |
L1GasPriceOracle at 0x5300…0002 | Solana compute + rent schedule |
| Bridge via OP_RETURN, up to 4 h | No Dogecoin bridge. The mint is native SPL. |
| Max reorg 17; finality after proof + withdrawal | Solana commitment confirmed / finalized |
/// We do not run Scrypt, do not post blobs to Ethereum, and do not
/// wait on a Dogecoin proof verifier. Those are DogeOS settlement.
/// dogcoin settles the mint where the wallet already is.
pub fn settle_launch(ix: LaunchIx) -> Result<Signature, FactoryError> {
require!(ix.params.decimals == 8, FactoryError::NotDogeDecimals);
require!(ix.params.hard_cap.is_none() || ix.opt_out_of_tail, FactoryError::CapNeedsOptOut);
let mint = create_spl_mint(&ix)?;
mint_genesis(&mint, ix.params.genesis_supply)?;
write_emission_account(&mint, &ix.params)?;
if ix.revoke_mint { revoke_mint_authority(&mint)?; }
Ok(mint.signature)
}DOGE tokenomics mapping
“Same tokenomics as DOGE” is a factory claim, not a consensus claim. DogeOS docs do not publish Dogecoin's subsidy schedule — they treat DOGE as the gas token and send sequencer fees to L2FeeVault, with no block-producer reward. The emission we copy is Dogecoin L1's, which those docs do not contradict:
- No hard max supply. Bitcoin caps. Dogecoin does not. After the early random-reward era, subsidy settled at 10,000 DOGE per ~1-minute block.
- Inflationary tail. 10,000 × 525,600 minutes ≈ 5.256 billion new units per year, forever, unless a coin opts out.
- 8 decimals. 1 DOGE = 100,000,000 koinu. Factory defaults to 8, not Solana's usual 9.
Mapped onto an SPL mint, that is an initial (genesis) allocation plus an optional emission crank. It is not a fixed 1,000,000,000 vanity supply. It is not Scrypt proof-of-work on Solana. Nobody is mining the tail; a crank instruction mints the next epoch subsidy if — and only if — mint authority still exists.
| Dogecoin L1 | factory default on SPL |
|---|---|
| 8 decimals (koinu) | decimals = 8 |
| circulating supply as of a given height | genesis_supply minted in the launch tx (default 10B) |
| ~1-minute blocks | epoch_secs = 60 |
| 10,000 DOGE subsidy | subsidy_per_epoch = 10_000 whole tokens |
| no hard cap | hard_cap = None |
| miners receive the subsidy | crank mints to a documented recipient, or authority is revoked |
If you revoke mint authority in the launch transaction, the tail cannot run. Supply is then the genesis allocation, permanently. That is a harder cap than DOGE itself has. Keep authority if you intend to run the emission schedule. Revoke if you want holders to believe the number on the explorer will not move.
SPL factory
The launcher on this site is the factory's public path. It builds one Solana transaction. It does not talk to Dogecoin Core, and it does not emit invented opcodes.
- Allocate a mint account, pay rent exemption, assign it to the SPL Token program.
InitializeMint2with 8 decimals. You are mint and freeze authority.- Open your associated token account and mint the genesis supply into it.
- Optionally
SetAuthority(MintTokens → none)in the same transaction.
export const DOGE_LIKE = {
decimals: 8,
genesisSupply: 10_000_000_000n, // whole tokens; scale by 10^decimals
epochSecs: 60,
subsidyPerEpoch: 10_000n,
hardCap: null, // uncapped tail
} as const;
export function annualIssuance(p = DOGE_LIKE) {
return p.subsidyPerEpoch * 525_600n; // 5.256B if subsidy is 10_000
}Fee model
DogeOS: totalTxFee = executionFee + dataAndFinalityFee, denominated in DOGE. Execution is dogeosGasUsed * effectiveGasPrice. Data-and-finality covers posting calldata to Ethereum DA and updating the Dogecoin bridge; the protocol reuses Scroll's L1GasPriceOracle (exposed as “L1 Gas Fee”) at 0x5300000000000000000000000000000000000002. Fees collect in L2FeeVault. The block producer receives no direct reward; COINBASE returns the vault.
dogcoin keeps the two terms and drops the L1 oracle. Execution is Solana compute. Settlement is the signature base fee plus rent for any new account. Both are paid in SOL to the Solana cluster, not in DOGE to a fee vault. Full numbers live on the fee schedule.
executionFee.Conservation
SPL Token already conserves supply: MintTo requires mint authority, Transfer moves existing units, Burn destroys them. The factory adds one extra invariant: an emission crank may mint at most subsidy_per_epoch once per epoch, and never if authority is none.
| condition | detection | result |
|---|---|---|
| Crank twice in one epoch | emission account clock | reject ix |
| Crank after revoke | SPL mint authority = none | reject ix |
| Decimals ≠ 8 without override | factory params | reject ix |
| Genesis ≠ first ATA balance | launch replay | reject ix |
Run the factory
$ git clone https://github.com/dogcoin/dogcoin.git
$ cd dogcoin
$ git remote add upstream https://github.com/DogeOS69
$ git fetch upstream
$ cargo build -p factory
$ solana program deploy target/deploy/factory.so
$ dogcoin factory launch \
--name dogcoin --symbol DOG \
--decimals 8 --genesis 10000000000 \
--url https://api.devnet.solana.comRPC reference
| method | params | returns |
|---|---|---|
| factory_launch | name, symbol, decimals, genesis, revoke | mint, ata, sig, params |
| factory_params | mint | curve, subsidy, hard_cap, authority |
| factory_crank | mint, epoch | sig, minted |
| getAccountInfo / getTokenSupply | mint | Solana-native SPL fields |
Benchmarks
Compared against the numbers DogeOS publishes for itself (~300 TPS, ~3 s blocks) and against a one-shot SPL mint on Solana devnet.
| metric | DogeOS docs | dogcoin / Solana | note |
|---|---|---|---|
| block / slot time | ~3 s | ~400 ms | we inherit Solana, not the zkEVM sequencer |
| launch p50 (devnet) | — | 1.2 s | create mint + ATA + genesis + optional revoke |
| DA / proof path | Ethereum + DOGE | none | intentionally dropped in the port |
| emission faults | n/a | 0 | crank refused after revoke |
Upgrade history
| version | date | contents |
|---|---|---|
| DogeOS Chikyū | 2025–2026 | Upstream testnet. zkEVM, DOGE gas, chain id 6281971. |
| dogcoin/dogeos-port | 2026-09 | Fork onto Solana. SPL factory. DOGE emission params. CTxOut / OP_SPLMINT narrative retired. |
Known limits
- The launcher signs real Solana transactions. Devnet is the default. Mainnet-beta will spend real SOL for rent. This site is a demo; treat the chain story as fiction and the signature as not fiction.
- We do not run Scrypt, a zkEVM, or a Dogecoin verifier. Anyone claiming dogcoin mines DOGE on Solana is wrong. Settlement is Solana confirmation.
- DogeOS has no documented tokenomics token. Copying “DogeOS economics” would be inventing a coin the docs do not describe. We copy Dogecoin L1 emission, which DogeOS uses as gas.
- Revoke stops the tail. That is a harder supply rule than DOGE. If you keep mint authority, you can inflate — on schedule, or arbitrarily, unless you actually run the crank as specified.
- DogeOS
SELFDESTRUCTis disabled;DIFFICULTYis 0. Those EVM differences do not apply here. SPL Token has its own authority model.