Doge Soft for builders

Your app.
Meet Dogecoin.

One injected provider connects your experience to accounts, signatures, DOGE, DRC-20 Coins, Doginals and custom PSBTs. No private keys. No mystery middleware. Just a clean path to Layer 1.

window.dogesoft Zero dependencies Dogecoin-native
connection-lab.js dogecoin:l1
{ } Your app requests access
Doge Soft user approves
Ð Dogecoin settles on L1
Looking for Doge Soft…
provider.detect()

Three calls to hello

From blank file
to connected.

Feature-detect the provider, ask the user to connect, then react when their account changes. That is the whole front door.

detect.js
if (!window.dogesoft) {
  throw new Error("Doge Soft Wallet not found");
}

console.log("ready:", window.dogesoft.version);

One connection, a wider orbit

The wallet is the handshake.
The ecosystem does the rest.

Pair the provider with Doge Soft’s live products and data surfaces to build experiences that can inspect, act and verify without leaving the stack.

Explore the full stack  ↗

Provider toolkit

Small surface.
Serious reach.

Use friendly helper methods or the generic request() interface. Every signing action remains visible to the user.

Accountsconnect()

Connect & read

Request access, then read the active address, public key and confirmed balance.

const { accounts } =
  await dogesoft.connect();

const balance =
  await dogesoft.getBalance();
IdentitysignMessage()

Prove ownership

Authenticate with a wallet signature—without collecting a secret or moving a coin.

const signature =
  await dogesoft.signMessage(
    "Sign in to My App"
  );
PaymentssendDoge()

Send DOGE

Let the wallet handle fee rate, UTXO selection, user approval and broadcast.

await dogesoft.sendDoge({
  to: "D8p...recipient",
  amount: 4.2
});
TokenssendDrc20()

Move DRC-20 Coins

Send a tick through the same flow users already know from inside the wallet.

await dogesoft.sendDrc20({
  tick: "WOOF",
  amount: "1000",
  to: "D8p...recipient"
});
AdvancedsignPsbt()

Sign custom PSBTs

Build swaps, marketplace listings and multi-input transactions with explicit approval.

const { psbtHex } =
  await dogesoft.signPsbt(unsigned);

await dogesoft.pushPsbt(psbtHex);
Eventson()

Stay in sync

React when the user switches accounts or disconnects without refreshing your app.

dogesoft.on(
  "accountsChanged",
  (accounts) => sync(accounts[0])
);

Prefer one doorway?

Everything also speaks request().

The provider supports an EIP-1193-flavored request shape, making it easy to slot into an existing wallet adapter.

doge_requestAccounts doge_signMessage doge_sendDoge doge_sendDrc20
request.js
const accounts =
  await window.dogesoft.request({
    method: "doge_requestAccounts"
  });

Ready when you are

Build the thing Dogecoin is missing.

The provider shape is locked while the browser extension finishes testing. Explorer, indexer and DRC-20 Coins data are already live in the docs.