SOCIAL_*
Social graph + signed posts + DMs + reward-driven likes. Always active (no fork required).
Identity
SOCIAL_PROFILE_SET
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_PROFILE_SET" | — |
from | string | Profile owner |
displayName | string | ≤ 64 chars |
bio | string | ≤ 280 chars |
avatarBlobId? | string | Reference to SOCIAL_BLOB |
SOCIAL_FOLLOW_SET
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_FOLLOW_SET" | — |
targetAddress | string | Address to follow/unfollow |
enabled | boolean | true = follow, false = unfollow |
Posts
SOCIAL_POST_CREATE
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_POST_CREATE" | — |
postId | string | Caller-generated unique ID |
body | string | Inline text ≤ 16 KB |
blobIds | array<string> | Attached media (images/audio) |
parentPostId? | string | If reply, the parent post id |
SOCIAL_REACTION_SET
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_REACTION_SET" | — |
targetPostId | string | Post being reacted to |
reaction | string | "like" (currently the only supported reaction) |
enabled | boolean | toggle on/off |
DMs
SOCIAL_DM_SEND
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_DM_SEND" | — |
dmId | string | Unique ID |
recipient | string | Receiver address |
ciphertext | string | Encrypted body (base64) |
nonceHex | string | NaCl box nonce (24 bytes hex) |
ephemeralPubKey | string | Sender ephemeral pub key (32 bytes hex) |
contentHash | string | sha256(plaintext) — for off-chain integrity |
blobIds | array<string> | Attached blobs |
DMs are end-to-end encrypted using NaCl box (Curve25519 ECDH + XSalsa20-Poly1305).
Blob storage
SOCIAL_BLOB_INIT
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_BLOB_INIT" | — |
blobId | string | Unique ID (often sha256 of full payload) |
contentType | string | MIME type |
totalBytes | number | — |
totalChunks | number | Count of upcoming SOCIAL_BLOB_CHUNK txs |
contentHash | string | sha256 of full payload (verified at FINALIZE) |
SOCIAL_BLOB_CHUNK
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_BLOB_CHUNK" | — |
blobId | string | — |
chunkIndex | number | 0-based |
chunkDataBase64 | string | ≤ 400_000 bytes after base64 decode |
SOCIAL_BLOB_FINALIZE
| Field | Type | Notes |
|---|---|---|
type | "SOCIAL_BLOB_FINALIZE" | — |
blobId | string | — |
Effect: assembles all chunks, verifies sha256, marks blob as available for reference by other txs (IMAGE_MINT, AUDIO_MINT, DM attachments).
Like rewards (Fork-gated)
SOCIAL_SUBSCRIBE_SET
User declares willingness to fund likes for an author up to a daily budget.
| Field | Type | Notes |
|---|---|---|
targetAddress | string | Author |
dailyTokenBudget | string (bigint) | Micro-OMBRA spend cap per day |
SOCIAL_LIKE_INTENT
User declares intent to "like" a post, escrowing budget.
| Field | Type | Notes |
|---|---|---|
intentId | string | Unique |
postId | string | Target post |
maxTokensPerLike | string (bigint) | Capped at SOCIAL_MAX_TOKENS_PER_LIKE = 10_000 micro |
expiresAt | number | Unix ms, ≤ now + SOCIAL_LIKE_EXPIRY_MS (24h) |
SOCIAL_LIKE_MINE
A miner claims an open intent and mines the like (proof of effort).
| Field | Type | Notes |
|---|---|---|
intentId | string | — |
minerId | string | — |
proof | string | Miner-provided proof of inference effort |
Effect: transfers maxTokensPerLike from intent escrow to miner; intent marked claimed.
SOCIAL_LIKE_EXPIRE
Anyone can submit this after intent.expiresAt to refund escrow to the user.
| Field | Type | Notes |
|---|---|---|
intentId | string | — |
Caps
SOCIAL_MAX_TOKENS_PER_LIKE = 10_000 // per intent
SOCIAL_MAX_DAILY_TOKENS = 10_000_000 // 10 OMBRA per user per day
SOCIAL_LIKE_QUEUE_CAP_PER_AUTHOR = 10_000 // pending intents per author
SOCIAL_LIKE_EXPIRY_MS = 86_400_000 // 24h
Builders
buildSocialProfileSetTx, buildSocialFollowSetTx,
buildSocialPostCreateTx, buildSocialReactionSetTx,
buildSocialDmSendTx,
buildSocialBlobInitTx, buildSocialBlobChunkTx, buildSocialBlobFinalizeTx,
buildSocialSubscribeSetTx,
buildSocialLikeIntentTx, buildSocialLikeMineTx, buildSocialLikeExpireTx