ภาพรวมสถาปัตยกรรม
โครงสร้างหกชั้น
┌──────────────────────────────────────────────────────────┐
│ L0 — Telegram Bot API │
│ • เฟรมเวิร์กบอท (Telegraf, Node) │
│ • ส่วนติดต่อผู้ใช้ WebApp (Next.js, TON Connect) │
│ • คีย์บอร์ดแบบอินไลน์ + การเปิด WebApp │
├──────────────────────────────────────────────────────────┤
│ L1 — Round Engine (เอนจินรอบ) │
│ • FSM แบบกำหนดตายตัว (Go) │
│ • เฟส: ประกาศ → Commit (คอมมิต) → Reveal (เปิดเผย) → Settle (ชำระ) │
│ • การตรวจสอบ Commit-Reveal │
│ • การสร้าง Merkle Root (รากเมอร์เคิล) │
├──────────────────────────────────────────────────────────┤
│ L2 — Oracle Aggregator (ตัวรวบรวมออราเคิล) │
│ • คลังคำถาม (Postgres + IPFS) │
│ • ท่อส่งโมเดล LLM แบบรวม (Claude + GPT + Gemini) │
│ • ตัวลดอคติเชิงปรปักษ์ │
│ • ตัวดึงสัญญาณ DRAND │
│ • การสำรวจ TON-VRF │
├──────────────────────────────────────────────────────────┤
│ L3 — Identity Layer (ชั้นระบุตัวตน) │
│ • เครื่องสถานะ Trust Ladder (บันไดความเชื่อถือ) L0–L7 │
│ • ตัวปรับต่อ Worldcoin / PoH / Gitcoin Passport │
│ • การเชื่อมต่อผู้ให้บริการ KYC (Sumsub) │
│ • ตัวอัปเดต Reputation Score (คะแนนชื่อเสียง) แบบเบย์เซียน │
├──────────────────────────────────────────────────────────┤
│ L4 — Ad-Revenue Settlement (การชำระรายได้โฆษณา) │
│ • AdMob SDK (มือถือ + WebApp) │
│ • Telegram Ads SDK │
│ • ตัวรับ callback AdMob SSV │
│ • ตัวพิสูจน์ zk-SNARK (SP1, เฟส 2) │
├──────────────────────────────────────────────────────────┤
│ L5 — TON Settlement (การชำระบน TON) │
│ • สัญญา Jetton $POP (FunC) │
│ • สัญญาห่อ Vesting (การทยอยรับ) │
│ • สัญญาคอมมิต Merkle Root ของ Round │
│ • สัญญาแก้ไขข้อพิพาท │
│ • สัญญาการกำกับดูแล DAO (เฟส 3) │
└──────────────────────────────────────────────────────────┘การไหลของข้อมูล
ผู้ใช้แตะ "เล่น" ใน Telegram
↓
L0: WebApp เปิดขึ้น, ขอเข้า Round
↓
L4: แสดงโฆษณา (AdMob), รอ callback SSV
↓
L4: SSV ถูกตรวจสอบ → ออกเครดิต POP
↓
L1: ผู้ใช้ได้รับคำถามของ Round (จาก L2)
↓
L1: ผู้ใช้คอมมิต c_i ในช่วง Commit
↓
L1: ผู้ใช้เปิดเผย (s_i, b_i) ในช่วง Reveal
↓
L1: Round Engine คำนวณเสียงข้างมาก, สร้าง Merkle Root
↓
L3: น้ำหนักที่ใช้จริง = α × r_i ถูกนำมาใช้
↓
L1: Prize Pool (กองทุนรางวัล) ถูกแจกจ่ายให้ผู้รอดชีวิต
↓
L5: Merkle Root ถูกคอมมิตไปยัง TON (รวมเป็นชุดทุก 24 ชม.)
↓
ผู้ใช้เห็นเครดิต POP + ผลลัพธ์ Round ใน WebAppงบประมาณเวลาแฝง
| เฟส | เป้าหมาย | จริง (P50) | จริง (P95) |
|---|---|---|---|
| ประกาศ | 5 วินาที | 4.2 วินาที | 4.8 วินาที |
| Commit | 30 วินาที | 29.5 วินาที | 30 วินาที |
| Reveal | 15 วินาที | 14.7 วินาที | 15 วินาที |
| Settle | 10 วินาที | 7.3 วินาที | 9.8 วินาที |
| รวม Round | 60 วินาที | 55.7 วินาที | 59.6 วินาที |
เฟส Settle รวมการสร้างและตรวจสอบ Merkle Root; การคอมมิตบนเชน TON จะถูกแยกเป็นชุดทุก 24 ชั่วโมง
โครงสร้างพื้นฐาน
- โฮสติ้ง: Cloudflare Workers + R2 + KV (กระจายที่ขอบ, เวลาแฝงต่ำ)
- ฐานข้อมูล: Postgres (หลัก), Redis (สถานะ Round, ชั่วคราว), R2 (สิ่งประดิษฐ์ของ Round, เก็บถาวร)
- Round Engine: ไบนารี Go แบบไร้สถานะ; ขยายแนวนอนได้หลัง anycast ของ Cloudflare
- TON Client: ton-core SDK; การเชื่อมต่อโหนดเต็มผ่าน TonAPI Cloud
- การสังเกตการณ์: OpenTelemetry → Grafana Cloud; Sentry สำหรับข้อผิดพลาดฝั่งไคลเอ็นต์
ส่วนประกอบโอเพนซอร์ส
- Round Engine: MIT,
github.com/cashpop-protocol/round-engine - WebApp: MIT,
github.com/cashpop-protocol/webapp - สัญญาอัจฉริยะ (หลัง TGE): MIT,
github.com/cashpop-protocol/contracts - ท่อสร้างคลังคำถาม: แหล่งเปิด,
github.com/cashpop-protocol/reservoir
สแต็ก CashPop ทั้งหมดจะสามารถโฮสต์เองได้หลัง TGE: ผู้ดำเนินการใดๆ สามารถเปิดอินสแตนซ์แยกได้ แต่ไม่สามารถออก $POP โดยไม่ได้รับการอนุมัติจาก DAO