สัญญาอัจฉริยะ
สัญญาทั้งหมดบนเครือข่ายจะถูกปรับใช้ ณ ช่วงเวลา TGE (Q1–Q2 2027) ก่อน TGE หน้านี้เป็นข้อกำหนดที่มองไปข้างหน้า
ชุดสัญญา
| สัญญา | เครือข่าย | วัตถุประสงค์ |
|---|---|---|
POP_Jetton | TON | โทเค็น $POP (ตามมาตรฐาน TEP-74 Jetton) |
POP_Vesting | TON | ตัวห่อหุ้มการทยอยรับสิทธิ์แบบแบ่งกลุ่ม บังคับใช้ Cliff (ช่วงล็อก) + การปล่อยแบบเส้นตรง |
Round_Merkle_Registry | TON | จัดเก็บ Merkle Root (รากเมอร์เคิล) ของแต่ละ Round (รอบ) รองรับการตรวจสอบหลักฐาน |
Dispute_Resolver | TON | หน้าต่างข้อพิพาท 24 ชั่วโมง หักเงินผู้ดำเนินการเมื่อมีการท้าทายที่ถูกต้อง |
Treasury | TON | การจ่ายเงินกองทุนที่ควบคุมโดย DAO |
Governance | TON | ระบบการลงคะแนนแบบ Quadratic Voting (การลงคะแนนแบบกำลังสอง) + ระบบข้อเสนอที่ถ่วงน้ำหนักด้วยชื่อเสียง |
Burn_Address | TON | รับ $POP จากการเผาค่าธรรมเนียม ไม่สามารถใช้จ่ายได้อย่างตรวจสอบได้ |
Ad_Settlement_Verifier | TON | ตัวตรวจสอบ Groth16 สำหรับการรับชมโฆษณาที่รับรองด้วย zk (ระยะที่ 2) |
ข้อกำหนดของ Jetton $POP
- มาตรฐาน: TEP-74 (TON Jetton)
- ข้อมูลเมตา: TEP-64 ข้อมูลเมตาบนเครือข่าย
- ชื่อ: CashPop
- สัญลักษณ์: $POP
- ทศนิยม: 9 (สอดคล้องกับธรรมเนียมของ TON)
- อุปทานทั้งหมด: 10,000,000,000 × 10^9 = 10^19 หน่วยฐาน
- สามารถสร้างเพิ่มได้: ไม่ (จำกัดสูงสุด ณ เวลาปรับใช้)
- สามารถเผาได้: ใช่ (โดยผู้ถือใด ๆ ไม่ต้องมีสิทธิ์พิเศษ)
- สามารถอัปเกรดได้: ไม่ (Jetton เองไม่เปลี่ยนแปลง ตัวห่อหุ้มอาจพัฒนาได้)
ตรรกะของสัญญาการทยอยรับสิทธิ์
แต่ละกลุ่มการจัดสรรจะได้รับอินสแตนซ์ POP_Vesting ของตนเอง พารามิเตอร์ต่ออินสแตนซ์:
beneficiary: ที่อยู่ที่ได้รับอนุญาตให้เรียกสิทธิ์total_amount: จำนวน Jetton ทั้งหมดที่ถูกล็อกcliff_end: การประทับเวลาก่อนที่จะไม่สามารถเรียกสิทธิ์ได้linear_end: การประทับเวลาที่สามารถเรียกสิทธิ์ได้ 100%claimed: ยอดรวมสะสมที่เรียกสิทธิ์ไปแล้ว
จำนวนเงินที่สามารถปล่อยได้ ณ เวลา t:
releasable(t) =
if t < cliff_end: 0
elif t >= linear_end: total_amount
else: total_amount * (t - cliff_end) / (linear_end - cliff_end)หักด้วยจำนวนที่เรียกสิทธิ์ไปแล้ว ไม่มีการปลดล็อกก่อนกำหนดไม่ว่าในกรณีใด ๆ
Round Merkle Registry
Round Engine (เครื่องมือจัดการรอบ) จะผูก Merkle Root ขนาด 32 ไบต์สำหรับแต่ละ Round โดยรวบรวมทุก 24 ชั่วโมงเป็นธุรกรรม TON เดียว:
struct RoundBatch {
uint64 batch_id;
bytes32[] round_roots; // สูงสุด 1,440 รากต่อชุด (60 วินาที × 1440 = 24 ชม.)
uint64 first_round_id;
}ผู้ใช้ทุกคนสามารถส่ง:
- รหัส Round
r - เส้นทางหลักฐาน Merkle
p - ผลลัพธ์ที่อ้าง
(participant, commit, reveal, weight)
สัญญาจะตรวจสอบหลักฐาน Merkle เทียบกับรากบนเครือข่าย หากถูกต้อง ผลลัพธ์จะถูกรับรอง หากไม่ถูกต้อง ผู้ใช้สามารถเปิดข้อพิพาทได้
Dispute Resolver (ตัวแก้ไขข้อพิพาท)
เมื่อมีข้อพิพาทที่ถูกต้อง:
- Round จะถูกทำเครื่องหมายเป็นโมฆะ
- ผู้ดำเนินการจะถูกหัก 1,000 $POP จากเงินประกันที่ผูกไว้เข้าสู่ Treasury
- ผู้ใช้ที่ได้รับผลกระทบจะได้รับเงินคืนจากกองทุนรางวัลของ Round
- Round จะถูกจัดการใหม่จากบันทึก Engine ที่เป็นทางการ
สัญญาการกำกับดูแล
สามสัญญา:
Proposal_Registry: จัดเก็บข้อเสนอ ติดตามวงจรชีวิตVote_Tallying: การนับคะแนนแบบ Quadratic Voting (การลงคะแนนแบบกำลังสอง) พร้อมน้ำหนักชื่อเสียงExecution_Module: ดำเนินการข้อเสนอที่ผ่าน (การเปลี่ยนแปลงพารามิเตอร์ การจ่ายเงินจาก Treasury)
ดู Governance สำหรับวงจรชีวิตทั้งหมด
แผนการตรวจสอบ
- การตรวจสอบภายใน: ต่อเนื่อง โดยทีมโปรโตคอล + ที่ปรึกษาภายนอก
- การตรวจสอบภายนอก 1: เป้าหมายที่ Trail of Bits, Q3 2026
- การตรวจสอบภายนอก 2: เป้าหมายที่ OtterSec, Q4 2026
- Bug bounty (รางวัลแจ้งจุดบกพร่อง): เปิดตัวที่ TGE โดยมีการจัดสรรจาก Treasury สูงถึง $500K ต่อจุดบกพร่องร้ายแรง
สัญญาจะไม่ถูกปรับใช้บน mainnet โดยปราศจากการตรวจสอบภายนอกที่สะอาดสองครั้ง