Dogecoin β DogeOS
Bridge
DogeSoftBridge 2.6.0-ds-standard on DogeOS testnet: DU$T live, 6 confirmations, 2-of-3 attesters, ds-standard bridge inscriptions.
Doge Soft Bridge moves DRC-20 Coins between Dogecoin L1 and DogeOS. Outward is lock-and-mint; back is burn-and-release. Both sides are settled by DogeSoftBridge 2.6.0-ds-standard, a multi-attester contract on DogeOS, not a single hot-wallet approver. Every bridge inscription uses the Doge Soft Inscription Standard.
DogeOS testnet: successful round trip. bridge.dogesoft.io Β·
first coin: DU$T. The first full DU$T round trip (Dogecoin β DogeOS β Dogecoin) completed on 19 October 2026.
Robinhood Chain is coming soon.
Deployment
| Parameter | Value |
|---|---|
| Chain | DogeOS ChikyΕ« testnet, chain id 6281971 (0x5fdaf3) |
| Bridge contract | DogeSoftBridge 2.6.0-ds-standard at 0x762d952DDc9bbF11b8442347D2D1B66934703036 |
| wDU$T | 0xC1b2889D74Bb9D615E4ce852777FE7583e79b8dA (18 decimals) |
| L1 custody | D9K5fqJ6vhs3FfUgiEn69SYZJQQvtsB2Su |
| L1 confirmations | 6 |
| Attester threshold | 2 of 3 |
| Per transfer | min 1, max 10,000,000 |
| Reserve cap | 1,000,000 DU$T total minted; the reserve attestation goes stale after 7 days, which pauses new mints |
| Admin changes | Timelocked (queue, wait, execute) |
| RPC / explorer | https://rpc.testnet.dogeos.com Β· blockscout.testnet.dogeos.com |
DRC-20 uses 8 decimals on L1; wrapped coins use 18 decimals on DogeOS. Native DOGE is not bridged. Earlier Soft Bridge contracts are retired.
Deposit: Dogecoin β DogeOS
- Get a ref. The bridge issues
ref = keccak256(abi.encode(keccak256("DOGEOS_EVM"), recipient, nonce)). The ref is a fingerprint of your DogeOS address, and its signed record is public atGET /ds/ref/<ref>. - Inscribe. Send a normal DRC-20 transfer to custody with the ds tag:
{"p":"drc-20","op":"transfer","tick":"DU$T","amt":"1000","ds":{"action":"BRIDGE_L1_DEPOSIT","ref":"0xβ¦"}} - Verify. Doge Soft's indexer waits for 6 confirmations and checks that the sender really held the DU$T, so a false inscription can't get through.
- Attest. At least 2 of 3 registered attesters sign the mint digest, which covers the ref and nonce.
- Mint.
mintFromL1Txrebuilds the ref from the recipient and nonce, refuses a mismatch, and refuses a ref that was already used. wDU$T can only go to the address the ref was made for.
Withdraw: DogeOS β Dogecoin
- Burn. Call
burnForReleaseon the wrapped token with your Dogecoin address. The contract issues a request id. - Release. Custody inscribes a DRC-20 transfer back to you tagged
BRIDGE_L1_RELEASE, withref= the request id. - Settle. After 6 L1 confirmations, 2 of 3 attesters sign and
settleReleasecloses the request on chain. Each request id settles once.
Bridge verbs
| Verb | Where |
|---|---|
BRIDGE_L1_DEPOSIT | User's DRC-20 transfer to custody. ref = recipient fingerprint. |
BRIDGE_L1_RELEASE | Custody's DRC-20 transfer back to the user. ref = request id. |
BRIDGE_L2_INTENT | Intent record issued by Doge Soft services. |
Safety rails
- Single-use refs for deposits and releases.
- 2-of-3 attesters; one key can't mint or settle. The threshold and attester set are public:
attesterThreshold(),getAttesters(). - Timelocked admin actions and a pause switch.
- Reserve cap: 1,000,000 DU$T total minted. A stale reserve attestation (older than 7 days) pauses new mints; it never puts funds at risk.
- Per-transfer limits: min 1, max 10,000,000.
Public HTTP
Base: https://bridge.dogesoft.io. Signing keys never belong in a browser.
| Endpoint | Description |
|---|---|
GET /health | Service health. |
GET /api/bridge/status | Operational status and custody address. |
GET /api/tokens/drc20 | Coin catalog with wrap address and exists flag. |
GET /api/tokens/wdrc20/:ticker | Wrapped address for one ticker. |
POST /api/bridge/l1/session | Open a deposit (ticker, amountHuman, recipientEvm). Returns custody, ref and the inscription body. |
GET /api/bridge/session/:sessionKey | Poll a deposit. |
GET /api/bridge/history | Bridge history. |
POST /api/bridge/l2/withdraw | Open a withdraw. |
POST /api/bridge/l2/withdraw/:withdrawId/submit | Submit the burn tx hash; the server checks the receipt itself. |
GET /api/bridge/balance/:chain/:address | Balance helper. |