pages / example / grid_storage
canister coord://offchain/genie/program/grid_storage@v1/edaccad644bef4d7 · v1 · artifact root 0xedaccad644bef4d7399ff15e72307130648e1c0c7f13ba4ab3a9ab5e6dfd1756 · previous none (first version) · superroot at publish not sealed yet · follows taifoon_coord
sealed cases that reached it: 0 — sealed cases that reached this word (the store counts, never reads)
grid storage (a .genie program) in the studio: 11 symptoms, 9 fixes
// _GRID_STORAGE_v1_ (owner 2026-10-29: "those 4x prepare for all of them … store under Storj and wire access to the RPC"). Storage as one // program of the GRID: a box brings committed bytes through the one door (POST /v1/grid/join kind storage: the layer issues a seed, the // node derives the chunks, builds the Merkle tree and posts the root), is challenged on random chunks for as long as it is listed (holding // the data is the only way to answer), heartbeats the bytes it offers, and earns GRID per passing challenge today. The buyer-facing object // store of the same box is a Storj bucket behind the self-hosted S3 gateway (grid/miner profile storage), reached through the box's one // front at /storage/ next to its RPC door: a metered object read or write through that front is the sale, metered on taifoon.storage, // priced by the broker from the matched storage markets (_STORAGE_RESALE_v1_, storage-resale.cue: the backing tier plus the ONE cut, the // cheapest S3 market as the anchor; the owner prices nothing). Nothing here pays, signs or moves value: the provider // leg of what a buyer paid accrues to the box owner's claim and is paid by proof from the ONE vault's distributor (seller_claims.genie). genie grid_storage v1 about "GRID storage: a box commits bytes by Merkle root, is challenged for as long as it is listed, heartbeats what it offers, serves metered object reads and writes through its one front over a Storj bucket, and its leg is paid by claim" use venue x402-base use chain eip155:8453 use vault vault:taifoon:kms use product taifoon.storage sma.case use protocol taifoon_coord use guard owner-arm sign-owner-go idempotent-payouts sign-seller-payout day-cap recipient-filter agent node is "one storage box: brought, committed, challenged, listed, heartbeating its bytes, serving metered objects through its front, its leg accrued and paid by claim" states brought committed probed listed challenged failed_challenge credited served metered accrued claimed recorded no_owner no_root start brought final recorded no_owner no_root failed no_owner no_root read GET /v1/grid/join as door read GET /v1/grid/economics as economics read GET /v1/grid/wanted as wanted move brought -> no_owner when node.owner == null move brought -> committed when commit.root != null hop offer_in op POST /v1/grid/join effect record move brought -> no_root move committed -> probed when challenge.ok == true hop classify effect record move committed -> no_root move probed -> listed hop listed effect record move listed -> challenged hop delivered effect record move challenged -> failed_challenge when challenge.ok != true move failed_challenge -> challenged when challenge.ok == true move challenged -> credited when heartbeat.bytes > 0 hop graded op POST /v1/grid/heartbeat effect record move credited -> served when order.paid == true hop hired venue x402-base effect record move served -> metered meter taifoon.storage hop legs effect record move metered -> accrued hop accrued effect record move accrued -> claimed guard sign-seller-payout idempotent-payouts day-cap recipient-filter via vault:taifoon:kms on eip155:8453 cap 5000000 USDC meter taifoon.storage hop paid effect record move claimed -> recorded hop recorded op POST /v1/pipe/send effect record refuse no_owner "a box without an owner wallet is not listed; the owner is who the leg accrues to" refuse no_root "a box that posted no Merkle root, or whose first challenge failed, is not listed: derive the chunks from the seed and post the root" refuse own_price "a box never names a price; the catalogue prices storage, the broker prices the work" say brought "The box is on the table: its owner, its https endpoint, the bytes it offers" say committed "Committed: the seed was issued, the chunks derived, the Merkle root posted" say probed "Probed: the first random-chunk challenge answered with a valid path" say listed "Listed on the catalogue; GRID per passing challenge from now" say challenged "Challenged on random chunks for as long as it is listed; holding the data is the only way to answer" say failed_challenge "A challenge failed: no GRID for this pass; the next passing challenge restores the box" say credited "Heartbeating: the bytes it offers are its credit; the box is attributed its capacity for the day" say served "A buyer paid on its venue for an object read or write through the box's front" say metered "Metered on the buyer's line, served_by this box" say accrued "Accrued to the box owner's claim" say claimed "Claimed by proof from the ONE vault, inside its caps" say recorded "Recorded: the commit, the challenges, the objects served, the envelopes on the pipe" say no_owner "Refused: no owner wallet" say no_root "Refused: no root, or the first challenge failed" next brought committed "Run the one command; the node derives the blob from the seed and posts the root itself" next listed challenged "Keep the data: a challenge arrives at random; a missed one earns nothing" next credited served "Put the Storj gateway behind your front at /storage/; the catalogue lists the door" agent auditor is "the genie auditor: this program reviewed as a case by an agent with a key, graded by the four questions, armed on the owner's go" states asked read answered graded armed rejected start asked final armed rejected failed rejected move asked -> read when input.program != "" hop classify move read -> answered hop delivered asks spec_met unsupported_claim ending cheat_shaped assure 0.7 meter sma.case move answered -> graded hop graded move graded -> armed when grade.assured == true guard sign-owner-go owner-arm hop recorded effect record move graded -> rejected refuse not_assured "the review did not stand; the storage lane stays unarmed and the refusal names the question that failed" say asked "The program is on the table: its text, its IR, its delta" say answered "Your own agent answered the four questions" say graded "Graded and sealed as a case" say armed "Armed: the owner's go after a standing review" say rejected "Rejected: the review did not stand" agreement storage_share parties contributor buyer layer hops offer_in classify listed hired delivered graded settled legs accrued split paid recorded leg our_fee 20% over leg seller_share rest settle via vault:taifoon:kms meter taifoon.storage protocol taifoon_coord venue x402-base term "one object served, one settlement, no standing balance: the buyer pays on its venue, the box owner's leg accrues to its claim, the layer's fee is the one margin" term "a box never names a price; GRID per passing challenge is the bootstrap, never the payout" term "every payee is paid by claim from the ONE vault's distributor inside its caps; no person per payout" vault vault:taifoon:kms grid taifoon.storage per_call 1 per_day 1000000 grid sma.case per_call 1 cap USDC eip155:8453 per_tx 5000000 per_day 20000000 knowledge symptom "the node committed but earns nothing" caused_by "the first challenge failed: the chunks were not derived from the seed the door issued, or the path does not match the root" fixed_by "derive every chunk from the seed as the door states, hash the tree the same way, post that root" fix "derive every chunk from the seed as the door states, hash the tree the same way, post that root" opens listed symptom "the box proves fewer bytes than its env says" caused_by "the commitment lives in the node's volume, not in the env: a bigger TAIFOON_STORAGE_MB does not grow a commitment already made" fixed_by "start a fresh volume at the size you want (a new commitment), or wait for a node release that re-commits" fix "start a fresh volume at the size you want (a new commitment), or wait for a node release that re-commits" opens listed symptom "no buyer ever pays the storage box" caused_by "the front writes no meter line yet and the catalogue lists no storage door, though the broker has priced storage from the matched markets" fixed_by "write the storage meter line per GB-month and GB served and list the /storage/ door at the broker's price" fix "write the storage meter line per GB-month and GB served and list the /storage/ door at the broker's price" opens hired rule "the storage price is the broker's: the backing tier plus the ONE cut, anchored on the cheapest S3 market; never typed by the owner" rule "the proof is the challenge: committed bytes count only while random-chunk challenges pass; a self-reported size counts for nothing" rule "buyers reach a Storj bucket behind the box's own S3 gateway at /storage/ on the same front as its RPC door" rule "the commitment stays on the node; the bucket is the store buyers read and write" rule "the layer's own storage boxes join through the same door and are challenged the same way; their leg is retained, never paid out" policy "the ONE vault releases inside its caps per transfer and per UTC day until the owner raises them" door "Bring storage to the GRID" as node takes owner: string endpoint: string storage_mb?: int product taifoon.api step brought "Name the box: your wallet, its https endpoint, the MB it offers" next committed step committed "The door issues a seed; your node derives the blob and posts the Merkle root" next probed step probed "The first random-chunk challenge" next listed opens listed step listed "Listed; GRID per passing challenge" next challenged step challenged "Challenged at random for as long as you are listed" next credited step failed_challenge "A missed challenge: nothing this pass; answer the next" next challenged step credited "Heartbeat the bytes you offer; your capacity is attributed to you for the day" next served step served "A buyer paid for an object through your front's /storage/ door (the Storj gateway)" next metered step metered "Metered on the buyer's line, served_by your box" next accrued step accrued "Accrued to your claim" next claimed step claimed "Claimed by proof from the ONE vault" next recorded step recorded "Recorded: commit, challenges, objects, envelopes" handoff "Talk to Taifoon about your storage" booking https://taifoon.io meet https://taifoon.io room genie-grid-storage door "Review the storage program with the genie auditor" as auditor takes program: string product sma.case step asked "Paste the program or name it" next read step read "Its IR and its delta are on the table" next answered step answered "Your own agent answers the four questions" next graded step graded "Graded and sealed as a case" next armed opens armed step armed "The owner's go" handoff "A human reviewer" booking https://cal.com/taifoon meet https://meet.jit.si room genie-grid-storage-audit