Skip to content

Repository files navigation

Ðocial — public Social OS for Dogecoin

This repository is the canonical public specification for Ðocial (Ð:SOC).

Ðocial is one public social protocol: posts and threads as inscriptions, engage as a single OP_RETURN verb (react + optional DOGE tip to the creator), and follows on L1. Private chat is not this protocol — that is Ðignal (Ð:DIG).

Wire OP_RETURN magic UTF-8 Ð:SOC (30-byte binary)
JSON inscription "p": "Ð:SOC" · "v": "1.1"
Status v1.1 consolidated launch draft
Chain Dogecoin
License MIT
Source of truth spec.md

Tip amount is never in the OP_RETURN. The signal names the target; spendable outputs to pay_to are the money. Quote/repost SHOULD pay the original the same way. Mentions pay only as extra UTXOs, not as JSON.

Authors

Jon Heaven — GitHub @jonheaven · X @jontype

If you ship this in a wallet, indexer, or feed, you are implementing this protocol. Keep Ð:SOC bytes and "p": "Ð:SOC" identical so every indexer sees one graph.

Start here (pick your job)

You are… Read this
Human, 2 minutes this README
Wallet / dApp engineer WALLET.md — post, engage, follow, tip UTXO
AI coding agent AGENTS.md — do / don’t, files, live checks
Protocol implementer spec.md — normative rules
Need bytes today reference/dsocial.mjs + vectors/op-return-vectors.json

North star (mental model, not extra MUST rules): SOCIAL_LAYER.md. Indexer / product sketch: INTEGRATION.md.

How it works

1. Author inscribes JSON p:"Ð:SOC" op:post (content + pay_to).
2. Reader likes: same tx has OP_RETURN Ð:SOC engage + DOGE output ≥ min to pay_to.
3. Quote/repost: inscription + SHOULD also pay the original’s pay_to in the reveal tx.
4. Mentions: extra DOGE outputs to resolved addresses (JSON list is not the payment).
5. Indexer stores the post, sums tips from UTXOs (never from the signal).
6. Follow is a 30-byte signal; last follow/unfollow wins per pair.

Compact engage (SOC-OR-001)

payload:       c3903a534f430102010100112233445566778899aabbccddeeff01000000
scriptPubKey:  6a1ec3903a534f430102010100112233445566778899aabbccddeeff01000000

6a = OP_RETURN. 1e = 30-byte push. Round-trip with:

node reference/dsocial.mjs parse c3903a534f430102010100112233445566778899aabbccddeeff01000000

Public APIs (chain truth)

GET https://dogex.command.dog/api/social/feed
GET https://dogex.command.dog/api/social/post/:id
GET https://dogex.command.dog/api/social/post/:id/engages
GET https://dogex.command.dog/api/social/user/:address/posts
GET https://dogex.command.dog/api/social/user/:address/timeline
GET https://dogex.command.dog/api/social/user/:address/following
GET https://dogex.command.dog/api/social/user/:address/followers

Routes may still be landing; treat empty as “not indexed yet,” not a second protocol. Generic fallback: GET /api/doginals/protocol/Ð:SOC.

Product UI: dogenals.com feed. Media posts: doge.cam. Notifications only: command.dog — not a like ledger.

Copy-paste encode (Node, no deps)

import { encodeDsocialSignal, scriptPubKey } from './reference/dsocial.mjs';

const payload = encodeDsocialSignal({
  kind: 'engage',
  flags: 0x01,
  reaction: 'like',
  targetHash16: '00112233445566778899aabbccddeeff',
  nonce: 1,
});
// 30 bytes — put this in OP_RETURN, plus a DOGE output to the post pay_to

Full wallet steps: WALLET.md. Production encoder: @dojak/core dsocial.ts.

What you must not do

  • Do not put tip amount in the 30-byte signal. Amount is UTXO to pay_to.
  • Do not dual-emit Ð:P / ÐEcho / Doge Signals for the same click.
  • Do not treat encrypted DMs as Ðocial. That is Ðignal.
  • Do not invent a second “like” inscription op. Engage is the signal.
  • Do not use Bitcoin tapscript OP_FALSE OP_IF … OP_ENDIF in Dogecoin scriptSig. Posts use P2SH commit → reveal.

Repo layout

spec.md                      normative protocol
SOCIAL_LAYER.md              north star (public vs Ðignal)
WALLET.md                    wallets / dApps
AGENTS.md                    briefing for coding agents
INTEGRATION.md               dogex / command.dog / product sketch
COMPARISON.md                vs Pulse / Echo / Nostr
reference/dsocial.mjs        encode + parse (MIT, zero deps)
vectors/op-return-vectors.json  SOC-OR hex vectors
vectors/conformance.json     JSON schema vectors
schemas/                     post / signal / engage JSON Schema
examples/                    valid JSON bodies

Status

Launch draft v1.1. The 30-byte layout and UTXO tip rule here are what wallets and dogex should implement. No dual-stack “free likes first.”

About

Ðocial — canonical spec for Dogecoin public Social OS (posts, engage+tip, follows).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages