TR-2026-010
gyotak-komon
Physical Authentication Engine — One-of-a-Kind from a Photo
物理認証エンジン — 写真だけで「世界に一つ」を見分ける
เอนจินยืนยันตัวตนเชิงกายภาพ — หนึ่งเดียวจากรูปภาพ
Identify a physical item from the unclonable grain/skin pattern in a single photo — no QR, no tag · Client-side · 2026-06
複製不可能な粒・表皮の模様を1枚の写真から識別する — QRもタグも不要 · クライアントサイド · 2026年6月
ระบุวัตถุจากลายเม็ด/ผิวที่ลอกเลียนไม่ได้ด้วยรูปเดียว — ไม่ต้องมี QR หรือแท็ก · ฝั่งไคลเอนต์ · มิ.ย. 2569
✓ Implemented (client-side)実装済み(クライアントサイド)ใช้งานได้แล้ว (ฝั่งไคลเอนต์)
Abstract / 要旨 / บทคัดย่อ
This report documents the implemented physical-authentication engine behind
gyotak-komon. A single photo of a physically unclonable surface — the bead/grain pattern of an EPS foam box, or the skin of produce such as durian — is turned into a feature fingerprint using ORB, and an item is identified by matching against a local ledger. The aim is QR/tag-free authenticity: the object itself is the label. The engine runs entirely client-side (offline, in-browser, stored in IndexedDB). This report covers what is implemented today; the on-chain layer (range proof + dual-mode privacy) is reported separately in
TR-2026-009, and wiring the two together — plus a ship⇋receive two-point transport proof — is described here as designed-but-not-yet-implemented future work.
本報告書は、
gyotak-komon を支える実装済みの物理認証エンジンを記録する。物理的に複製不可能な表面 — 発泡スチロール箱のビーズ(粒)模様や、ドリアンなど農産物の表皮 — を1枚の写真から ORB で特徴指紋に変換し、ローカル台帳との照合で個体を識別する。狙いは QR/タグを使わない真正性 — モノ自身がラベルである。エンジンは完全にクライアントサイド(オフライン、ブラウザ内、IndexedDB 保存)で動作する。本書は「現在実装されているもの」を扱う。オンチェーン層(レンジ証明+デュアルモード)は
TR-2026-009 で別途報告しており、両者の接続、および出荷⇋受取の2点輸送証明は、本書では「設計済み・未実装の今後の作業」として記す。
รายงานนี้บันทึกเอนจินยืนยันตัวตนเชิงกายภาพที่ใช้งานได้แล้วเบื้องหลัง
gyotak-komon รูปภาพเดียวของพื้นผิวที่ลอกเลียนไม่ได้ — ลายเม็ดของกล่องโฟม EPS หรือผิวของผลผลิตเช่นทุเรียน — ถูกแปลงเป็นลายนิ้วมือคุณลักษณะด้วย ORB และระบุวัตถุโดยเทียบกับบัญชีในเครื่อง เป้าหมายคือความแท้จริงโดยไม่ใช้ QR/แท็ก — วัตถุเองคือป้าย เอนจินทำงานฝั่งไคลเอนต์ทั้งหมด (ออฟไลน์ ในเบราว์เซอร์ เก็บใน IndexedDB) รายงานนี้ครอบคลุมสิ่งที่ใช้งานได้วันนี้; ชั้นบนเชน (range proof + ความเป็นส่วนตัวสองโหมด) อยู่ใน
TR-2026-009 การเชื่อมทั้งสองและการพิสูจน์การขนส่งสองจุด (ส่ง⇋รับ) เป็นงานที่ออกแบบแล้วแต่ยังไม่ทำ
0. Background & Motivation
0. 背景と動機
0. ที่มาและแรงจูงใจ
Tags, stickers and QR codes can be peeled, copied, or re-applied — so they can be swapped. A physical object's own micro-texture cannot. EPS foam is made of fused beads whose surface arrangement is never reproducible; produce skins are similarly unique. KOMON treats that texture as a fingerprint, so a thing can prove it is itself with nothing to forge. The first target is logistics anti-swap (the box that arrives is the box that shipped); the broader goal is to bring photo-only provenance to primary industry — from foam boxes to produce such as durian.
タグ・シール・QRコードは、剥がせる/複製できる/貼り替えられる — だからすり替えが効く。モノ自身のミクロな表面模様はそれができない。発泡スチロールは融着したビーズ(粒)でできており、その表面の並びは二度と再現できない。農産物の表皮も同様に唯一。KOMONはその模様を指紋として扱い、偽造する対象が無い形で「自分自身であること」を証明させる。最初の狙いは物流のすり替え防止(届いた箱=出荷した箱)、その先の目標は写真だけの産地証明を一次産業へ広げること — 発泡スチロール箱から、ドリアンなどの農産物まで。
แท็ก สติกเกอร์ และ QR ลอก คัดลอก หรือติดใหม่ได้ — จึงสับเปลี่ยนได้ แต่พื้นผิวจุลภาคของวัตถุเองทำไม่ได้ โฟม EPS ทำจากเม็ดที่หลอมรวมซึ่งการเรียงตัวบนผิวไม่อาจสร้างซ้ำได้; ผิวผลผลิตก็มีหนึ่งเดียวเช่นกัน KOMON ใช้ลายนี้เป็นลายนิ้วมือ วัตถุจึงพิสูจน์ตัวเองได้โดยไม่มีอะไรให้ปลอม เป้าหมายแรกคือกันการสับเปลี่ยนในโลจิสติกส์ (กล่องที่มาถึง=กล่องที่ส่ง) เป้าหมายกว้างกว่าคือขยายการพิสูจน์แหล่งกำเนิดด้วยรูปสู่ภาคปฐมภูมิ — จากกล่องโฟมถึงผลผลิตเช่นทุเรียน
1. Capture Protocol
1. 撮影プロトコル
1. โปรโตคอลการถ่ายภาพ
| Parameter項目พารามิเตอร์ |
Value値ค่า |
| Guide frameガイド枠กรอบนำ | On-screen reticle, ~5 cm square target画面のレチクル枠、5cm角めやすกรอบเรติเคิลบนจอ ~5 ซม. |
| Cameraカメラกล้อง | Rear camera (capture="environment") |
| Aspectアスペクト比อัตราส่วน | 4:3 |
| Quality cue品質めやすเกณฑ์คุณภาพ | ≥ 40 keypoints shows “✓”特徴点40以上で「✓」จุดสำคัญ ≥ 40 แสดง “✓” |
| Material presets素材プリセットวัสดุ | generic (foam lid / printed / wood grain), eps (bead valley lines), durian (spike surface)generic=蓋・印刷面・木目, eps=ビーズ谷線, durian=トゲ表面generic, eps, durian |
| Image downscale縮小ลดขนาด | max 1000 px (MAXDIM=1000) |
A specific “photograph this exact spot on the box” instruction is not enforced; the guidance is to capture the same part at a similar distance.
「箱のこの箇所を撮れ」という厳密な撮影箇所指定は設けていない。案内は「同じ部位・距離で撮る」こと。
ไม่ได้บังคับ “ถ่ายจุดนี้บนกล่อง” อย่างเจาะจง คำแนะนำคือถ่ายส่วนเดิมที่ระยะใกล้เคียงกัน
2. Fingerprint Pipeline
2. 指紋生成パイプライン
2. ไปป์ไลน์ลายนิ้วมือ
| Stage段階ขั้น |
Processing処理การประมวลผล |
| Grayscaleグレースケールเกรย์สเกล | RGBA → gray |
| Contrastコントラストคอนทราสต์ | CLAHE, clipLimit 3.0, tile 8×8 |
| Features特徴抽出สกัดคุณลักษณะ | ORB — nFeatures 1500, scaleFactor 1.2, nlevels 8, edgeThreshold 15, WTA_K 2, scoreType HARRIS_SCORE, patchSize 31, fastThreshold 7 |
| Output出力เอาต์พุต | Keypoints + 32-byte binary descriptorsキーポイント+32バイト記述子คีย์พอยต์ + descriptor 32 ไบต์ |
| Photo hash写真ハッシュแฮชรูป | SHA-256 of the raw image (Web Crypto) |
NOTE注記หมายเหตุ —
the per-item on-chain commitment komonCommit (Bytes<32>) is NOT generated yet: there is no descriptor→32-byte hash step in the current app. Today the app stores photoHash (SHA-256) and the raw ORB data locally; komonCommit generation is future work (see §6).
オンチェーン用の個体コミット komonCommit(Bytes<32>)はまだ生成していない:現アプリに「記述子→32バイトハッシュ」の処理は無い。現状は photoHash(SHA-256)と生のORBデータをローカル保存するのみ。komonCommit 生成は今後の作業(§6参照)。
komonCommit (Bytes<32>) สำหรับบนเชนยังไม่ถูกสร้าง: แอปปัจจุบันไม่มีขั้นตอน descriptor→hash 32 ไบต์ ตอนนี้เก็บ photoHash (SHA-256) และข้อมูล ORB ดิบในเครื่องเท่านั้น การสร้าง komonCommit เป็นงานในอนาคต (ดู §6)
3. Matching & Identity Decision
3. 照合と同一判定
3. การจับคู่และตัดสินตัวตน
Two fingerprints are compared with a Brute-Force matcher (NORM_HAMMING), k-NN (k=2), Lowe’s ratio test (0.75), then RANSAC homography (reprojection threshold 6.0 px). The score is inliers / min(keypointsA, keypointsB). A query is matched 1-to-N against every registered item in the local ledger, and the highest-scoring item is returned.
2つの指紋を Brute-Force マッチャー(NORM_HAMMING)、k-NN(k=2)、Lowe's ratio test(0.75)、続いて RANSAC ホモグラフィ(再投影閾値 6.0px)で照合する。スコアは inliers / min(キーポイントA, キーポイントB)。クエリはローカル台帳の全登録個体に対し1対Nで照合し、最高スコアの個体を返す。
เปรียบเทียบลายนิ้วมือสองชุดด้วย Brute-Force matcher (NORM_HAMMING), k-NN (k=2), Lowe's ratio test (0.75) แล้ว RANSAC homography (เกณฑ์ 6.0 px) คะแนน = inliers / min(คีย์พอยต์A, คีย์พอยต์B) เทียบแบบ 1 ต่อ N กับทุกชิ้นในบัญชีในเครื่อง คืนชิ้นที่คะแนนสูงสุด
| Parameter項目พารามิเตอร์ |
Value値ค่า |
| Same-individual threshold同一個体の閾値เกณฑ์เดียวกัน | score ≥ 0.13 (all materials)(全素材共通)(ทุกวัสดุ) |
| Min keypoints最小キーポイントคีย์พอยต์ขั้นต่ำ | both sides ≥ 8, else score 0両側8以上、未満ならスコア0ทั้งสองฝั่ง ≥ 8 ไม่งั้นคะแนน 0 |
The 0.13 threshold is a working experimental value applied uniformly across materials; it has not been tuned per material or validated on a large dataset.
0.13 という閾値は全素材一律に適用している実験的な作業値であり、素材ごとの調整や大規模データでの検証は行っていない。
เกณฑ์ 0.13 เป็นค่าทดลองที่ใช้เท่ากันทุกวัสดุ ยังไม่ได้ปรับตามวัสดุหรือทดสอบกับชุดข้อมูลขนาดใหญ่
4. Identifier & Storage
4. 識別子と保存
4. ตัวระบุและการจัดเก็บ
Each registered item gets an ID of the form KMN-XXXXXXXX (8 chars from a 31-symbol alphabet excluding 0/1/I/O — about 318 ≈ 8.5×1011 combinations; generated with Math.random, no UUID). All data — IDs, ORB descriptors, photo hashes, optional GPS — is stored locally in IndexedDB. The engine runs fully offline; nothing is sent to a server or a chain.
登録個体には KMN-XXXXXXXX 形式のID(誤読しやすい0/1/I/Oを除く31文字種から8文字、約318≈8.5×1011通り。Math.random生成、UUIDは未使用)を発番する。ID・ORB記述子・写真ハッシュ・任意のGPSはすべて IndexedDB にローカル保存。エンジンは完全オフラインで動作し、サーバーにもチェーンにも何も送信しない。
แต่ละชิ้นได้ ID รูปแบบ KMN-XXXXXXXX (8 ตัวจากอักษร 31 ตัว ตัด 0/1/I/O — ราว 318 ≈ 8.5×1011 แบบ; สร้างด้วย Math.random ไม่ใช้ UUID) ข้อมูลทั้งหมด — ID, descriptor ORB, แฮชรูป, GPS (ถ้ามี) — เก็บใน IndexedDB ในเครื่อง ทำงานออฟไลน์เต็มรูปแบบ ไม่ส่งไปเซิร์ฟเวอร์หรือเชน
5. Intended Use
5. 想定用途
5. การใช้งานที่ตั้งใจ
- Logistics anti-swap: register the box at origin, verify it at destination — the arriving box proves it is the shipped box.
- Provenance: combine the physical fingerprint with the on-chain region range proof (TR-2026-009) so a one-of-a-kind item also carries a verifiable origin.
- Primary-industry generalization: the same photo-only method extends from EPS boxes to agricultural produce such as durian.
- 物流すり替え防止:出荷拠点で箱を登録し、受取拠点で照合する — 届いた箱が「出荷した箱」であることを証明する。
- 産地証明:物理指紋を、オンチェーンのエリア・レンジ証明(TR-2026-009)と組み合わせ、唯一無二の個体に検証可能な産地を付与する。
- 一次産業への汎用化:同じ「写真だけ」の方式を、発泡スチロール箱からドリアンなどの農産物へ広げる。
- กันสับเปลี่ยนในโลจิสติกส์: ลงทะเบียนกล่องที่ต้นทาง ตรวจที่ปลายทาง — กล่องที่มาถึงพิสูจน์ว่าคือกล่องที่ส่ง
- พิสูจน์แหล่งกำเนิด: รวมลายนิ้วมือกายภาพกับ range proof บนเชน (TR-2026-009) ให้วัตถุหนึ่งเดียวมีแหล่งกำเนิดที่ตรวจสอบได้
- ขยายสู่ภาคปฐมภูมิ: วิธี “รูปอย่างเดียว” เดียวกันขยายจากกล่อง EPS สู่ผลผลิตเช่นทุเรียน
6. Scope & Limitations
6. 適用範囲と限界
6. ขอบเขตและข้อจำกัด
- Implemented today: ORB fingerprinting, 1-to-N matching, the 0.13 identity threshold, capture guidance, SHA-256 photo hash, KMN-ID issuance, fully offline IndexedDB storage.
- NOT yet implemented: generation of the on-chain
komonCommit (Bytes<32>) from ORB descriptors.
- NOT yet implemented: any on-chain submission — there is no call to gyotak-komon’s
recordKomon; the app is fully client-side/offline.
- NOT yet implemented: a dedicated ship⇋receive two-point transport proof (no ship/receive modes, no two-point timestamp/GPS comparison); anti-swap is operated manually for now.
- The 0.13 threshold is experimental and uniform across materials; not tuned or validated at scale.
- ID uses
Math.random (no UUID); collision space is large (~8.5×1011) but not cryptographically guaranteed unique.
- Coordinate encoding (
round(deg×1e7)+231) is not implemented in the app; it lives in the contract layer (TR-2026-009).
- 実装済み:ORB指紋生成、1対N照合、同一判定閾値0.13、撮影ガイド、写真ハッシュ(SHA-256)、KMN-ID発番、完全オフラインのIndexedDB保存。
- 未実装:ORB記述子からのオンチェーン用
komonCommit(Bytes<32>)生成。
- 未実装:オンチェーン送信全般 — gyotak-komon の
recordKomon を呼ぶ処理は無い。アプリは完全にクライアント側/オフライン。
- 未実装:出荷⇋受取の専用2点輸送証明(出荷/受取モードも、2地点のタイムスタンプ・GPS比較も無い)。すり替え防止は現状は運用で行う。
- 閾値0.13は実験値で全素材一律。大規模な調整・検証は未実施。
- IDは
Math.random 生成(UUID不使用)。衝突空間は大きい(約8.5×1011)が暗号的な一意性保証ではない。
- 座標エンコード(
round(度×1e7)+231)はアプリ側に未実装。コントラクト層(TR-2026-009)にある。
- ใช้งานได้แล้ว: ลายนิ้วมือ ORB, จับคู่ 1 ต่อ N, เกณฑ์ 0.13, คำแนะนำการถ่าย, แฮชรูป SHA-256, ออก KMN-ID, เก็บใน IndexedDB ออฟไลน์เต็มรูปแบบ
- ยังไม่ทำ: สร้าง
komonCommit (Bytes<32>) จาก descriptor ORB
- ยังไม่ทำ: การส่งขึ้นเชนใด ๆ — ไม่มีการเรียก
recordKomon; แอปเป็นฝั่งไคลเอนต์/ออฟไลน์ทั้งหมด
- ยังไม่ทำ: การพิสูจน์ขนส่งสองจุด ส่ง⇋รับ โดยเฉพาะ (ไม่มีโหมดส่ง/รับ ไม่มีการเทียบเวลา/GPS สองจุด); กันสับเปลี่ยนทำด้วยมือก่อน
- เกณฑ์ 0.13 เป็นค่าทดลองและเท่ากันทุกวัสดุ ยังไม่ปรับ/ตรวจระดับใหญ่
- ID ใช้
Math.random (ไม่ใช้ UUID); พื้นที่ชนกันใหญ่ (~8.5×1011) แต่ไม่รับประกันเอกลักษณ์เชิงรหัส
- การเข้ารหัสพิกัด (
round(องศา×1e7)+231) ไม่ได้อยู่ในแอป อยู่ในชั้นคอนแทรกต์ (TR-2026-009)
7. Design Philosophy
7. 設計哲学
7. ปรัชญาการออกแบบ
"The object is its own label. If a thing's own surface is unforgeable, you don't need a tag to trust it — you need a photo. KOMON turns that idea into a tool a phone can run, with no chain and no account required to start."
「モノ自身がラベルである。モノの表面そのものが偽造不可能なら、信頼するのにタグは要らない — 要るのは1枚の写真だ。KOMONはその考えを、チェーンもアカウントも無しで始められる、スマホで動く道具にした。」
"วัตถุคือป้ายของตัวมันเอง ถ้าพื้นผิวของสิ่งของปลอมไม่ได้ คุณไม่ต้องมีแท็กเพื่อเชื่อ — คุณต้องการแค่รูป KOMON เปลี่ยนแนวคิดนี้เป็นเครื่องมือที่โทรศัพท์รันได้ โดยไม่ต้องมีเชนหรือบัญชีเพื่อเริ่ม"
8. GYOTAK Protocol Layers
8. GYOTAKプロトコルレイヤー
8. GYOTAK Protocol Layers
Layer 1
gyotak-catch
Provenance ZKP (origin commitment)産地証明ZKPZKP พิสูจน์แหล่งกำเนิด
✓ Mainnet
Layer 1+
gyotak-komon (on-chain)
Region range proof + dual-mode privacyエリアレンジ証明+デュアルモードRange proof + ความเป็นส่วนตัวสองโหมด
Layer 1+
gyotak-komon (physical)
Photo-only PUF authentication engine (this report)写真だけのPUF認証エンジン(本報告書)เอนจิน PUF ด้วยรูปอย่างเดียว (รายงานนี้)
✓ Implemented · client-side実装済み・クライアント側ใช้งานได้ · ฝั่งไคลเอนต์
Layer 2
gyotak-temp-log
Storage temp + quick-freeze ZKP保管温度・急速冷凍ZKPZKP อุณหภูมิ
✓ Preprod → Mainnet
Layer 3
gyotak-ratio-log
Formula ratio compliance ZKP配合比率適合ZKPZKP สัดส่วนสูตร
✓ Preprod
Settlement
gyotak-x402
AI-agent round-trip settlementAIエージェント往復決済การชำระเงินไป-กลับ
✓ Preprod · Cardano
Layer 4+
gyotak-transit
Transport route verification輸送経路検証การยืนยันเส้นทาง
Planned計画中วางแผน
9. Archive Metadata
9. アーカイブメタデータ
9. Metadata
| Fieldフィールドฟิลด์ |
Value値ค่า |
| Document ID | ECOSUS-TR-2026-010 |
| Prior Report先行報告รายงานก่อน |
TR-2026-009 · gyotak-komon (on-chain range proof) |
| Related関連ที่เกี่ยวข้อง |
Teaching repo (Apache-2.0)教材リポ (Apache-2.0)Repo สอน (Apache-2.0) · github.com/ecosus-co/gyotak-compact-teaching |
| Author著者ผู้เขียน |
Takuya Ogura, Chairman, ECOSUS CO., LTD. |
| Organization組織องค์กร |
ECOSUS CO., LTD. · 0205562030631 · Pranburi, Thailand |
| Report date報告日วันที่ |
June 2026 |
| Layer | Physical PUF authentication (client-side)物理PUF認証(クライアント側)ยืนยัน PUF กายภาพ (ฝั่งไคลเอนต์) |
| Licenseライセンスใบอนุญาต |
CC BY 4.0 |