GYOTAK · ECOSUS CO., LTD.
木村さん経由でいただいたご質問への回答です。「再現できる部分を抽出したい」という意図に沿って、できる限り具体的に、つまずいた箇所も隠さずに書きました。次に挑戦する非エンジニアの助けになれば幸いです。 These are my responses to the questions relayed through Kimura-san. In the spirit of "extracting the parts that can be reproduced," I have tried to be as concrete as possible and to hide none of the places where I got stuck. I hope it helps the next non-engineer who attempts this.
回答:小倉拓也(GYOTAK / ECOSUS CO., LTD. 会長)From: Takuya Ogura (Chairman, GYOTAK / ECOSUS CO., LTD.)
タイムラインの実態確認。Midnightを組み込むのに合計約2.5ヶ月、うち約6週間がビジネスロジックとCompactの「馴染ませ期間」という理解だが、週単位のおおまかな流れは? どこで・どれくらい詰まったか?Timeline reality check. Our understanding is ~2.5 months total to add Midnight, with about six weeks "baking in" both the business logic and the Compact piece. Can we get the rough week-by-week shape? Where did he get stuck, and for how long?
「約2.5ヶ月」という認識はおおむね正しいです。ざっくり週単位だと:
gyotak-catch(正確なGPS座標をprivate witnessに隠し、魚種・産地・日時・写真SHA-256を公開ステートに記録)を Preview にデプロイ。Substrate 1016 (Immediately Dropped) で連続失敗。当初は「当時メインネットのコントラクトデプロイがまだ有効化されていない」と推測しました(互換性マトリクスがPreprod/Previewのみ、メインネット用proof-serverのDNS不在などが根拠)。しかし真因は別で、公開RPC(rpc.mainnet.midnight.network)がデプロイtxを1016で落としていたこと。財団提供のRPCエンドポイントに切り替えたところ、デプロイに成功しました。メインネット自体は技術的に動いていて、公開RPCの制約で事実上ブロックされていた、というのが結論です。ここが一番時間を溶かした(約2週間)。Set.prototype.difference(ES2024)が未実装でクラッシュ)。これも非エンジニアが環境構築で踏みやすい罠。gyotak-temp-log をPreprodへ(PASS/FAIL判定、実温度は秘匿)。続いて配合比率 gyotak-ratio-log。#425/#436・servicedesk #52 に報告 → コア開発者が midnight-ledger#587 を起票。e88a2a00… でデプロイ(2026-05-31)。その後、Compactにはスキーマのインプレース移行が無く、コントラクト構造を変えるには新アドレスでの再デプロイが必要だったため、gyotak-catch v2(5f87dd30…3741f7)を本番デプロイ(2026-06-04, block 1106629)。総括:一番時間を溶かしたのはメインネットデプロイの約2週間。公開RPCが黙ってtxを落としていたのが原因で、自分のミスか・仕様か・環境かが切り分けられず、一時は「まだ有効化されていない」と誤って結論づけたほどでした(実際は財団RPCへの切替で解決)。加えて「事前申請が要る・窓口がGitHub」という入口も最初は見えず、非エンジニアには見えない壁だった。精神的に一番きつかったのは次のcold-syncバグ(Q6)。
(時系列の裏取り:Cloudflareの業務システムは2026年4月初旬の時点で既に約400ファイル規模で稼働しており、Midnight関連の最初のコミットは2026年4月下旬。つまり"商売が回る土台が先、Midnightが後"はgit履歴でも確認済みです。)
Your "~2.5 months" estimate is about right. Roughly week by week:
gyotak-catch (exact GPS hidden as a private witness; species, origin, timestamp, photo SHA-256 in public state), to Preview.Substrate 1016 (Immediately Dropped). At first I concluded mainnet contract deploy "wasn't enabled yet" (based on the compatibility matrix listing only Preprod/Preview, no mainnet proof-server in DNS, etc.). But the real cause was different: the public RPC (rpc.mainnet.midnight.network) was dropping the deploy tx with 1016. Switching to the Foundation-provided RPC endpoint made the deploy succeed. Mainnet itself was working; I was effectively blocked by a public-RPC limitation. This burned the most time (~2 weeks).Set.prototype.difference (ES2024) is missing and it crashes). Another trap a non-engineer easily hits during setup.gyotak-temp-log to Preprod (PASS/FAIL judgment, actual temperature kept secret), then the blend-ratio gyotak-ratio-log.#425/#436 / servicedesk #52 → a core developer opened midnight-ledger#587.e88a2a00… (2026-05-31). Then, because Compact has no in-place schema migration — changing the contract structure requires redeploying at a new address — I deployed gyotak-catch v2 (5f87dd30…3741f7) to production (2026-06-04, block 1106629).Summary: The biggest time sink was the ~2 weeks on mainnet deploy. The cause was that the public RPC was silently dropping the tx; I couldn't tell whether it was my mistake, a spec limit, or the environment, and for a while I even wrongly concluded "it isn't enabled yet" (actually solved by switching to the Foundation RPC). On top of that, the entrance itself — that mainnet use needs a prior application, filed on GitHub — was invisible at first, a wall a non-engineer can't see. The hardest part mentally was the next one, the cold-sync bug (Q6).
(Timeline cross-check: the Cloudflare business system was already running at ~400 files by early April 2026, while the first Midnight-related commit is late April 2026 — so "the commerce foundation first, Midnight second" is confirmed in the git history too.)
Claudeに何を、どの順番で接続したか? 実際に与えた情報源は?(次のビルダー向け「スターターキット」の中身になる)What did he plug into Claude, and in what order? What were the actual sources he fed it? That tells us what our "starter kit" should contain.
接続した順番は:
CLAUDE.md(プロジェクト全文脈をファイル化。AIの"長期記憶"。最初に整備)docs.midnight.network(一次情報).claude.json(Claude Code の設定ファイル)に追加するだけ。スターターキットに必ず入れるべき最重要は⑤のCompact特化MCP。これが無いとClaudeはCompactを"推測で"書いてしまう。⑤はメインネットで詰まっていた時期に木村さん(DevRel)からURLを教えてもらったもので、Midnightのチェーンに繋ぐエンドポイントではなく"知識源"としてClaude Code側に読み込ませる点がポイント。これを境にCompact周りの精度が一変した。
The order I connected things:
CLAUDE.md (the full project context as a file — the AI's "long-term memory"; set up first)docs.midnight.network (primary source).claude.json (the Claude Code config file).The single most important thing for the starter kit is ⑤, the Compact-specialized MCP. Without it, Claude writes Compact "by guessing." Kimura-san (DevRel) gave me the URL for ⑤ while I was stuck on the mainnet deploy. The key point: it is not an endpoint for connecting to the Midnight chain — it is loaded into Claude Code as a knowledge source. Accuracy on everything Compact changed at that moment.
midnight.expert や財団のMCPに触れたか? それとも文脈をゼロから自前で作ったか?Did he ever touch midnight.expert and/or use our MCP, or was he building his own context from scratch?
触れました。むしろ最重要ツールでした。 midnightntwrk-expert.fly.dev をMCPサーバーとしてClaude Codeに直接組み込んでいます。重要なのは、これはMidnightのチェーンに繋ぐURL(RPC)ではなく、Claude Codeに"知識源"として読み込ませるものだという点。Compactは一般的なAIの学習データにほとんど無いので、繋ぐ前は推測かドキュメント参照頼みでした。接続後はClaudeが正確な仕様を見ながらCompactを書けるようになり、精度が一変しました。
これはメインネットデプロイで詰まっていた時期に、木村さん(DevRel)からURLを教えてもらったものです。Claudeが「これはMCPサーバーなので直接組み込めます」と指摘してくれたので、.claude.json(Claude Code の設定ファイル)に追加しました。つまり構成は「自前の文脈(CLAUDE.md)」+「公式MCP(midnight.expert)」の両輪。どちらか片方では足りませんでした。
Yes — in fact it was the most important tool. I have midnightntwrk-expert.fly.dev wired into Claude Code directly as an MCP server. The important distinction: this is not a URL (RPC) for connecting to the Midnight chain — it is loaded into Claude Code as a knowledge source. Because Compact is barely present in mainstream AI training data, before connecting it I relied on guesses or doc lookups. After connecting it, Claude could write Compact while referencing the correct spec, and accuracy changed completely.
Kimura-san (DevRel) gave me the URL for this while I was stuck on the mainnet deploy. Claude pointed out that it was an MCP server and could be wired directly into Claude Code, so I added it to .claude.json (the Claude Code config file). So the setup was two wheels: my own context (CLAUDE.md) plus the official MCP (midnight.expert). Neither alone was enough.
詰まったとき、何をした? Discord?フォーラム?Claudeを待った?諦めて再試行?(人間の助けが必要だった場面はあったか、チャンネルは見つけやすかったか)When you got stuck, what did you do? Discord, the forum, wait for Claude, or give up and retry? (Did you ever need a human, and were our channels findable?)
順番としては ①Claude(チャット)で原因の仮説を立てる → ②Claude Codeで検証 → ③公式docs / kapa.ai で裏取り → ④それでも解けないものはGitHubのissue / improvement-proposalsで開発チームに直接質問、という流れでした。
人間が必要だったか: はい、明確に必要でした。ただし「使い方が分からない」系ではなく、チェーン側のバグ(自分では直せない種類)に当たったとき。cold-syncバグは #425/#436/servicedesk #52 で報告し、デプロイ主体の仕様は improvement-proposals#96 で議論しました。kapa.aiとMCPは"知識の壁"を、GitHubのissueは"バグの壁"を越えるのに効きました。
チャンネルの見つけやすさ: kapa.aiとGitHub issueは見つけやすく、記録が残り、コア開発者が直接反応してくれるので一番頼りになりました。正直、Discord/フォーラムはあまり使っていません。
そして一番正直に伝えたいこと: 私の最大の決定打だったCompact特化MCP(midnight.expert)は、自分では見つけられませんでした。 メインネットで詰まっていたまさにその時期に、木村さん(DevRel)が個人的に教えてくれて初めて辿り着いた。あれが無ければ私はCompactの壁の前で止まっていた可能性が高い。 ここが財団への一番のメッセージで ── この決定打は自力発見が難しいので、オンボーディングの最初から全員に配るべきです。
私は2026年4月22日の時点で、Discord(japan-chat)で公に、自分のような vibe coder 向けの "公式" Midnight MCP が欲しいと書いていました:
"I wish there was an official Midnight MCP for people like me who do vibe coding."— TAKU, 2026/04/22(japan-chat)。1週間後の4/29に "Thank you for creating the MCP server." と続けています。
つまり、皆さんが今「増やしたい」と言っているまさにその層(非エンジニア/vibe coder)の本人が、公式ツールが手に入る前から公にそれを求めていた。私は需要側として声は上げていた。でも自力では決定打に辿り着けず、最後はDevRelの個人的な共有で初めて届いた。結論は1つです ── 需要は実在する。あとは、それを最初から見つけられる形で配るだけ。
My usual flow: ① form a hypothesis about the cause with Claude (chat) → ② verify with Claude Code → ③ cross-check against the official docs / kapa.ai → ④ for anything still unsolved, ask the dev team directly via GitHub issues / improvement-proposals.
Did I ever need a human? Yes, clearly — but not for "how do I use this" questions. It was when I hit a chain-side bug (the kind I can't fix myself). I reported the cold-sync bug in #425/#436/servicedesk #52, and discussed deployment models in improvement-proposals#96. kapa.ai and the MCP cleared the "knowledge wall"; GitHub issues cleared the "bug wall."
On findability: kapa.ai and GitHub issues were easy to find, kept a record, and got direct responses from core developers, so they were what I relied on most. Honestly, I barely used Discord/the forum.
And the most honest thing I want to convey: my single biggest enabler — the Compact-specialized MCP (midnight.expert) — I could not find on my own. I only reached it because Kimura-san (DevRel) personally told me about it, right when I was stuck on mainnet. Without it, I would very likely have stalled at the Compact wall. That is my number-one message to the Foundation — this decisive tool is hard to discover on your own, so it should be handed to everyone from the very first step of onboarding.
As early as 2026-04-22, I had publicly written in Discord (japan-chat) that I wanted an "official" Midnight MCP for vibe coders like me:
"I wish there was an official Midnight MCP for people like me who do vibe coding."— TAKU, 2026/04/22 (japan-chat). A week later, on 4/29, I followed with "Thank you for creating the MCP server."
In other words, the very layer you now say you want to grow (non-engineers / vibe coders) was, in my person, publicly asking for the official tool before it was in hand. I raised my hand on the demand side — but couldn't reach the decisive tool on my own; it only arrived through a DevRel's personal share. There's one conclusion: the demand is real. What remains is simply to hand it out in a form people can find from the start.
Claudeがうまく扱えた部分と、動かない答えを返した部分は?(CompactがAI学習データから欠けている箇所を知る最良の材料。あなたの失敗が我々のロードマップ)Which parts did Claude handle well, and where did it give answers that did not work? His failures are our roadmap.
うまくやれた部分: TypeScript/Node側の実装は概ね完璧でした ── SDK呼び出し、ウォレット処理、LevelDB永続化、CI、Cloudflare Worker連携。「自分の言葉→技術仕様」への翻訳も非常に強い。
推測で外した部分(=Compact/Midnight固有でAI学習データに無いところ):
ledger-v8 を ^8.0.3 指定でも npm が 8.1.0 に引き上げ、共用 proof-server 8.0.3 と cross-version mismatch を起こす ── 8.0.3 にピン留めして解決)結論:根っこは全部「Compact+Midnight固有のSDK/インフラ知識がAIの学習データに無い」こと。一般的なWeb技術(TypeScript / Node / SDK呼び出し等)はClaudeがほぼ正確に実装できたのと対照的で、同じAIでも"学習データにあるか・無いか"で結果がここまで割れる。MCP接続で大幅に改善しましたが、最新の挙動や既知バグは依然 human / issue 頼みです。
Handled well: The TypeScript/Node side was nearly flawless — SDK calls, wallet handling, LevelDB persistence, CI, Cloudflare Worker integration. The translation from "my words → technical spec" is also very strong.
Got wrong by guessing (the Compact/Midnight-specific parts absent from training data):
ledger-v8: even with ^8.0.3 specified, npm resolved up to 8.1.0, causing a cross-version mismatch with the shared proof-server 8.0.3 — fixed by pinning to 8.0.3)Conclusion: the root of all of it is that Compact + Midnight-specific SDK/infra knowledge is missing from the AI's training data. This stands in contrast to mainstream web tech (TypeScript / Node / SDK calls), which Claude implemented almost perfectly — the same AI splits this sharply on "present vs. absent in training data." The MCP connection improved things dramatically, but the latest behavior and known bugs still depend on humans / issues.
ドキュメントで分かりにくかったのは? ほぼ諦めかけた瞬間はあったか?(満足度アンケートではなく、本当の「やめかけた瞬間」が知りたい)What was confusing in our documentation? Was there a moment you almost stopped? (We want the near-quit moment.)
ドキュメントで具体的に詰まった点:
lace-proof-pub.preprod… がNXDOMAIN、正しくは proof-server.preprod.midnight.network)。これを信じて環境構築で時間を溶かした。ほぼやめかけた瞬間: 一番精神的にきつかったのは cold-syncバグの追跡でした。preprodで同じ失敗(WASM unreachable)を、7回のsync runにわたって繰り返した。(技術的には、DustLocalState.replayEvents の unreachable はSDK内でリトライされる非致死エラーで、プロセスを殺した致死クラッシュは get utxos(CoinsAndBalances.js)側でした。replayEventsでskipされたイベント欠損がDust内部状態を壊し、その後のUTXO列挙でtrapしていた。)1回ごとに長い同期を待たされ、最後に毎回まったく同じ所で落ちる。自分のコードが悪いのか、チェーン側のバグなのかも切り分けられないまま、同じ暗闇を7回くぐった。「もう無理かもしれない」と何度も思いました。最終的に ledger側のバグと特定でき、#425/#436/#52 → midnight-ledger#587 に繋がりましたが、そこに辿り着くまでが本当に長かった。非エンジニアが一人だったら、まず間違いなくここで脱落していたと思います。
Where the documentation specifically tripped me up:
lace-proof-pub.preprod… is NXDOMAIN; the correct one is proof-server.preprod.midnight.network). I trusted it and lost time on setup.The moment I almost stopped: The hardest stretch mentally was tracking the cold-sync bug. On preprod I hit the same failure (WASM unreachable) across seven sync runs. (Technically, the DustLocalState.replayEvents unreachable was a non-fatal error retried inside the SDK; the fatal crash that killed the process was on the get utxos side (CoinsAndBalances.js). The events skipped in replayEvents corrupted the Dust internal state, which then trapped during UTXO enumeration.) Each run made me wait through a long sync, only to fail at the exact same point every time. With no way to tell whether it was my own code or a chain-side bug, I went through the same darkness seven times. I thought "maybe this is the end" more than once. It was eventually identified as a ledger-side bug, leading to #425/#436/#52 → midnight-ledger#587 — but getting there was genuinely long. If a non-engineer had been alone, I'm almost certain they would have dropped out here.
リポジトリかコントラクトを共有してもらえるか? エンジニアたちがプライバシーロジックのシンプルさに感心しており、許可をもらえれば教材として研究したい。Can you share the repo, or the contract? Our engineers were impressed by how simple the privacy logic is, and would like to study it as a teaching example.
前向きです。教材として共有するのは、コントラクトの .compact と回路設計だけを抜き出した教材用リポジトリで、2本のコントラクトを収録します。
① gyotak-catch(産地証明):正確なGPS座標は秘匿入力(witness)として受け取り、公開ステートには出しません。コントラクトが記録するのは座標そのものではなく、そのハッシュ(gpsHash)だけ。漁場のピンポイントを隠したまま、記録を改ざんできない形で固定する設計です。エリア名(region)は記録に添えるラベル。この catch 単体には「エリア内かどうかのレンジ証明」は入っていません(正直に申し添えます)。
② gyotak-komon:エンジニアの皆さんが見たい「座標を出さずに"申告エリアの範囲内である"ことだけを証明する」ZKレンジ証明は、こちらに実装済みです。witnessの座標に対して latMin ≤ lat ≤ latMax / lngMin ≤ lng ≤ lngMax を回路でassertし、公開されるのは「範囲内である」という真偽だけで座標値そのものは出ません。さらに privacyMode フラグ(0=秘匿/1=座標も公開)で2モードを切替でき、回路が値を強制するため「秘匿を主張しつつ実は公開」も「公開を主張しつつ実は秘匿」も不可能。レンジ証明は両モードで常に実行されます。
コントラクトアドレスは既に公開済みです(catch メインネット v2 5f87dd30…3741f7 / 防衛的公開 perma.cc/J9GD-MRE5 / 技術レポート gyotak-tr.pages.dev)。GYOTAKは元々「一次産業や製造業をはじめとする幅広い生産者が真似できるテンプレート」を目指しており、防衛的公開(ECOSUS-DP-2026-001)でもZKPの汎用クレームを押さえているので、対象は水産に限りません。教材化は趣旨に合致します。歓迎します。
なお、レンジ証明を catch の本番コントラクトに統合するのは、KOMONで設計を実証済みですが、第三者監査を通してから慎重に行う方針です。稼働中の本番コントラクトに未監査のZK回路をいきなり載せたくないため、順序として「設計実証(KOMON)→ 監査 → catch本番への統合」を取ります。動けば何でも本番に入れるのではなく、本番の変更は監査ゲートを通す ── という運用方針です(Q8の監査の件とも繋がります)。
本番リポジトリ全体は機密(価格ロジック・顧客DB・secret類)を含むため、共有するのは .compact と回路設計だけを抜き出した教材用リポジトリです。すでに Apache-2.0 で公開しています: github.com/ecosus-co/gyotak-compact-teaching
READMEに2コントラクトの役割、docs/ に回路設計(特に 03-komon-range-proof.md がレンジ証明+2モードの解説)、src/ に実コントラクトの .compact を収録しています。ご自由に研究・再利用ください。
KOMONの技術的な詳細は、オンチェーン層(レンジ証明+デュアルモード)を TR-2026-009、写真だけで個体の唯一性を識別する物理認証エンジンを TR-2026-010 にまとめています(後者は、QR・タグを貼らずに発泡スチロール箱やドリアンなどの個体を写真から見分ける仕組みで、一次産業への汎用化を見据えたものです)。
Happy to. What I'll share is a teaching repo containing only the contracts' .compact sources and circuit design — two contracts:
① gyotak-catch (provenance): the exact GPS coordinates are taken as a private witness and never written to public state. What the contract records is not the coordinates but only their hash (gpsHash) — keeping the precise fishing spot secret while fixing the record immutably. The region is stored as a label. This catch contract on its own does not include a range proof of region-membership (stated honestly).
② gyotak-komon: the part your engineers want to see — proving "the catch falls within the declared region" without revealing the coordinates — is implemented here. Against the witnessed coordinates, the circuit asserts latMin ≤ lat ≤ latMax / lngMin ≤ lng ≤ lngMax, and what's disclosed is only the boolean "inside the range" — never the coordinate values. It also offers two modes via a privacyMode flag (0 = shielded / 1 = coordinates also disclosed); because the circuit forces the values, it is impossible to claim "shielded" while actually revealing, or claim "disclosed" while actually hiding. The range proof runs in both modes.
The contract addresses are already public (catch mainnet v2 5f87dd30…3741f7 / defensive publication perma.cc/J9GD-MRE5 / technical report gyotak-tr.pages.dev). GYOTAK has always aimed to be a template that producers across primary industries, manufacturing, and beyond can copy — and the defensive publication (ECOSUS-DP-2026-001) secures generic ZKP claims, so the scope isn't limited to seafood. Turning it into teaching material fits the intent. Welcome.
One thing on sequencing: the design is proven in KOMON, but integrating the range proof into the live catch contract is something I intend to do only after a third-party audit. I don't want to push an unaudited ZK circuit onto a production contract that's already running, so the order is prove the design (KOMON) → audit → integrate into live catch. The principle is that "it works" is not enough to ship to production — changes to production go through an audit gate (this ties back to the audit point in Q8).
Since the full production repo contains confidential material (pricing logic, customer DB, secrets), what I'm sharing is a teaching repo with only the .compact sources and circuit design. It's already published under Apache-2.0: github.com/ecosus-co/gyotak-compact-teaching
The README explains the two contracts' roles, docs/ covers the circuit design (notably 03-komon-range-proof.md for the range proof + two modes), and src/ holds the actual contract .compact files. Please feel free to study and reuse it.
For the technical detail of KOMON, the on-chain layer (range proof + dual-mode privacy) is written up in TR-2026-009, and the photo-only physical authentication engine in TR-2026-010 (the latter identifies an individual item — an EPS foam box, or produce such as durian — from a photo alone, with no QR or tag, aiming to generalize provenance to primary industry).
AI生成コードは、実際の価値を通す前に監査すべきだと誰かに言われたか?(守りの質問)Did anyone tell you the AI-generated code should be audited before running real value through it? (The protective question.)
木村さん、ご指摘ありがとうございます。おっしゃる通りで、大事な点だと受け止めています。正直に申し上げると、第三者による正式な監査は受けていません。 自分とClaudeでレビューしながら作った範囲です。
補足として、GYOTAKのMidnightコントラクトは産地・温度などのデータを"記録"する契約で、資金を保管・送金するものではないため、資産が盗まれる種類のリスクは低いと考えています。ただ、回路にバグがあれば誤ったデータが残ること、産地証明の信頼性に関わることは理解しています。
もしお手数でなければ、コントラクトのCompact回路部分を一度どなたかに見ていただけると、こちらとしても安心できます。 ご相談させていただければ幸いです。
Kimura-san, thank you for raising this. You're right, and I take it as an important point. To be honest, I have not had a formal third-party audit — it has been reviewed by me and Claude.
For context, GYOTAK's Midnight contracts record data such as origin and temperature; they don't custody or transfer funds, so I believe the "assets getting stolen" class of risk is low. That said, I do understand that a bug in a circuit could leave incorrect data, and that this bears on the credibility of the origin proof itself.
If it's not too much trouble, having someone look over the Compact circuit part of the contract once would give me real peace of mind. I'd be grateful for the chance to consult with you on it.
補足:知財方針についてA note on our intellectual-property stance
共有や教材化に前向きなのは、知財を放棄しているからではなく、知財を理解した上で意図的に開放しているからです。その点だけ明確にお伝えしておきます。
GYOTAKで用いているZKP手法は、防衛的公開 ECOSUS-DP-2026-001(7つのZKPクレームを含む)として既に prior art を確立済みで、Harvard Library に perma.cc(perma.cc/J9GD-MRE5)でアーカイブされています。狙いは特定の主体によるこれらの手法の特許囲い込みを防ぎ、誰でも自由に使える状態を保つこと。教材リポジトリを Apache-2.0(特許条項つき)で出すのも同じ理由です。
つまり、研究・再現・教材化を歓迎するのは無防備な丸投げではなく、prior art と適切なライセンスで土台を固めた上での開放です。これは財団側にとっても、安心して教材として扱える状態だと考えています。
I want to be clear on one point: my openness to sharing and to teaching use is not because I'm giving up on IP — it's because I understand it and am opening it deliberately.
The ZKP techniques used in GYOTAK already have established prior art via a defensive publication, ECOSUS-DP-2026-001 (covering seven ZKP claims), archived at Harvard Library through perma.cc (perma.cc/J9GD-MRE5). The intent is to prevent any single party from patent-fencing these techniques, and to keep them freely usable by anyone. Releasing the teaching repo under Apache-2.0 (with its patent grant) is part of the same posture.
So when I welcome study, reproduction, and teaching use, it is not an unguarded hand-off — it's a deliberate opening built on prior art and an appropriate license. I believe that also makes it something the Foundation can use as teaching material with confidence.
この回答書も、ここで説明した方法そのもので作られています。Claude(チャット)が構成と下書きを担当し、私が最終判断を下し、そして記載した手順や数値に間違いがないかを、Claude Code側のプロジェクト記憶(CLAUDE.md・git履歴・デプロイ記録)と照合して事実確認しています。This document was produced by the very method it describes. Claude (chat) handled the structure and drafting, I made the final decisions, and the procedures and figures stated here are fact-checked against the project's own memory on the Claude Code side (CLAUDE.md, git history, deploy records).
私の作業環境は2つに分かれていて、Midnight関連はLinux(WSL2)のClaude Code、Cloudflare/Worker関連はWindowsのClaude Codeが担当しています。そのため、それぞれにこの文書の該当箇所を検証させ、食い違いがあれば直してから提出しています。My environment is split in two — Midnight work runs on Claude Code under Linux (WSL2), and the Cloudflare/Worker side on Claude Code under Windows. Each side verifies the relevant parts of this document, and any discrepancy is corrected before submission.
実際、この回答書を仕上げる過程でも、両方のClaude CodeにこのHTMLファイルを直接読ませ、「記載した手順・コントラクトアドレス・バグの経緯が、プロジェクトの実記録(CLAUDE.md・git履歴・.compact・デプロイログ)と一致するか」を読み取り専用で突き合わせ検証しました。Cloudflare/Worker側は事実誤認ゼロで、時系列("商売の土台が先、Midnightが後")もgit履歴で裏取りできています。Midnight側も実記録と突き合わせ、数点を事実に合わせて修正しました(メインネットデプロイの真因=公開RPCがtxをdropしていた/設定ファイルは .claude.json/ライブラリ版数 ledger-v8)。コントラクトアドレスやblock番号は実デプロイ記録と一致を確認済みです。チャット側のClaudeが私の記憶から下書きを作り、Claude Code側が現場の記録で裏取りし、私が最終確認する。この往復で事実を固めてから皆さんにお出ししています。In fact, while finalizing this document, I had both Claude Code instances read this HTML file directly and verify (read-only) whether the procedures, contract addresses, and bug histories stated here match the project's actual records (CLAUDE.md, git history, .compact files, deploy logs). The Cloudflare/Worker side came back with zero factual errors, and the timeline ("the commerce foundation first, Midnight second") is corroborated by the git history. The Midnight side was cross-checked against the actual records too, and several points were corrected to match the facts (the real cause of the mainnet-deploy stall = the public RPC dropping the tx; the config file is .claude.json; the ledger-v8 library version). Contract addresses and block numbers were confirmed against the real deploy records. The chat-side Claude drafts from my memory, the Claude Code side cross-checks against the on-the-ground records, and I make the final call. I lock down the facts through that loop before sending it to you.
つまり、皆さんが今読んでいるこの回答そのものが、回答の中で説明している"型"の実物です。In other words, the very response you are reading is a working specimen of the method it describes.