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.