Pipoke
Feed

Posting

A Pipoke post is a signed transaction to a feed shard. The text, the attachment URI, the epoch, the kind, and the author all sit in the post record.

Pipoke runs on Octra Devnet today. Any fee, price, or limit referred to here is a contract setting chosen for testing. Every one is owner-settable, and mainnet values will be different. These docs describe how the mechanics work, not what the numbers are.

#Post kinds

A post record carries a kind field with three values.

Kind What it means
post A top-level post. parent_id is zero.
reply Threaded under a parent. parent_id is the parent's global ID.
repost Re-shares a parent. parent_id is the parent. The text field carries the optional quote.

#The method surface

Method Signature Effect
post post(text, attachment, principal) Top-level post.
reply reply(parent_id, text, attachment, principal) Reply under a parent.
repost repost(parent_id, quote, principal) Quote-repost.
like like(post_id, principal) One like per post per wallet.
unlike unlike(post_id, principal) Free, no fee.
post_with_privacy post_with_privacy(text, attachment, privacy_tier, community_id, scheduled_until_epoch, principal) Post with privacy + optional schedule + optional community scope.
mark_decoy mark_decoy(post_id, principal) Mark your own post as decoy traffic. Indexer hides it from your feed.
edit_post edit_post(post_id, new_text, new_attachment, principal) Edit your own post. Writes a new revision.
delete_post delete_post(post_id, principal) Tombstone your own post.

#The post record

Each post is stored with:

Field What it is
post_id Global ID. Encodes the shard in the upper bits (see architecture).
author Your wallet.
text The post text.
attachment An oct:// URI, an HTTPS URL, or empty.
epoch The Octra epoch at write time.
kind post, reply, or repost.
parent_id Parent post ID for replies and reposts. Zero for top-level posts.
privacy_tier Public / followers-only / mutuals-only / close-friends-only.
community_id Non-zero if the post was scoped to a community.

#Character limits

Tier Posts Bio
Free 7,000 280
Premium 25,000 280
Premium+ 150,000 1,000

These are app-enforced limits, not contract-enforced. The feed shard accepts a post of any length. The caps stay in the app so they can move without a contract change.

#Attachments

A post carries at most one attachment. The attachment field is a string. Pipoke uses it three ways:

Attachment type What goes in the field
Image / GIF oct:// URI of an encrypted blob in your Circle.
Video oct:// URI of an encrypted MP4 manifest in your Circle.
Voice note oct:// URI of an encrypted audio blob in your Circle.
Link An HTTPS URL.

For voice notes, videos, images, and GIFs, the bytes themselves live in your Octra Circle as encrypted blobs, capped at about 4 MB per attachment. The chain holds the URI, not the plaintext. See Octra Circles and voice notes and video.

A post cannot carry both an image and a voice note at the same time.

#Posting privacy

When you post, you choose a privacy tier:

Tier Visible to
Public Anyone reading the chain.
Followers Your followers only. The attachment key is sealed per follower.
Mutuals Followers who also follow you back. Sealed per mutual.
Close friends Members of your close-friends set. Sealed per close friend.

See follower-only and mutuals for the sealed-key protocol.

#Action fees

A post charges a small POKE fee. The fee is pulled by PipokeFeeCollector from your POKE balance through the OCS-01 pull method. The fee splits 50% burn, 40% engagement vault, 10% treasury. See the POKE token.

#Posting without a wallet prompt

By default every post triggers a wallet popup. With a session key active, posts go through silently. The session key signs on your behalf and the contract accepts the signature because the session registry says it is scoped to call this feed shard.

#See also