Before the change described here, TR-2026-015 opened its list of limits with the one that mattered most: the handle is what the buyer told us, and GYOTAK does not verify that they own the account. The claim arrives over the buyer’s own authenticated connection, so the operator knows which customer is speaking; but that knowledge lives entirely off chain. A third party reading the ledger sees only that GYOTAK wrote “purchase P is claimed by @handle,” and has to take the operator’s word for the step that produced it.
There is a second dependency of exactly the same shape, and it is the one this report attacks. The reward loop that makes the whole design worth building does not run on handles; it runs on referral URLs. A buyer posts about the fish they ate and includes their referral URL; a reader who orders through that URL makes the poster a referrer. Nothing published on chain connects the referral URL in the post to the purchase the post is about. A reader can verify that someone bought lot X, and can see an account claiming it, but cannot verify that the URL collecting the reward belongs to that buyer rather than to whoever copied the post.
Both gaps have the same structure: the operator holds a fact, acts on it correctly, and publishes only the result. That is exactly the arrangement TR-2026-015 § 1 argued against in the case of “verified purchase” badges. Applying our own argument to ourselves, the question becomes narrow and technical: is there a value already in the buyer’s hands that GYOTAK cannot forge on their behalf, and that a reader can compare against a post without any cooperation from us?
There is. The referral id is issued by the operator, not by the buyer, and it exists in exactly one place a buyer can reach: the personal token URL they were given after their payment was confirmed. It is also, by design, the value the buyer publishes. The rest of this report describes what follows from stamping it into the claim, what that still fails to prove, and which parts of the surrounding loop are running today rather than planned.
ここで述べる変更の前、TR-2026-015 は限界の一覧を最も重要なものから始めていた — handle は買主が申告したものであり、GYOTAK はそのアカウントの所有を検証していない。請求は買主自身の認証された接続を通って届くので、運用者はどの顧客が語っているかを知っている。しかしその知識はすべてチェーンの外にある。台帳を読む第三者に見えるのは、GYOTAK が「購入 P は @handle が名乗った」と書いた事実だけであり、それを生んだ手順については運用者の言葉を信じるほかない。
まったく同じ形の依存がもう一つある。本報告が狙うのはそちらである。この設計全体を作るに値するものにしている報酬の循環は、handle の上を走っていない。紹介 URL の上を走っている。買主が食べた魚について投稿し、自分の紹介 URL を載せる。その URL から注文した読み手が、投稿者を紹介者にする。ところが、投稿中の紹介 URL と、その投稿が語っている購入とを結ぶものは、チェーン上に何も公開されていない。読み手は「誰かがロット X を買った」ことを検証でき、それを名乗るアカウントを見ることもできるが、報酬を受け取る URL がその買主のものなのか、投稿を複製した誰かのものなのかは検証できない。
二つの穴は同じ構造を持つ。運用者が事実を握り、正しく処理し、結果だけを公開する。それはまさに、TR-2026-015 § 1 が「購入済み」バッジについて批判した構図である。自分たちの議論を自分たちに適用すると、問いは狭く技術的になる。買主の手元に既にあって、GYOTAK が代わりに偽造できず、かつ読み手が我々の協力なしに投稿と突き合わせられる値はあるか。
ある。紹介 ID は買主ではなく運用者が発行し、買主が到達できる場所はただ一つ — 入金確認後に渡された個人トークン URL の中である。そしてそれは、設計上、買主が公開する値でもある。以下では、それを名乗りに刻むと何が言えるようになるか、それでも何が言えないか、そして周囲の循環のどの部分が計画ではなく今日動いているかを述べる。
ก่อนการเปลี่ยนแปลงที่อธิบายในรายงานนี้ TR-2026-015 เริ่มรายการข้อจำกัดด้วยข้อที่สำคัญที่สุด คือ handle เป็นสิ่งที่ผู้ซื้อบอกเรา และ GYOTAK ไม่ได้ตรวจสอบว่าเขาเป็นเจ้าของบัญชีนั้น การอ้างสิทธิ์มาถึงผ่านการเชื่อมต่อที่ยืนยันตัวตนของผู้ซื้อเอง ผู้ดำเนินการจึงรู้ว่าลูกค้าคนใดกำลังพูด แต่ความรู้นั้นอยู่นอกเชนทั้งหมด บุคคลที่สามที่อ่านบัญชีแยกประเภทเห็นเพียงว่า GYOTAK เขียนว่า “การซื้อ P ถูกอ้างสิทธิ์โดย @handle” และต้องเชื่อคำของผู้ดำเนินการเกี่ยวกับขั้นตอนที่ทำให้เกิดบันทึกนั้น
ยังมีการพึ่งพาอีกข้อหนึ่งที่มีรูปแบบเดียวกันทุกประการ และนั่นคือสิ่งที่รายงานนี้มุ่งแก้ วงจรรางวัลที่ทำให้การออกแบบทั้งหมดนี้คุ้มค่าแก่การสร้างไม่ได้ทำงานบน handle แต่ทำงานบน URL แนะนำ ผู้ซื้อโพสต์เรื่องปลาที่ตนกินและใส่ URL แนะนำของตนไว้ ผู้อ่านที่สั่งซื้อผ่าน URL นั้นทำให้ผู้โพสต์กลายเป็นผู้แนะนำ แต่ไม่มีสิ่งใดบนเชนที่เชื่อม URL แนะนำในโพสต์เข้ากับการซื้อที่โพสต์นั้นกล่าวถึง ผู้อ่านตรวจสอบได้ว่ามีใครบางคนซื้อล็อต X และเห็นบัญชีที่อ้างสิทธิ์ แต่ตรวจสอบไม่ได้ว่า URL ที่รับรางวัลเป็นของผู้ซื้อคนนั้น หรือเป็นของใครก็ตามที่คัดลอกโพสต์ไป
ช่องว่างทั้งสองมีโครงสร้างเดียวกัน ผู้ดำเนินการถือข้อเท็จจริงไว้ ดำเนินการอย่างถูกต้อง และเผยแพร่เพียงผลลัพธ์ นั่นคือรูปแบบที่ TR-2026-015 § 1 โต้แย้งไว้ในกรณีของป้าย “ยืนยันการซื้อแล้ว” เมื่อนำข้อโต้แย้งของเราเองมาใช้กับตัวเราเอง คำถามจึงแคบลงและเป็นเชิงเทคนิค มีค่าใดที่อยู่ในมือผู้ซื้ออยู่แล้ว ที่ GYOTAK ปลอมแทนเขาไม่ได้ และผู้อ่านเทียบกับโพสต์ได้โดยไม่ต้องอาศัยความร่วมมือจากเราหรือไม่
มี รหัสแนะนำออกโดยผู้ดำเนินการ ไม่ใช่โดยผู้ซื้อ และอยู่ในที่เดียวที่ผู้ซื้อเข้าถึงได้ คือ URL โทเคนส่วนตัวที่ได้รับหลังการยืนยันการชำระเงิน อีกทั้งโดยการออกแบบ มันคือค่าที่ผู้ซื้อจะเผยแพร่เอง ส่วนที่เหลือของรายงานนี้อธิบายว่าการบันทึกค่านี้ลงในการอ้างสิทธิ์ทำให้พูดอะไรได้ สิ่งใดที่ยังพูดไม่ได้ และส่วนใดของวงจรโดยรอบที่ทำงานอยู่แล้วในวันนี้แทนที่จะเป็นเพียงแผน
The v2 binding carried four values: purchaseId, handle, boundAt and schema. The v3 binding adds one more, in plaintext — and drops purchaseId, which duplicated the map key:
v2 XBinding purchaseId handle boundAt schema v3 XBinding handle boundAt schema referrerId
The referral id is an operator-issued token. It is not a name a buyer picks, and not a value a buyer can mint: it is generated by the operator from 16 random bytes and written into exactly one place a customer ever sees — the personal connector URL they receive once their first payment is confirmed. The claim already reaches us over that connection, and the operator already records which referral id was present when the claim was made.
With the id on chain, the check a reader performs becomes local and complete. They have a post in front of them; the post carries a referral URL ending in some id R, and names a lot. They read the chain: purchase P is recorded for that lot, and the binding for P says handle = @h, referrerId = R. What follows does not depend on GYOTAK’s honesty at the moment of reading: the account claiming this purchase claimed it from a connection holding R, and R is the id that will earn on any order placed through this post. The referral URL and the purchase are welded together in public, by a record neither the poster nor a copier can produce after the fact.
That is worth stating precisely, because it is easy to overclaim. This does not prove that the account is the buyer. It proves that whoever made the claim held the buyer’s personal connector URL, and it makes the reward destination part of the same immutable record as the claim. A copier who lifts the post and swaps in their own referral URL now produces a post that fails a check any reader can run.
The handle in v2 is stored in plaintext for a reason TR-2026-015 § 2.3 gives: a reader who sees the post already knows it, so publishing it lets them compare directly instead of computing a digest. The referral id is the same case, only stronger — publishing it is its entire purpose. The buyer puts it in the post themselves; it is printed in their own profile if they choose; it travels through every link a reader clicks. Hashing it would hide nothing that is not already public, and would cost the one property that makes the check usable by an ordinary assistant: a string comparison, with no crypto library and no opening value.
The cost is the same as for the handle: the set of referral ids that have claimed a GYOTAK purchase becomes publicly enumerable. That, again, is the point. These are the ids of people who chose to speak, and who are asking readers to trust their account of a meal. The buyers who stay silent have no binding at all, and their purchases name no one.
The past is not rewritten. Three bindings were stamped with the v2 circuit before v3 existed — two on Preprod, one on Mainnet. They have no referrerId field, and the operator does not add one to its own copy of them afterwards: back-filling a value that was never stamped would make the operator’s record and the chain disagree, and the only thing the chain guarantees is that GYOTAK recorded a thing and has not changed it since. The absence of a referral id is therefore meaningful in its own right — it says “stamped under v2, or no referral id existed” — and it is kept as an absence rather than filled with a blank value, which would erase the difference between “no referrer” and “not captured.” The same rule governs the v2 contract itself: it remains deployed, holding what it holds, and nothing further is written to it.
The value is fixed; its meaning is not. A referral id, once issued, never changes. Whether it is still active does change: an operator can suspend a referrer, after which the customer’s next confirmed payment issues a different id. A stamped id is therefore a fact about the moment of the claim, not an instruction about where to send money. Rewards are computed from the operator’s own records; nothing should ever be paid out by reading an id off the chain. We state this here because the record invites exactly that mistake.
v2 の binding は4つの値を持っていた。purchaseId・handle・boundAt・schema である。v3 の binding はこれに1つを平文で足し、マップのキーと重複していた purchaseId を落とした。
v2 XBinding purchaseId handle boundAt schema v3 XBinding handle boundAt schema referrerId
紹介 ID は運用者が発行するトークンである。買主が選ぶ名前ではないし、買主が自分で作れる値でもない。16 バイトの乱数から運用者が生成し、顧客の目に触れる場所はただ一つ — 最初の入金が確認されたときに渡される個人コネクタ URL の中だけである。請求はもともとその接続を通って届いており、請求の時点でどの紹介 ID があったかは運用者側に既に記録されている。
ID がチェーンに載ると、読み手の確認は手元で完結する。目の前に投稿がある。投稿には末尾が R の紹介 URL が載っており、ロットの名前がある。チェーンを読む。そのロットについて購入 P が記録され、P の binding が handle = @h・referrerId = R と言っている。ここから導かれることは、読んだ時点の GYOTAK の誠実さに依存しない。この購入を名乗ったアカウントは R を持つ接続から名乗った。そして R は、この投稿から出た注文で報酬を得る ID である。紹介 URL と購入が、後から作れない記録によって、公開の場で溶接される。
ここは正確に言う必要がある。過大に言いやすい場所だからである。これはアカウントが買主であることを証明しない。証明するのは、名乗った者が買主の個人コネクタ URL を持っていたことと、報酬の宛先が名乗りと同じ不変の記録の一部になったことである。投稿を丸ごと写して紹介 URL だけ自分のものに差し替えた者は、どの読み手でも実行できる確認に落ちる投稿を作ることになる。
v2 で handle を平文にしたのは、TR-2026-015 § 2.3 が述べる理由による。投稿を見た読み手はもう handle を知っているので、そのまま載せれば、ダイジェストを計算せずに直接比較できる。紹介 ID も同じ、というよりもっと強い場合である。公開することがその値の存在理由そのものだからだ。買主が自分で投稿に入れる。望めば自分のプロフィールにも掲げる。読み手がクリックするすべてのリンクの中を通る。ハッシュ化しても、既に公開されているもの以上は何も隠せず、確認を普通のアシスタントにも可能にしている唯一の性質 — 暗号ライブラリも開封値も要らない文字列比較 — を失うだけである。
代償は handle と同じで、GYOTAK の購入を名乗った紹介 ID の集合が公開で列挙可能になる。それもまた狙いどおりである。これらは語ることを選んだ人の ID であり、自分の食事の記述を信じてほしいと読み手に求めている側の ID である。沈黙を選んだ買主には binding が無く、その購入は誰の名前も持たない。
過去は書き換えない。 v3 ができる前に、v2 の回路で3件の binding が刻まれた。Preprod に2件、Mainnet に1件である。そこには referrerId の欄が無く、運用者側の控えにも後からその値を足さない。刻まれていない値を後から埋めれば、運用者の記録とチェーンが食い違う。チェーンが保証するのは「GYOTAK がこう記録し、以後変えていない」ことだけだからである。したがって紹介 ID が「無い」こと自体が意味を持つ —「v2 で刻まれた世代、または紹介 ID が存在しなかった」 — ので、空の値で埋めず、無いままにしておく。埋めれば「紹介者なし」と「未取得」が同じ見た目になる。同じ規則は v2 契約そのものにも及ぶ。契約はデプロイされたまま、持っているものを持ち続け、以後そこには何も書かない。
値は不変だが、意味は変わる。 紹介 ID はいったん発行されれば変わらない。しかし有効かどうかは変わる。運用者は紹介者を停止でき、その後にその顧客の入金が確認されると別の ID が発行される。刻まれた ID は請求の時点の事実であって、送金先の指示ではない。報酬は運用者自身の記録から計算するものであり、チェーンから ID を読んで支払ってはいけない。この記録はまさにその誤りを誘うので、ここに書いておく。
binding v2 มีสี่ค่า คือ purchaseId handle boundAt และ schema ส่วน binding v3 เพิ่มอีกหนึ่งค่าแบบข้อความธรรมดา และตัด purchaseId ออก เพราะซ้ำกับคีย์ของแมป
v2 XBinding purchaseId handle boundAt schema v3 XBinding handle boundAt schema referrerId
รหัสแนะนำเป็นโทเคนที่ผู้ดำเนินการออกให้ ไม่ใช่ชื่อที่ผู้ซื้อเลือกเอง และไม่ใช่ค่าที่ผู้ซื้อสร้างขึ้นเองได้ ผู้ดำเนินการสร้างจากค่าสุ่ม 16 ไบต์ และเขียนไว้ในที่เดียวที่ลูกค้าจะได้เห็น คือ URL คอนเนกเตอร์ส่วนตัวที่ได้รับเมื่อการชำระเงินครั้งแรกได้รับการยืนยัน การอ้างสิทธิ์เดินทางมาถึงเราผ่านการเชื่อมต่อนั้นอยู่แล้ว และฝั่งผู้ดำเนินการก็บันทึกไว้แล้วว่ามีรหัสแนะนำใดอยู่ ณ เวลาที่อ้างสิทธิ์
เมื่อรหัสอยู่บนเชน การตรวจสอบของผู้อ่านจะจบได้ในมือตนเอง ผู้อ่านมีโพสต์อยู่ตรงหน้า โพสต์มี URL แนะนำที่ลงท้ายด้วยรหัส R และระบุล็อตหนึ่ง เมื่ออ่านเชนจะพบว่าการซื้อ P ถูกบันทึกไว้สำหรับล็อตนั้น และ binding ของ P ระบุ handle = @h และ referrerId = R ข้อสรุปที่ตามมาไม่ขึ้นกับความซื่อสัตย์ของ GYOTAK ณ เวลาที่อ่าน บัญชีที่อ้างสิทธิ์การซื้อนี้อ้างสิทธิ์จากการเชื่อมต่อที่ถือ R และ R คือรหัสที่จะได้รับรางวัลจากคำสั่งซื้อที่เกิดผ่านโพสต์นี้ URL แนะนำกับการซื้อจึงถูกเชื่อมติดกันในที่สาธารณะด้วยบันทึกที่ไม่มีใครสร้างย้อนหลังได้
เรื่องนี้ต้องพูดอย่างแม่นยำ เพราะเป็นจุดที่กล่าวเกินจริงได้ง่าย สิ่งนี้ไม่ได้พิสูจน์ว่าบัญชีนั้นคือผู้ซื้อ แต่พิสูจน์ว่าผู้ที่อ้างสิทธิ์ถือ URL คอนเนกเตอร์ส่วนตัวของผู้ซื้อ และทำให้ปลายทางของรางวัลกลายเป็นส่วนหนึ่งของบันทึกที่เปลี่ยนแปลงไม่ได้ชุดเดียวกับการอ้างสิทธิ์ ผู้ที่คัดลอกโพสต์แล้วเปลี่ยน URL แนะนำเป็นของตนเอง จะได้โพสต์ที่ไม่ผ่านการตรวจสอบซึ่งผู้อ่านคนใดก็ทำได้
v2 เก็บ handle เป็นข้อความธรรมดาด้วยเหตุผลที่ TR-2026-015 § 2.3 อธิบายไว้ ผู้อ่านที่เห็นโพสต์รู้ค่านั้นอยู่แล้ว การเผยแพร่ตรงๆ จึงให้เขาเทียบได้ทันทีโดยไม่ต้องคำนวณแฮช รหัสแนะนำเป็นกรณีเดียวกันแต่หนักแน่นกว่า เพราะการเผยแพร่คือเหตุผลของการมีอยู่ของค่านี้ ผู้ซื้อใส่ไว้ในโพสต์เอง แสดงในโปรไฟล์ของตนหากต้องการ และเดินทางผ่านทุกลิงก์ที่ผู้อ่านคลิก การแฮชจะไม่ซ่อนสิ่งใดที่ไม่ได้เป็นสาธารณะอยู่แล้ว และจะทำให้เสียคุณสมบัติเดียวที่ทำให้ผู้ช่วย AI ทั่วไปตรวจสอบได้ คือการเทียบสตริงโดยไม่ต้องใช้ไลบรารีเข้ารหัสและไม่ต้องมีค่าเปิด
ต้นทุนเหมือนกับกรณี handle คือชุดของรหัสแนะนำที่เคยอ้างสิทธิ์การซื้อกับ GYOTAK จะไล่เรียงได้อย่างสาธารณะ ซึ่งก็เป็นเจตนาเช่นกัน เพราะเหล่านี้คือรหัสของผู้ที่เลือกจะพูด และกำลังขอให้ผู้อ่านเชื่อคำบอกเล่าเรื่องมื้ออาหารของตน ส่วนผู้ซื้อที่เลือกเงียบไม่มี binding เลย และการซื้อของเขาไม่ระบุชื่อผู้ใด
ไม่เขียนอดีตใหม่ มี binding สามรายการที่ถูกบันทึกด้วยวงจร v2 ก่อนที่ v3 จะมีอยู่ สองรายการบน Preprod และหนึ่งรายการบน Mainnet ทั้งหมดไม่มีช่อง referrerId และผู้ดำเนินการก็ไม่เติมค่านี้ลงในสำเนาของตนภายหลัง การเติมค่าที่ไม่เคยถูกบันทึกลงไปย้อนหลังจะทำให้บันทึกของผู้ดำเนินการกับเชนไม่ตรงกัน เพราะสิ่งเดียวที่เชนรับประกันคือ GYOTAK บันทึกไว้เช่นนี้และไม่ได้เปลี่ยนอีกเลย ดังนั้นการที่ “ไม่มี” รหัสแนะนำจึงมีความหมายในตัวเอง คือ “บันทึกในยุค v2 หรือไม่มีรหัสแนะนำ” และจะคงสภาพไม่มีค่าไว้ แทนการเติมค่าว่าง ซึ่งจะลบความต่างระหว่าง “ไม่มีผู้แนะนำ” กับ “ไม่ได้เก็บค่า” กฎเดียวกันนี้ใช้กับตัวสัญญา v2 เองด้วย สัญญายังคง deploy อยู่ เก็บสิ่งที่มันเก็บไว้ และจะไม่มีการเขียนอะไรเพิ่มลงไปอีก
ค่าคงที่ แต่ความหมายเปลี่ยนได้ รหัสแนะนำเมื่อออกแล้วจะไม่เปลี่ยน แต่สถานะใช้งานอยู่เปลี่ยนได้ ผู้ดำเนินการระงับผู้แนะนำได้ และหลังจากนั้นการชำระเงินครั้งถัดไปของลูกค้ารายนั้นจะได้รหัสใหม่ รหัสที่บันทึกไว้จึงเป็นข้อเท็จจริง ณ เวลาที่อ้างสิทธิ์ ไม่ใช่คำสั่งว่าจะส่งเงินไปที่ใด รางวัลคำนวณจากบันทึกของผู้ดำเนินการเอง และต้องไม่จ่ายโดยอ่านรหัสจากเชน เราระบุไว้ตรงนี้เพราะบันทึกนี้ชวนให้เข้าใจผิดเช่นนั้นพอดี
A binding belongs to a purchase, not to a person. It is written in its own transaction, separate from the transaction that recorded the purchase, and the operator keeps at most one such record per purchase. A handle attached to one purchase does not carry over to the next. Claiming again means claiming a different purchase — and, as implemented today, a binding is written only when the buyer claims that particular purchase, so a repeat purchase is bound when its buyer asks, not automatically. § 7 sets that choice of trigger beside the alternative.
This is deliberate, and it is not an implementation detail. Two things follow from it.
A single purchase does not buy a permanent voice. If the binding were per customer, a person who bought once could keep publishing referral-bearing posts indefinitely, each backed by the same year-old purchase, and the record would say the same thing on the thousandth post as on the first. Binding per purchase means the record a poster can point to is as recent as their last actual purchase. Someone who wants to keep speaking with a record behind them has to keep being a customer.
Repeat purchase becomes visible. The reverse of the same property is more interesting. A sequence of bindings under one handle is a public record of buying the same thing again, and again. For a reader deciding whether to believe an account of a meal, that is closer to what they actually want to know than any single verified purchase: not “did this person buy it once” but “do they keep buying it.” No wording in a post can fake it, because each entry in the sequence required a payment the operator confirmed.
It would be simpler to put the handle in the purchase record and skip the second transaction. We do not, and the reason is the one the commitment exists for. If the purchase record named the account, then every purchase by that customer would be tied to that account the moment they spoke once. The buyer who tells no one would lose the protection retroactively, because the link would already be written into the record of the purchase itself.
The same reasoning rules out the convenience of a permanent customer-to-handle mapping on the operator’s side. Such a mapping would rebuild exactly the link the split was designed to prevent, only off chain instead of on it — and a commitment scheme whose privacy is undone by the operator’s own convenience is not a privacy scheme. The operator therefore looks up a returning buyer’s previous handle by walking their own bindings, and stores no direct mapping.
binding は人ではなく購入に属する。購入を記録したトランザクションとは別のトランザクションで書かれ、運用者が持つ記録も購入ごとに1つまでである。ある購入に付けた handle は次の購入には引き継がれない。もう一度名乗るとは、別の購入を名乗ることである。そして現在の実装では、binding はその購入を買主が請求したときにだけ書かれる。2回目以降の購入も、買主が請求した時点で結び付くのであって、自動的に結び付くのではない。この契機の選び方は § 7 でもう一方の方式と並べて述べる。
これは意図的であり、実装上の細部ではない。ここから2つのことが導かれる。
1回の購入は恒久的な発言権を買わない。 binding が顧客ごとだったら、一度買った人はその後いつまでも紹介 URL 入りの投稿を出し続けられ、そのすべてが同じ1年前の購入に支えられ、記録は1000本目の投稿に対しても1本目と同じことを言う。購入ごとにすることで、投稿者が指し示せる記録は、その人の直近の実際の購入と同じだけ新しくなる。記録を背負って語り続けたい人は、顧客であり続ける必要がある。
リピート購入が可視化される。 同じ性質の裏返しのほうが、むしろ面白い。1つの handle に連なる binding の列は、同じものを繰り返し買っているという公開の記録である。食事の記述を信じるかどうかを決めようとしている読み手にとって、それは単発の「購入済み」より知りたいことに近い。「この人は一度買ったか」ではなく「買い続けているか」である。投稿の文面でこれを偽装することはできない。列の各項目が、運用者の確認した入金を必要としているからである。
handle を購入の記録に入れて2本目のトランザクションを省くほうが簡単ではある。そうしないのは、コミットメントがそもそも存在する理由による。購入の記録がアカウントを名指ししていたら、その顧客が一度でも語った瞬間に、その顧客のすべての購入がそのアカウントに結び付く。誰にも言わなかった買主が、遡って保護を失う。結び付きが購入そのものの記録に既に書き込まれているからである。
同じ理屈で、運用者側に顧客→handle の恒久的な対応を持つ便利さも排除される。その対応は、分離が防ごうとしたまさにその結び付きを、チェーンの上ではなくチェーンの外に作り直す。運用者の都合でプライバシーが解けるコミットメント方式は、プライバシー方式ではない。したがって運用者は、再訪した買主の前回の handle を自分の binding をたどって引き、直接の対応表は持たない。
binding เป็นของการซื้อ ไม่ใช่ของบุคคล มันถูกเขียนในธุรกรรมของตัวเอง แยกจากธุรกรรมที่บันทึกการซื้อ และผู้ดำเนินการเก็บบันทึกเช่นนี้ได้ไม่เกินหนึ่งรายการต่อหนึ่งการซื้อ handle ที่ผูกกับการซื้อหนึ่งไม่ถูกยกไปใช้กับการซื้อถัดไป การอ้างสิทธิ์อีกครั้งหมายถึงการอ้างสิทธิ์การซื้อรายการอื่น และตามที่พัฒนาอยู่ในวันนี้ binding จะถูกเขียนเมื่อผู้ซื้ออ้างสิทธิ์การซื้อรายการนั้นเท่านั้น การซื้อซ้ำจึงผูกกับบัญชีเมื่อผู้ซื้อร้องขอ ไม่ใช่โดยอัตโนมัติ ทางเลือกของตัวกระตุ้นนี้อธิบายเทียบกับอีกแบบหนึ่งใน § 7
นี่เป็นเจตนา ไม่ใช่รายละเอียดของการพัฒนา และมีผลตามมาสองข้อ
การซื้อครั้งเดียวไม่ได้ซื้อสิทธิ์พูดถาวร หาก binding เป็นรายลูกค้า คนที่ซื้อครั้งเดียวจะโพสต์พร้อม URL แนะนำต่อไปได้ไม่จำกัด โดยทุกโพสต์อ้างอิงการซื้อเดิมเมื่อปีก่อน และบันทึกจะพูดกับโพสต์ที่หนึ่งพันเหมือนกับโพสต์แรก การผูกรายการซื้อทำให้บันทึกที่ผู้โพสต์ชี้ได้ใหม่เท่ากับการซื้อจริงครั้งล่าสุดของเขา ผู้ที่อยากพูดโดยมีบันทึกหนุนหลังจึงต้องเป็นลูกค้าต่อไป
การซื้อซ้ำถูกมองเห็น ด้านกลับของคุณสมบัติเดียวกันน่าสนใจกว่า ลำดับของ binding ภายใต้ handle เดียวคือบันทึกสาธารณะว่าซื้อสิ่งเดิมซ้ำแล้วซ้ำอีก สำหรับผู้อ่านที่กำลังตัดสินใจว่าจะเชื่อคำบอกเล่าเรื่องมื้ออาหารหรือไม่ นั่นใกล้เคียงกับสิ่งที่เขาอยากรู้จริงมากกว่าการยืนยันการซื้อครั้งเดียว ไม่ใช่ “คนนี้เคยซื้อไหม” แต่คือ “เขาซื้อต่อเนื่องหรือไม่” ไม่มีถ้อยคำใดในโพสต์ที่ปลอมสิ่งนี้ได้ เพราะแต่ละรายการในลำดับต้องมีการชำระเงินที่ผู้ดำเนินการยืนยันแล้ว
การใส่ handle ไว้ในบันทึกการซื้อและตัดธุรกรรมที่สองออกย่อมง่ายกว่า แต่เราไม่ทำ ด้วยเหตุผลเดียวกับการมีอยู่ของ commitment หากบันทึกการซื้อระบุบัญชี การซื้อทุกครั้งของลูกค้ารายนั้นจะผูกกับบัญชีทันทีที่เขาพูดสักครั้ง ผู้ซื้อที่ไม่เคยบอกใครจะเสียการคุ้มครองย้อนหลัง เพราะความเชื่อมโยงถูกเขียนไว้ในบันทึกของการซื้อเองแล้ว
ด้วยเหตุผลเดียวกัน ความสะดวกของการมีการจับคู่ถาวรระหว่างลูกค้ากับ handle ฝั่งผู้ดำเนินการก็ถูกตัดออก การจับคู่เช่นนั้นจะสร้างความเชื่อมโยงที่การแยกบันทึกตั้งใจป้องกันขึ้นมาใหม่ เพียงแต่อยู่นอกเชนแทนที่จะอยู่บนเชน และกลไก commitment ที่ความเป็นส่วนตัวถูกทำลายด้วยความสะดวกของผู้ดำเนินการเองย่อมไม่ใช่กลไกความเป็นส่วนตัว ผู้ดำเนินการจึงค้น handle เดิมของผู้ซื้อที่กลับมาโดยไล่จาก binding ของเขาเอง และไม่เก็บการจับคู่โดยตรง
The binding is one step in a cycle whose other steps are ordinary commerce. Written out, the cycle is short:
1. Order the customer orders in an AI chat (MCP) [implemented]
if they arrived through a referral URL, the referrer
is taken from the connection token, never from a
free-form argument
2. Payment confirmed; the operator issues this customer their [implemented]
own referral code automatically, without being asked
3. Proof a purchase commitment is issued once the shipped lot [implemented]
resolves to exactly one catch record (TR-2026-015)
4. Insert a printed card in the box carries the way back to [not implemented]
the chat and to the buyer's own referral URL
5. Post the buyer's own AI writes the post; GYOTAK returns [implemented]
facts and constraints, not text
6. Claim the buyer claims the purchase and gives a handle; [implemented]
the referral id present on that connection is
recorded with it, and stamped by the v3 circuit
7. Next order a reader orders through that URL, and step 1 records [implemented]
it as a referral. The cycle closes.
Step 2 is the part that gives the cycle its shape, and it is worth being precise about. The referral code is not applied for; it is issued at the moment a payment is confirmed, for chat orders placed by an identified customer. Nobody is admitted to the referral programme by audience size, follower count, or an application an operator approves. The only qualification is having bought something. A person who has not bought cannot refer, and a person who has bought is already a referrer whether or not they ever use it.
Step 5 is described in § 5.3; step 6 is what § 2 and § 3 are about. Step 4 is now the only step not in place, and the one piece of the cycle that is physical: a card in the box, in the customer’s language, that leads back to the chat. There is no code for it and there could not be; it is a printing and packing task, listed here because the cycle does not close without it.
One property of the whole arrangement deserves naming, because it is the reason for building it rather than buying advertising. In an ordinary affiliate programme the incentive flows to whoever can attract attention, and knowledge of the product is optional. Here the right to refer is issued by purchase, so the set of people who can earn is a subset of the people who have first-hand knowledge. That does not make what they write true — § 8 is explicit about this — but it means the budget reaches buyers rather than audiences.
binding は、他の段がごく普通の商取引である循環の、1つの段にすぎない。書き出せば短い。
1. 注文 顧客が AI チャット (MCP) で注文する [実装済み]
紹介 URL から来ていれば、紹介者は接続トークンから
採る。自由入力の引数からは採らない
2. 入金 確認される。運用者はこの顧客に、求められる前に [実装済み]
自分の紹介コードを自動で発行する
3. 証明 出荷ロットが水揚げ記録ちょうど1件に解決した時点で [実装済み]
購入コミットメントを発行する (TR-2026-015)
4. 同梱 箱に入れた案内紙が、チャットと、買主自身の紹介 URL [未実装]
への戻り道を運ぶ
5. 発信 買主自身の AI が投稿を書く。GYOTAK が返すのは [実装済み]
事実と制約であって、文章ではない
6. 請求 買主が購入を名乗り handle を渡す。その接続にあった [実装済み]
紹介 ID が一緒に記録され、v3 の回路が刻む
7. 次の注文 読み手がその URL から注文し、1 が紹介として記録する [実装済み]
循環が閉じる。
この循環の形を決めているのは 2 であり、正確に書く価値がある。紹介コードは申請するものではない。入金が確認された時点で、顧客を特定できるチャット注文について発行される。フォロワー数でも、影響力でも、運用者が承認する申請でもない。資格は「買ったこと」だけである。買っていない人は紹介できず、買った人は、使うかどうかにかかわらず既に紹介者である。
5 は § 5.3 で述べる。6 は § 2・§ 3 が扱っている当のものである。4 だけが残っており、そして唯一の物理的な段でもある。箱に入れた、顧客の言語の案内紙が、チャットへ戻す。コードは無い — そもそもコードにならない。印刷と梱包の作業である。それでもここに挙げるのは、これが無いと循環が閉じないからである。
全体の性質を一つ名指ししておく。広告を買うのではなくこれを作る理由がそこにあるからである。通常のアフィリエイトでは、誘因は注目を集められる者に流れ、製品の知識は任意である。ここでは紹介する権利が購入によって発行されるので、報酬を得られる人の集合は、一次情報を持つ人の部分集合になる。それで書かれた内容が真になるわけではない — § 8 でそれは明示する — が、予算が観客ではなく購入者に届く、ということではある。
binding เป็นเพียงขั้นหนึ่งในวงจรที่ขั้นอื่นๆ เป็นการค้าขายธรรมดา เมื่อเขียนออกมาก็สั้น
1. สั่งซื้อ ลูกค้าสั่งซื้อในแชต AI (MCP) [พัฒนาแล้ว]
หากมาจาก URL แนะนำ ผู้แนะนำจะถูกอ่านจากโทเคน
การเชื่อมต่อ ไม่ใช่จากค่าที่พิมพ์เองได้
2. ชำระเงิน ได้รับการยืนยัน ผู้ดำเนินการออกรหัสแนะนำของ [พัฒนาแล้ว]
ลูกค้ารายนี้ให้อัตโนมัติโดยไม่ต้องร้องขอ
3. หลักฐาน ออก commitment การซื้อเมื่อล็อตที่จัดส่งเชื่อมกับ [พัฒนาแล้ว]
บันทึกการจับปลาเพียงหนึ่งรายการ (TR-2026-015)
4. เอกสาร การ์ดที่ใส่ในกล่องนำทางกลับไปยังแชตและไปยัง [ยังไม่พัฒนา]
URL แนะนำของผู้ซื้อเอง
5. โพสต์ AI ของผู้ซื้อเองเป็นผู้เขียนโพสต์ GYOTAK ส่งคืน [พัฒนาแล้ว]
ข้อเท็จจริงและข้อจำกัด ไม่ใช่ตัวข้อความ
6. อ้างสิทธิ์ ผู้ซื้ออ้างสิทธิ์การซื้อและให้ handle รหัสแนะนำ [พัฒนาแล้ว]
ที่มีอยู่บนการเชื่อมต่อนั้นถูกบันทึกและประทับ
ด้วยวงจร v3
7. คำสั่งถัดไป ผู้อ่านสั่งซื้อผ่าน URL นั้น และขั้นที่ 1 บันทึก [พัฒนาแล้ว]
เป็นการแนะนำ วงจรจึงปิดครบ
ขั้นที่ 2 คือสิ่งที่กำหนดรูปของวงจรนี้ และควรระบุให้แม่นยำ รหัสแนะนำไม่ใช่สิ่งที่ต้องยื่นขอ แต่ออกให้เมื่อการชำระเงินได้รับการยืนยัน สำหรับคำสั่งซื้อทางแชตที่ระบุตัวลูกค้าได้ ไม่มีใครเข้าโครงการแนะนำด้วยจำนวนผู้ติดตาม อิทธิพล หรือใบสมัครที่ผู้ดำเนินการอนุมัติ คุณสมบัติเดียวคือการได้ซื้อสินค้า ผู้ที่ไม่ได้ซื้อจะแนะนำไม่ได้ และผู้ที่ซื้อแล้วก็เป็นผู้แนะนำอยู่แล้วไม่ว่าจะใช้สิทธิ์นั้นหรือไม่
ขั้นที่ 5 อธิบายใน § 5.3 ขั้นที่ 6 คือสิ่งที่ § 2 และ § 3 กล่าวถึง ส่วนขั้นที่ 4 เป็นขั้นเดียวที่ยังไม่พร้อม และเป็นขั้นเดียวที่เป็นกายภาพ คือการ์ดในกล่องตามภาษาของลูกค้าที่นำกลับไปยังแชต ไม่มีโค้ดสำหรับขั้นนี้ อีกทั้งโดยธรรมชาติก็ไม่ใช่โค้ด แต่เป็นงานพิมพ์และงานแพ็ก ที่ระบุไว้ตรงนี้เพราะหากไม่มีขั้นนี้วงจรก็ปิดไม่ครบ
มีคุณสมบัติหนึ่งของทั้งระบบที่ควรเรียกชื่อ เพราะเป็นเหตุผลของการสร้างสิ่งนี้แทนการซื้อโฆษณา ในโครงการแอฟฟิลิเอตทั่วไป แรงจูงใจไหลไปหาผู้ที่ดึงความสนใจได้ ส่วนความรู้เรื่องสินค้าเป็นเพียงทางเลือก แต่ที่นี่สิทธิ์ในการแนะนำออกโดยการซื้อ ชุดของผู้ที่ได้รับรางวัลจึงเป็นสับเซตของผู้ที่มีความรู้จากประสบการณ์ตรง นั่นไม่ได้ทำให้สิ่งที่เขาเขียนเป็นความจริง — § 8 ระบุเรื่องนี้ชัดเจน — แต่หมายความว่างบประมาณไปถึงผู้ซื้อ ไม่ใช่ผู้มีผู้ชม
A referral programme attracts three predictable abuses: referring yourself, claiming a post that was never made, and flooding the network with operator-written copy under customers’ names. Each is handled by structure rather than by policing, and all three defences are implemented and running.
A customer cannot earn on their own order. The exclusion is applied in two places, because orders arrive by two paths. In the chat path it lives in the earnings calculation itself: any order whose buyer is the referrer is discarded, and the summary and the line-item detail apply the identical rule, so the two can never disagree. In the web-shop path, where the order does not identify the buyer as a known customer, the check happens at the moment the order is accepted — an order whose email matches the referrer’s own is recorded with no referrer at all, rather than being filtered out later.
One detail of that calculation is worth recording because it is the kind of thing that fails silently. The exclusion has to treat an order with no buyer identity as “not self” explicitly. State the test the obvious way instead, and an order with no identity makes the comparison indeterminate rather than false, so those orders drop out of the totals entirely. A self-referral filter that quietly zeroes everybody’s earnings is worse than none, so the rule names the missing-identity case first.
A buyer who has posted can register the URL, and the operator checks it without asking the buyer for anything further. The registration is refused immediately if the URL is not HTTPS, or if its host does not match the platform named. It is also refused if the URL is one of GYOTAK’s own pages: the referral landing page and the photo capture page both contain the referral id by construction, so reporting one of them would sail through verification without anything having been posted at all. That case was found and closed; it is the kind of hole a verifier passes rather than catches.
Verification itself runs periodically and is deliberately modest. For X, the public embed endpoint is queried first and the post text searched for the referral id, following shortened links one hop to see where they land. Otherwise the public page is fetched and the body searched. A post that cannot be read at all — a login wall, a page that is only a script shell — is not marked as rejected, because a fetch cannot distinguish “the link is not there” from “we could not see the page.” After a limited number of attempts such a report is marked unverifiable and left for a human. We would rather carry an honest ‘unknown’ than a confident false negative.
The tool a customer’s assistant calls to prepare a post returns no draft and no template. It returns the order’s facts, the images, a verification link, and three lists: what may be said, what must never be claimed, and what the post must include — the referral URL verbatim, and a clear disclosure that it is a referral link. It ends with an instruction to the assistant saying, in as many words, that GYOTAK does not prescribe the wording and that the text should suit the person writing it.
The prohibitions are specific and unflattering to us, which is the point of having them: the post must not claim that the referral or the order is recorded on chain, must not claim a payment transaction exists for a bank-transfer order, must not present the crypto settlement as running on a production network, must not present the sample verification link as the record of the lot the buyer received, and must not claim the photo is proven authentic or not AI-generated.
Three reasons for refusing to ghostwrite, in increasing order of importance. A text written by the operator and posted under a customer’s name is the operator speaking while appearing not to. Identical drafts across many accounts are detectable, and being detected as coordinated is the exact failure this whole design exists to avoid. And the customer’s own assistant knows the customer — their language, their cooking, what they actually thought of the fish — which is the part we could not supply even if we wanted to.
紹介の仕組みには、予想のつく不正が3つ寄ってくる。自分を紹介すること、していない投稿を申告すること、そして運用者が書いた文章を顧客の名前で大量に流すことである。いずれも取り締まりではなく構造で処理しており、3つとも実装済みで稼働している。
顧客は自分の注文で報酬を得られない。除外は2か所に置かれている。注文の入口が2つあるからである。チャット経路では報酬の計算そのものに入っている。買主が紹介者本人である注文は計算から落ち、同じ規則をサマリーと明細の両方に適用するので、両者が食い違うことはない。EC 経路では注文から顧客を特定できないため、注文を受け付ける時点で判定する。紹介者本人のメールと一致する注文は、後から除外するのではなく、最初から紹介者なしとして記録される。
計算側の細部を一つ書き残しておく。静かに壊れる類のものだからである。除外の規則は「買主の識別子が無い注文は自己紹介ではない」を明示的に扱う必要がある。素直に書くと、識別子の無い注文で判定が偽ではなく不定になり、その注文が合計から丸ごと落ちる。全員の報酬を黙ってゼロにする自己紹介フィルタは、無いより悪い。だから規則は識別子が無い場合を先頭に書く。
投稿した買主は、その URL を登録できる。運用者は買主に追加で何も求めずにそれを確認する。URL が HTTPS でない場合、指定したプラットフォームのホストと一致しない場合は、その場で断る。GYOTAK 自身のページである場合も断る。紹介ランディングページと撮影ページは、構造上どちらも紹介 ID を本文に含むので、それを報告すれば、何も投稿していなくても検証を通ってしまう。この穴は見つけて塞いだ。検証器が「捕まえる」のではなく「通してしまう」種類の穴である。
検証自体は定期的に走り、意図的に控えめである。X については公開の埋め込み用エンドポイントを先に引き、本文に紹介 ID があるかを見る。短縮リンクは1ホップだけ追って行き先を見る。それ以外は公開ページを取得して本文を探す。まったく読めなかった投稿 — ログイン壁、スクリプトの殻だけのページ — は却下扱いにしない。取得の失敗では「リンクが無い」と「ページが見えなかった」を区別できないからである。既定の回数だけ試して読めなければ「検証不能」と印を付け、人に回す。自信のある偽陰性より、正直な「不明」を持つほうを選ぶ。
顧客のアシスタントが投稿の準備に呼ぶツールは、下書きも雛形も返さない。返すのは注文の事実、画像、検証用リンク、そして3つのリスト — 言ってよいこと、決して主張してはならないこと、必ず含めること(紹介 URL をそのまま、そして紹介リンクであることの明示)である。最後にアシスタント宛ての指示が付く。文面は GYOTAK が指定しない、書く人に合う書き方をせよ、と言葉どおり書いてある。
禁止事項は具体的で、我々にとって都合が悪い。そこに意味がある。紹介や注文そのものがオンチェーンに記録されているとは書かないこと。銀行振込の注文に決済トランザクションがあるとは書かないこと。暗号資産の決済が本番ネットワークで動いているとは書かないこと。見本の検証リンクを、買主が受け取ったロットの記録として提示しないこと。写真が本物であること、AI 生成でないことが証明済みだとは書かないこと。
代筆を断る理由を3つ、重要度の低い順に挙げる。運用者が書いた文章を顧客の名前で出すのは、運用者がそう見えない形で語っているということである。同じ下書きが多数のアカウントに現れれば検出できてしまい、「示し合わせている」と検出されることは、この設計全体が避けようとしている当の失敗である。そして顧客自身のアシスタントは顧客を知っている — 言語も、調理の仕方も、その魚を実際にどう思ったかも。そこは、我々が望んだとしても供給できない部分である。
โครงการแนะนำย่อมดึงดูดการทุจริตที่คาดเดาได้สามแบบ คือการแนะนำตัวเอง การแจ้งโพสต์ที่ไม่เคยโพสต์ และการกระจายข้อความที่ผู้ดำเนินการเขียนเองในชื่อของลูกค้าจำนวนมาก ทั้งสามข้อจัดการด้วยโครงสร้างแทนการไล่ตรวจ และทั้งสามมาตรการพัฒนาแล้วและทำงานอยู่
ลูกค้าไม่ได้รับรางวัลจากคำสั่งซื้อของตนเอง การตัดออกนี้อยู่ในสองจุด เพราะคำสั่งซื้อเข้ามาสองทาง ทางแชตอยู่ในการคำนวณรางวัลเอง คำสั่งซื้อที่ผู้ซื้อคือผู้แนะนำจะถูกตัดออก และใช้กฎเดียวกันทั้งในสรุปยอดและในรายละเอียดรายบรรทัด ทั้งสองจึงไม่มีทางไม่ตรงกัน ส่วนทางร้านค้าออนไลน์ซึ่งคำสั่งซื้อไม่ได้ระบุว่าผู้ซื้อเป็นลูกค้ารายใด จะตรวจ ณ ตอนรับคำสั่งซื้อ คำสั่งซื้อที่อีเมลตรงกับของผู้แนะนำเองจะถูกบันทึกโดยไม่มีผู้แนะนำตั้งแต่ต้น แทนที่จะกรองออกภายหลัง
มีรายละเอียดหนึ่งของการคำนวณที่ควรบันทึกไว้ เพราะเป็นความผิดพลาดชนิดที่เงียบ กฎการตัดออกต้องระบุชัดเจนว่า คำสั่งซื้อที่ไม่มีตัวระบุผู้ซื้อไม่ถือเป็นการแนะนำตัวเอง หากเขียนตรงไปตรงมา คำสั่งซื้อที่ไม่มีตัวระบุจะทำให้การเปรียบเทียบไม่แน่นอนแทนที่จะเป็นเท็จ และคำสั่งซื้อเหล่านั้นจะหลุดจากยอดรวมทั้งหมด ตัวกรองการแนะนำตัวเองที่ทำให้รางวัลของทุกคนเป็นศูนย์อย่างเงียบๆ นั้นแย่กว่าการไม่มีเลย กฎจึงระบุกรณีไม่มีตัวระบุไว้เป็นข้อแรก
ผู้ซื้อที่โพสต์แล้วสามารถลงทะเบียน URL ได้ และผู้ดำเนินการตรวจสอบโดยไม่ขอสิ่งใดเพิ่มจากผู้ซื้อ การลงทะเบียนจะถูกปฏิเสธทันทีหาก URL ไม่ใช่ HTTPS หรือโฮสต์ไม่ตรงกับแพลตฟอร์มที่ระบุ และจะถูกปฏิเสธเช่นกันหาก URL เป็นหน้าเพจของ GYOTAK เอง เพราะหน้าแลนดิงของการแนะนำและหน้าถ่ายรูปต่างมีรหัสแนะนำอยู่ในเนื้อหาโดยโครงสร้าง การแจ้งหน้าเหล่านี้จึงผ่านการตรวจสอบได้ทั้งที่ไม่ได้โพสต์อะไรเลย ช่องโหว่นี้ถูกพบและปิดแล้ว เป็นช่องโหว่ชนิดที่ตัวตรวจสอบ “ปล่อยผ่าน” มากกว่า “จับได้”
ตัวการตรวจสอบทำงานเป็นระยะและตั้งใจให้ถ่อมตัว สำหรับ X จะเรียกปลายทางฝังโพสต์สาธารณะก่อนแล้วค้นหารหัสแนะนำในเนื้อความ พร้อมตามลิงก์ย่อหนึ่งช่วงเพื่อดูปลายทาง กรณีอื่นจะดึงหน้าเพจสาธารณะแล้วค้นในเนื้อหา โพสต์ที่อ่านไม่ได้เลย เช่น ติดกำแพงล็อกอินหรือเป็นเพียงเปลือกสคริปต์ จะไม่ถูกทำเครื่องหมายว่าถูกปฏิเสธ เพราะการดึงหน้าไม่อาจแยก “ไม่มีลิงก์อยู่จริง” ออกจาก “เรามองไม่เห็นหน้านั้น” หลังพยายามตามจำนวนครั้งที่กำหนดแล้วจะทำเครื่องหมายว่าตรวจสอบไม่ได้และส่งต่อให้คนพิจารณา เราเลือกถือค่า “ไม่ทราบ” อย่างซื่อสัตย์ มากกว่าผลลบลวงที่ดูมั่นใจ
เครื่องมือที่ผู้ช่วยของลูกค้าเรียกใช้เพื่อเตรียมโพสต์ไม่ส่งคืนร่างและไม่ส่งคืนแม่แบบ แต่ส่งคืนข้อเท็จจริงของคำสั่งซื้อ รูปภาพ ลิงก์ตรวจสอบ และสามรายการ ได้แก่ สิ่งที่พูดได้ สิ่งที่ห้ามอ้างเด็ดขาด และสิ่งที่โพสต์ต้องมี คือ URL แนะนำตามตัวอักษร และการเปิดเผยอย่างชัดเจนว่าเป็นลิงก์แนะนำ ปิดท้ายด้วยคำสั่งถึงผู้ช่วยที่ระบุเป็นถ้อยคำว่า GYOTAK ไม่กำหนดสำนวน และข้อความควรเหมาะกับผู้เขียนคนนั้น
ข้อห้ามมีความเฉพาะเจาะจงและไม่เข้าข้างเรา ซึ่งนั่นคือเหตุผลของการมีข้อห้าม โพสต์ต้องไม่อ้างว่าการแนะนำหรือคำสั่งซื้อถูกบันทึกบนเชน ต้องไม่อ้างว่าคำสั่งซื้อที่โอนเงินผ่านธนาคารมีธุรกรรมการชำระเงิน ต้องไม่นำเสนอว่าการชำระเงินคริปโตทำงานบนเครือข่ายจริง ต้องไม่นำเสนอลิงก์ตรวจสอบตัวอย่างว่าเป็นบันทึกของล็อตที่ผู้ซื้อได้รับ และต้องไม่อ้างว่ารูปถ่ายได้รับการพิสูจน์แล้วว่าเป็นของจริงหรือไม่ได้สร้างโดย AI
เหตุผลสามข้อของการไม่เขียนแทน เรียงจากสำคัญน้อยไปมาก ข้อความที่ผู้ดำเนินการเขียนแล้วโพสต์ในชื่อลูกค้าคือการที่ผู้ดำเนินการพูดโดยทำให้ดูเหมือนไม่ได้พูด ร่างที่เหมือนกันปรากฏในหลายบัญชีย่อมถูกตรวจจับได้ และการถูกตรวจจับว่าเป็นการนัดหมายกันคือความล้มเหลวที่การออกแบบทั้งหมดนี้พยายามหลีกเลี่ยง และผู้ช่วยของลูกค้าเองรู้จักลูกค้า ทั้งภาษา วิธีปรุง และความรู้สึกจริงที่มีต่อปลานั้น ซึ่งเป็นส่วนที่เราไม่อาจจัดหาให้ได้แม้จะอยากทำ
A post about a meal usually has a photo, and a photo is now the cheapest thing in the world to fabricate. The capture page (implemented, in production) does not try to prove that an image is real. It produces a narrow, checkable record about one specific act of capture, and refuses to say more than that.
Six properties, in the order they occur:
| Property | How |
|---|---|
| Top-level page, not the chat widget | The assistant’s embedded panel runs in an iframe where geolocation is blocked by permissions policy. Capture therefore happens on a page the customer opens in their own phone browser, through a short-lived link; the chat only issues that link and lists what was captured. |
| The camera is requested directly | The file input requests the environment-facing camera rather than a general file picker. |
| Location is required, and comes first | The page asks for position before it opens the camera, and refuses to continue without it. The upload is rejected server-side too if coordinates are missing, so a client that skips the step gains nothing. |
| EXIF is stripped on the device | For JPEG, every application and comment segment is removed in the browser before anything is sent. The customer’s home address does not travel to us inside the file. |
| The hash is of the bytes that exist | SHA-256 is computed over the stripped bytes — which are exactly the bytes uploaded, and exactly the bytes the customer then shares from their phone. The file the reader receives is byte-identical to the file that was hashed. |
| Coordinates are hidden; the province is public | Raw coordinates and a 32-byte nonce are held privately, following the scheme of TR-2026-012; what is published is a hiding commitment plus a province label. The record is stamped on Midnight under a batch id, and the customer sees its status move from pending to confirmed. |
The limit, stated plainly. Social networks re-encode uploaded images. The bytes in the post will not hash to the value that was stamped, and no reader should expect them to. What the record attests is that a file with this hash was captured at this time, from this province, by someone holding a capture link issued to a buyer. It does not attest that the image in the post is that file, that the image is not AI-generated, or that the meal in it is the lot that was bought. The page also cannot prove the file came from the camera rather than the photo library: requesting the camera is a request, and how it is honoured is the platform’s decision, not ours.
We consider that narrowness a feature. The alternative — a badge asserting the photo is genuine — would be a claim we cannot support, on exactly the model of the “verified purchase” badge this line of work exists to replace.
食事の投稿にはたいてい写真が付く。そして写真は今や、世界で最も安く捏造できるものである。撮影ページ(実装済み・本番稼働中)は、画像が本物であることを証明しようとはしない。ある一回の撮影という行為について、狭くて確認可能な記録を作り、それ以上のことは言わない。
性質を6つ、起きる順に挙げる。
| 性質 | 方法 |
|---|---|
| チャットのウィジェットではなくトップレベルのページ | アシスタントの埋め込みパネルは iframe の中で動き、そこでは permissions policy により位置情報が禁止される。したがって撮影は、顧客が自分のスマートフォンのブラウザで開くページで行う。リンクは短時間で失効し、チャットはそのリンクの発行と、撮影結果の一覧表示だけを持つ。 |
| カメラを直接起動する | ファイル入力は、一般のファイル選択ではなく背面カメラを要求する。 |
| 位置情報は必須で、先に取る | ページはカメラを開く前に位置を要求し、取れなければ先へ進まない。座標が無いアップロードはサーバー側でも拒否するので、この段を飛ばすクライアントが得るものは何もない。 |
| EXIF は端末で剥がす | JPEG については、送信前にブラウザ側でアプリケーション領域とコメント領域をすべて取り除く。顧客の自宅の座標がファイルの中に入ったまま我々のところへ来ることはない。 |
| ハッシュは実在するバイト列に対して取る | SHA-256 は剥がした後のバイト列に対して計算する — それはアップロードされるバイト列そのものであり、顧客がそのまま端末から共有するバイト列そのものでもある。読み手が受け取るファイルは、ハッシュを取ったファイルとバイト単位で同一である。 |
| 座標は隠し、県だけ公開する | 生座標と 32 バイトの nonce は非公開に保持する。方式は TR-2026-012 に従う。公開するのは hiding commitment と県名ラベルである。記録は batch ID の下で Midnight に刻印され、顧客はその状態が pending から confirmed に変わるのを見る。 |
限界を率直に書く。 SNS はアップロードされた画像を再エンコードする。投稿中のバイト列は、刻印された値にはハッシュしない。読み手もそれを期待すべきではない。この記録が保証するのは、このハッシュを持つファイルが、この時刻に、この県で、買主に発行された撮影リンクを持つ者によって撮影された、というところまでである。投稿の画像がそのファイルであること、画像が AI 生成でないこと、写っている料理が買ったロットであることは保証しない。また、ファイルがフォトライブラリではなくカメラから来たことも、このページには証明できない。カメラを要求するのは要求であって、それがどう扱われるかはプラットフォームの決定であり、我々の決定ではない。
この狭さは欠点ではなく特長だと考えている。代替案 — 写真が本物だと主張するバッジ — は、我々に裏付けのない主張であり、この一連の仕事が置き換えようとしている「購入済み」バッジとまったく同じ構図になる。
โพสต์เรื่องมื้ออาหารมักมีรูป และรูปคือสิ่งที่ปลอมได้ถูกที่สุดในโลกเวลานี้ หน้าถ่ายรูป (พัฒนาแล้วและใช้งานจริง) ไม่ได้พยายามพิสูจน์ว่าภาพเป็นของจริง แต่สร้างบันทึกที่แคบและตรวจสอบได้เกี่ยวกับการถ่ายภาพครั้งหนึ่งโดยเฉพาะ และไม่กล่าวเกินไปกว่านั้น
คุณสมบัติหกข้อ เรียงตามลำดับที่เกิดขึ้น
| คุณสมบัติ | วิธีการ |
|---|---|
| เป็นหน้าระดับบนสุด ไม่ใช่วิดเจ็ตในแชต | แผงที่ฝังในผู้ช่วยทำงานภายใน iframe ซึ่ง permissions policy ปิดการใช้ตำแหน่งที่ตั้ง การถ่ายจึงเกิดบนหน้าที่ลูกค้าเปิดในเบราว์เซอร์ของโทรศัพท์ตนเองผ่านลิงก์ที่มีอายุสั้น ส่วนแชตทำเพียงออกลิงก์นั้นและแสดงรายการที่ถ่ายไว้ |
| เรียกกล้องโดยตรง | ช่องรับไฟล์ร้องขอกล้องด้านหลัง แทนตัวเลือกไฟล์ทั่วไป |
| ต้องมีตำแหน่งที่ตั้ง และขอก่อน | หน้าเว็บขอตำแหน่งก่อนเปิดกล้อง และไม่ไปต่อหากไม่ได้ การอัปโหลดที่ไม่มีพิกัดจะถูกปฏิเสธที่ฝั่งเซิร์ฟเวอร์ด้วย ไคลเอนต์ที่ข้ามขั้นนี้จึงไม่ได้อะไร |
| ลบ EXIF ในเครื่อง | สำหรับ JPEG ส่วนแอปพลิเคชันและส่วนคอมเมนต์ทั้งหมดถูกลบในเบราว์เซอร์ก่อนส่ง ที่อยู่บ้านของลูกค้าจึงไม่เดินทางมาถึงเราในไฟล์ |
| แฮชคำนวณจากไบต์ที่มีอยู่จริง | SHA-256 คำนวณจากไบต์หลังลบข้อมูลกำกับ ซึ่งเป็นไบต์ชุดเดียวกับที่อัปโหลด และเป็นไบต์ชุดเดียวกับที่ลูกค้าแชร์ต่อจากเครื่องตนเอง ไฟล์ที่ผู้อ่านได้รับจึงตรงกับไฟล์ที่ถูกแฮชทุกไบต์ |
| ซ่อนพิกัด เปิดเผยจังหวัด | พิกัดดิบและ nonce ขนาด 32 ไบต์ถูกเก็บเป็นความลับตามวิธีของ TR-2026-012 สิ่งที่เผยแพร่คือ hiding commitment และป้ายชื่อจังหวัด บันทึกถูกประทับบน Midnight ภายใต้ batch id และลูกค้าเห็นสถานะเปลี่ยนจาก pending เป็น confirmed |
ข้อจำกัด กล่าวตรงไปตรงมา โซเชียลเน็ตเวิร์กเข้ารหัสภาพที่อัปโหลดใหม่ ไบต์ในโพสต์จึงไม่แฮชออกมาเป็นค่าที่ประทับไว้ และผู้อ่านไม่ควรคาดหวังเช่นนั้น สิ่งที่บันทึกรับรองคือไฟล์ที่มีค่าแฮชนี้ถูกถ่าย ณ เวลานี้ จากจังหวัดนี้ โดยผู้ที่ถือลิงก์ถ่ายรูปที่ออกให้แก่ผู้ซื้อ ไม่ได้รับรองว่าภาพในโพสต์คือไฟล์นั้น ไม่ได้รับรองว่าภาพไม่ได้สร้างโดย AI และไม่ได้รับรองว่าอาหารในภาพคือล็อตที่ซื้อ อีกทั้งหน้าเว็บก็พิสูจน์ไม่ได้ว่าไฟล์มาจากกล้องแทนที่จะมาจากคลังภาพ เพราะการเรียกกล้องเป็นเพียงคำร้องขอ ส่วนจะตอบสนองอย่างไรเป็นการตัดสินใจของแพลตฟอร์ม ไม่ใช่ของเรา
เราถือว่าความแคบนี้เป็นข้อดี ทางเลือกอีกทางคือป้ายที่ยืนยันว่ารูปเป็นของจริง ซึ่งเป็นคำกล่าวอ้างที่เราสนับสนุนไม่ได้ และเป็นแบบเดียวกันทุกประการกับป้าย “ยืนยันการซื้อแล้ว” ที่งานชุดนี้มีขึ้นเพื่อแทนที่
The mechanism described here is not specific to fish, to Midnight, or to X. What it needs is only this: an operator-issued value that exists solely in the hands of the party who performed a real act, published in the same immutable record as that party’s public claim. Several variants follow, disclosed so that the shape is public rather than left to be re-derived.
| Variant | What changes |
|---|---|
| A different chain | Any ledger providing insert-only records with block time works: the design uses a commitment and a plaintext field, not a privacy-chain-specific primitive. The hiding of the buyer is achieved by hashing, so a transparent ledger is also sufficient for the binding. |
| A different network | The handle field is a platform-scoped account name. Nothing prevents carrying a platform tag alongside it, so that the same purchase can be claimed by an account on one network and, separately, by an account on another, each as its own record. |
| A commitment instead of a plaintext id | Plaintext is right when the value is already public (§ 2.3). Where a referral id is not meant to be public — a private introduction, a business referral under confidentiality — the same record can carry a commitment to the id, opened only to a counterparty who already knows it. The verification changes from a string comparison to a single hash, and the enumerability property is lost by design. |
| Travel, and proof of having been there | The strongest form of this idea is not a purchase but a presence. A traveller who actually went somewhere can produce an account of it backed by a capture record (§ 6) and a booking proof, and that account carries their own referral URL. Someone who did not go can write the article — a model will write it beautifully — but cannot produce the record it is supposed to sit on. The article becomes something only the person who went is able to publish with backing. |
| A threshold proof over the booking | Where the interesting fact is not what was bought but that it exceeded some level, a zero-knowledge proof can establish “this claimant is a booker who paid at least the threshold” while revealing neither the amount, nor the booking reference, nor the identity of the booker. The binding then attests to a qualification rather than to a transaction, which is the form most likely to be acceptable where prices are confidential. |
| The referrer is an AI agent | Nothing in the design requires the referrer to be a person. An agent that buys on behalf of its principal can be issued its own referral URL under the same rule — issued by payment, one binding per purchase — and paid in a stablecoin to an address rather than by manual transfer. The verification a reader performs does not change: the id in the post must match the id in the record for the purchase being described. |
| Binding every purchase automatically | Once a buyer has claimed once, the operator could stamp a binding for each later purchase without being asked, instead of waiting for a claim as the implementation described here does. Automatic binding yields a complete, gap-free sequence of repeat purchases and costs the buyer no further steps; its price is that silence is no longer available — every later purchase is published under the handle whether or not the buyer meant to speak about it. Claim-triggered binding keeps that choice at every purchase, and makes the act of claiming itself dated evidence that the buyer intended to post; its price is gaps in the visible sequence, and an extra step for a buyer who does want to post. The on-chain record is identical either way: which trigger applies is an operator policy, and could reasonably be a per-customer setting. |
These variants are disclosed, not built. They are listed because the invention is the pattern, not any one instantiation of it, and because a design disclosure that describes only the version one company happens to have shipped leaves the pattern available to be claimed by someone else.
ここで述べた仕組みは、魚にも、Midnight にも、X にも固有ではない。必要なのは次のことだけである — 実際の行為を行った当事者の手元にしか存在しない、運用者が発行した値を、その当事者の公開の主張と同じ不変の記録に刻むこと。以下に変形をいくつか挙げる。形を公開し、誰かが再導出するのに任せないためである。
| 変形 | 何が変わるか |
|---|---|
| 別のチェーン | 追記のみの記録とブロック時刻を提供する台帳であれば何でも動く。この設計が使うのはコミットメントと平文フィールドであって、プライバシーチェーン固有の原始関数ではない。買主の秘匿はハッシュで達成しているので、binding については透明な台帳でも足りる。 |
| 別の SNS | handle はプラットフォームに閉じたアカウント名である。プラットフォーム名を並べて持つことを妨げるものは何もない。そうすれば同じ購入を、あるネットワークのアカウントと、別のネットワークのアカウントが、それぞれ別の記録として名乗れる。 |
| 平文ではなくコミットメント | 平文が正しいのは、値が既に公開である場合である(§ 2.3)。紹介 ID が公開されることを意図しない場合 — 私的な紹介、秘密保持下の商談の紹介 — は、同じ記録に ID のコミットメントを載せ、既にその値を知っている相手にだけ開く形にできる。検証は文字列比較からハッシュ1回に変わり、列挙可能性は設計として失われる。 |
| 旅行と、実在の証明 | この考えの最も強い形は、購入ではなく、そこに居たことである。実際に行った旅行者は、撮影記録(§ 6)と予約の証明に裏打ちされた記事を作れ、その記事には本人の紹介 URL が付く。行っていない者も記事は書ける — モデルは見事に書く — が、その記事が載るはずの記録は作れない。記事は、行った人だけが裏付きで公開できるものになる。 |
| 予約についてのしきい値証明 | 興味のある事実が「何を買ったか」ではなく「ある水準を超えたか」である場合、ゼロ知識証明で「この請求者は、しきい値以上を支払った予約者である」ことを、金額も予約番号も本人の身元も明かさずに示せる。binding が保証するのは取引ではなく資格になる。価格が秘密である領域で最も受け入れられやすいのはこの形である。 |
| 紹介者が AI エージェントの場合 | 紹介者が人間であることを、この設計は要求していない。本人に代わって買うエージェントにも、同じ規則で — 入金によって発行し、購入ごとに1つの binding — 専用の紹介 URL を発行でき、手作業の送金ではなくステーブルコインでアドレスに支払える。読み手の検証手順は変わらない。投稿中の ID が、記述されている購入の記録中の ID と一致すること、それだけである。 |
| すべての購入を自動で刻む | 一度でも名乗った買主については、以後の購入を請求なしで自動的に刻むこともできる(ここで述べた実装は請求を待つ)。自動で刻めば、リピート購入の列が欠けなく揃い、買主に追加の手間もかからない。その代償は、沈黙が選べなくなることである — 語るつもりのなかった購入まで handle の下に公開される。請求時に刻む方式は、その選択を購入ごとに残し、さらに「請求した」という行為自体が、買主が発信する意図を持った時点の証拠になる。代償は、見える列に穴が空くことと、発信したい買主に一手間かかることである。チェーン上の記録はどちらも同一であり、どちらを契機にするかは運用方針である。顧客ごとの設定にすることもできる。 |
これらは開示であって、構築ではない。挙げるのは、発明が特定の実装ではなくパターンだからであり、また、ある会社がたまたま出荷した版だけを述べる設計開示は、パターンそのものを他者に主張される余地を残すからである。
กลไกที่อธิบายไว้นี้ไม่ได้จำเพาะกับปลา กับ Midnight หรือกับ X สิ่งที่ต้องการมีเพียงเท่านี้ คือค่าที่ผู้ดำเนินการออกให้ ซึ่งมีอยู่เฉพาะในมือของฝ่ายที่ได้กระทำการจริง และถูกเผยแพร่ในบันทึกที่เปลี่ยนแปลงไม่ได้ชุดเดียวกับคำกล่าวอ้างสาธารณะของฝ่ายนั้น ต่อไปนี้คือรูปแบบที่แปรไปหลายแบบ ซึ่งเปิดเผยไว้เพื่อให้รูปของแนวคิดเป็นสาธารณะ แทนที่จะปล่อยให้ผู้อื่นมาคิดย้อนขึ้นใหม่
| รูปแบบ | สิ่งที่เปลี่ยน |
|---|---|
| เชนอื่น | บัญชีแยกประเภทใดก็ได้ที่ให้บันทึกแบบเพิ่มได้อย่างเดียวพร้อมเวลาบล็อก เพราะการออกแบบนี้ใช้ commitment และฟิลด์ข้อความธรรมดา ไม่ใช่ฟังก์ชันพื้นฐานเฉพาะของเชนความเป็นส่วนตัว การปกปิดผู้ซื้อทำได้ด้วยการแฮช บัญชีแยกประเภทแบบโปร่งใสจึงเพียงพอสำหรับ binding |
| โซเชียลอื่น | handle คือชื่อบัญชีที่ผูกกับแพลตฟอร์มหนึ่ง ไม่มีอะไรห้ามการเก็บป้ายแพลตฟอร์มไว้ควบคู่ ทำให้การซื้อเดียวกันถูกอ้างสิทธิ์โดยบัญชีบนเครือข่ายหนึ่งและอีกบัญชีบนอีกเครือข่ายหนึ่ง แยกเป็นคนละบันทึก |
| ใช้ commitment แทนข้อความธรรมดา | ข้อความธรรมดาเหมาะเมื่อค่านั้นเป็นสาธารณะอยู่แล้ว (§ 2.3) ในกรณีที่รหัสแนะนำไม่ได้ตั้งใจให้เป็นสาธารณะ เช่น การแนะนำส่วนตัวหรือการแนะนำทางธุรกิจภายใต้ข้อตกลงรักษาความลับ บันทึกเดียวกันสามารถบรรจุ commitment ของรหัสนั้น และเปิดเฉพาะกับคู่กรณีที่รู้ค่าอยู่แล้ว การตรวจสอบเปลี่ยนจากการเทียบสตริงเป็นการแฮชหนึ่งครั้ง และคุณสมบัติการไล่เรียงได้จะหายไปโดยการออกแบบ |
| การเดินทาง และการพิสูจน์ว่าไปจริง | รูปที่แข็งแรงที่สุดของแนวคิดนี้ไม่ใช่การซื้อ แต่คือการอยู่ ณ ที่นั้น นักเดินทางที่ไปจริงสามารถสร้างบทความที่หนุนด้วยบันทึกการถ่ายภาพ (§ 6) และหลักฐานการจอง และบทความนั้นมี URL แนะนำของเขาเอง ผู้ที่ไม่ได้ไปก็เขียนบทความได้ และโมเดลจะเขียนได้งดงาม แต่สร้างบันทึกที่บทความนั้นควรตั้งอยู่ไม่ได้ บทความจึงกลายเป็นสิ่งที่เฉพาะผู้ที่ไปจริงเท่านั้นจะเผยแพร่พร้อมหลักฐานได้ |
| การพิสูจน์ระดับขั้นต่ำของการจอง | เมื่อข้อเท็จจริงที่น่าสนใจไม่ใช่ว่าซื้ออะไร แต่คือว่าเกินระดับหนึ่งหรือไม่ การพิสูจน์แบบไร้ความรู้สามารถยืนยันว่า “ผู้อ้างสิทธิ์รายนี้เป็นผู้จองที่จ่ายไม่น้อยกว่าระดับที่กำหนด” โดยไม่เปิดเผยทั้งจำนวนเงิน รหัสการจอง และตัวตนของผู้จอง binding จึงรับรองคุณสมบัติแทนที่จะรับรองธุรกรรม ซึ่งเป็นรูปที่น่าจะยอมรับได้มากที่สุดในวงการที่ราคาเป็นความลับ |
| ผู้แนะนำเป็นเอเจนต์ AI | การออกแบบนี้ไม่ได้กำหนดว่าผู้แนะนำต้องเป็นมนุษย์ เอเจนต์ที่ซื้อแทนเจ้าของก็ได้รับ URL แนะนำของตนเองภายใต้กฎเดียวกัน คือออกโดยการชำระเงิน และหนึ่ง binding ต่อหนึ่งการซื้อ และรับเงินเป็นสเตเบิลคอยน์ไปยังแอดเดรสแทนการโอนด้วยมือ ขั้นตอนตรวจสอบของผู้อ่านไม่เปลี่ยน คือรหัสในโพสต์ต้องตรงกับรหัสในบันทึกของการซื้อที่กล่าวถึง |
| ผูกทุกการซื้อโดยอัตโนมัติ | เมื่อผู้ซื้ออ้างสิทธิ์ครั้งหนึ่งแล้ว ผู้ดำเนินการอาจบันทึก binding ของการซื้อครั้งถัดๆ ไปให้อัตโนมัติโดยไม่ต้องรอการร้องขอ ต่างจากการพัฒนาที่อธิบายในรายงานนี้ซึ่งรอการอ้างสิทธิ์ การผูกอัตโนมัติให้ลำดับการซื้อซ้ำที่ครบถ้วนไม่ขาดช่วง และผู้ซื้อไม่ต้องทำขั้นตอนเพิ่ม แต่แลกมาด้วยการที่ความเงียบไม่เป็นตัวเลือกอีกต่อไป เพราะการซื้อครั้งหลังทุกครั้งจะถูกเผยแพร่ใต้ handle ไม่ว่าเจ้าตัวตั้งใจจะพูดถึงหรือไม่ ส่วนการผูกเมื่ออ้างสิทธิ์ยังคงทางเลือกนั้นไว้ในทุกการซื้อ และทำให้การอ้างสิทธิ์เองเป็นหลักฐานที่มีเวลากำกับว่าผู้ซื้อตั้งใจจะโพสต์ แต่แลกมาด้วยช่องว่างในลำดับที่มองเห็น และขั้นตอนเพิ่มสำหรับผู้ที่ต้องการโพสต์ บันทึกบนเชนเหมือนกันทั้งสองแบบ การเลือกตัวกระตุ้นจึงเป็นนโยบายของผู้ดำเนินการ และตั้งเป็นค่ารายลูกค้าได้ |
รูปแบบเหล่านี้เป็นการเปิดเผย ไม่ใช่สิ่งที่สร้างแล้ว ที่ระบุไว้เพราะสิ่งประดิษฐ์คือรูปแบบ ไม่ใช่การนำไปใช้เฉพาะกรณีใดกรณีหนึ่ง และเพราะการเปิดเผยการออกแบบที่อธิบายเฉพาะรุ่นที่บริษัทหนึ่งบังเอิญปล่อยออกมา ย่อมเปิดช่องให้ผู้อื่นอ้างสิทธิ์ในรูปแบบนั้นได้
Implemented and running:
Designed, not implemented:
Disclosed openly — what this does not prove:
実装済み・稼働中:
設計のみ・未実装:
公開して述べる — これが証明しないこと:
พัฒนาแล้วและทำงานอยู่:
ออกแบบไว้ แต่ยังไม่พัฒนา:
เปิดเผยตามตรง — สิ่งที่ระบบนี้ไม่ได้พิสูจน์:
| Document ID文書IDรหัสเอกสาร | ECOSUS-TR-2026-016 |
| Publisher発行者ผู้เผยแพร่ | ECOSUS CO., LTD. · 0205562030631 · Pranburi, Thailand |
| Class区分หมวดหมู่ | Public Technical Report · Design Disclosure, Since Built公開技術報告・設計開示(その後実装)รายงานทางเทคนิคสาธารณะ · การเปิดเผยการออกแบบ (พัฒนาแล้วภายหลัง) |
| Licenseライセンスใบอนุญาต | CC BY 4.0 |
| Date日付วันที่ | 2026-09-18 (revised 2026-09-19)(2026-09-19 改訂)(ปรับปรุง 2026-09-19) |
| Statusステータスสถานะ | Everything described is implemented except the printed insert of § 4 and the variants of § 7§ 4 の同梱案内紙と § 7 の変形例を除き、述べたものはすべて実装済みทุกอย่างที่อธิบายไว้พัฒนาแล้ว ยกเว้นการ์ดในกล่องของ § 4 และรูปแบบที่แปรไปใน § 7 |
| Contract (v3, Mainnet)コントラクト (v3, Mainnet)คอนแทรกต์ (v3, Mainnet) | d11d52bd5875ecc2e89e97149e0237db20a91c989f30268950e892655a2a2a57 |
| Contract (v3, Preprod)コントラクト (v3, Preprod)คอนแทรกต์ (v3, Preprod) | e413ff91958079d1ee2e4c792fe19a9c14a5d4ed7eb7966d3526308a3ea2f846 |
| Contract (v2, frozen)コントラクト (v2, 凍結)คอนแทรกต์ (v2, หยุดใช้) | b6f0b4d275cdc96547042f0c38226aaa95beba95e325a831e1722f1313b15179 |
| Prior Report先行報告รายงานก่อนหน้า | TR-2026-015 (gyotak-purchase — Anonymous Purchase Commitment) |
| Related関連เกี่ยวข้อง | TR-2026-014 (Agent-Native Commerce) · TR-2026-012 (gyotak-catch v3 — GPS Hiding Commitment) |
| Author著者ผู้เขียน | Takuya Ogura, Chairman, ECOSUS CO., LTD. |
| Archiveアーカイブการเก็บถาวร | (Perma.cc — see the report index)(Perma.cc — 一覧を参照)(Perma.cc — ดูรายการรายงาน) |