คำนำ: Aztec เป็น Layer 2 ที่เน้นความเป็นส่วนตัว ซึ่งช่วยให้นักพัฒนาสามารถสร้างสัญญาอัจฉริยะที่มีทั้งสถานะส่วนตัวและสาธารณะ รวมถึงการดำเนินการส่วนตัวและสาธารณะ ทำให้สามารถสร้างแอปที่มี “ความเป็นส่วนตัวแบบเลือกได้” ซึ่งรู้สึกเหมือน DeFi ทั่วไป โดยไม่ต้องเปิดเผยทุกอย่างบนโซ่
Aztec คืออะไร
Aztec เป็นเครือข่ายชั้น 2 ที่เน้นการออกแบบเพื่อความเป็นส่วนตัว พร้อมรองรับการรวมกันแบบสาธารณะเมื่อจำเป็น
แนวคิดหลักนั้นง่าย:
-
การดำเนินการส่วนตัวและสถานะส่วนตัวสำหรับการกระทำของผู้ใช้ที่ละเอียดอ่อน (ยอดเงิน ตัวตน ความตั้งใจ กลยุทธ์)
-
การดำเนินการแบบสาธารณะและสถานะสาธารณะสำหรับสิ่งที่ต้องมองเห็นได้ทั่วโลก (สภาพคล่องสาธารณะ ตรรกะสัญญาสาธารณะ สถานะร่วม)
ดังนั้นแทนที่จะเลือก “ทั้งหมดแบบสาธารณะ” หรือ “ทั้งหมดแบบส่วนตัว” Aztec จึงรองรับแอปแบบไฮบริด
วิธีการทำงานของธุรกรรมบน Aztec
Aztec แบ่งการดำเนินการออกเป็นสองสภาพแวดล้อมที่แยกจากกัน:
-
สภาพแวดล้อมการดำเนินการส่วนตัว (PXE) — ทำงานบนฝั่งผู้ใช้
ฟังก์ชันส่วนตัวจะถูกดำเนินการทางด้านไคลเอนต์ภายใน PXE (อ่านว่า “พิกซี่”) เพื่อเพิ่มความเป็นส่วนตัวสูงสุด
PXE:
-
ดำเนินการฟังก์ชันส่วนตัวในท้องถิ่น
-
ถือกุญแจ + บันทึก
-
สร้าง zero-knowledge proof สำหรับการดำเนินการส่วนตัว
-
รวมอยู่ใน aztec.js (TypeScript) ใช้งานได้ใน Node หรือเบราว์เซอร์
-
Public VM (AVM) — ทำงานบนโหนดของ Aztec
ฟังก์ชันสาธารณะจะทำงานบนเครือข่ายใน Aztec Virtual Machine (AVM) ซึ่งมีลักษณะเชิงแนวคิดคล้ายกับ EVM (ดังนั้น “สัญชาตญาณด้านประสิทธิภาพแก๊ส” จึงใช้ได้คล้ายกับ Solidity)
กฎการดำเนินการตามทิศทาง (สำคัญ)
ธุรกรรมไหลจากส่วนตัว → สาธารณะ:
-
ฟังก์ชันส่วนตัวสามารถเพิ่มฟังก์ชันสาธารณะเข้าคิวเพื่อเรียกใช้ในภายหลัง
-
ฟังก์ชันสาธารณะไม่สามารถเรียกใช้งานฟังก์ชันส่วนตัวได้
การแยกนี้ตั้งใจไว้: เครือข่ายสาธารณะไม่ควรสามารถ “เข้าถึง” การดำเนินการส่วนตัวได้
สถานะส่วนตัว vs สถานะสาธารณะ: บันทึก ตัวยกเลิก และต้นไม้
Aztec ใช้โมเดลสถานะที่แตกต่างกันตามระดับความเป็นส่วนตัว:
สถานะส่วนตัว = บันทึกแบบ UTXO
สถานะส่วนตัวถูกเก็บไว้เป็นบันทึก (ชิ้นข้อมูลแบบ UTXO) เพื่อรักษาความเป็นส่วนตัว:
-
บันทึกจะถูกเพิ่มเข้าไปในต้นไม้ UTXO แบบเพิ่มเฉพาะ
-
เมื่อหมายเหตุถูก “ใช้ไป/ลบออก” จะมีการสร้าง nullifier
-
Nullifiers ถูกเก็บไว้ในต้นไม้ nullifier ที่แยกต่างหาก
สิ่งนี้ช่วยให้เครือข่ายบังคับใช้การใช้แล้วเพียงครั้งเดียว โดยไม่เปิดเผยเนื้อหาส่วนตัวของบันทึก
สถานะสาธารณะ = การจัดเก็บแบบสาธารณะที่คล้ายบัญชี
สถานะสาธารณะมีพฤติกรรมคล้าย Ethereum:
-
จัดเก็บในต้นไม้ข้อมูลสาธารณะ
-
อัปเดตโดยตรงและมองเห็นได้บนโซ่
สิ่งที่นักพัฒนาควรจับใจ:
-
งานสถานะส่วนตัว = ข้อผูกพัน + ตัวทำลาย (พิสูจน์ความถูกต้องโดยไม่เปิดเผยข้อมูล)
-
งานสถานะสาธารณะ = การอัปเดตโดยตรง (พฤติกรรมการจัดเก็บบล็อกเชนปกติ)
การเป็นนามธรรมของบัญชี: ทุกบัญชีคือสัญญาอัจฉริยะ
Aztec มีการแยกแยะบัญชีแบบเนทีฟในระดับโปรโตคอล:
-
ไม่มี EOA (ไม่มีบัญชีแบบ “คู่กุญแจ” อย่างง่าย)
-
บัญชีทุกบัญชีเป็นสัญญาอัจฉริยะ
-
นักพัฒนาสามารถกำหนดกฎของตนเองสำหรับ:
-
การยืนยันตัวตน (ลายเซ็น, มัลติซิก, พาสคีย์, เงื่อนไขที่กำหนดเอง)
-
นโยบายการอนุญาต (ขีดจำกัด สิทธิ์ และคีย์เซสชัน)
-
nonce / การป้องกันการส่งซ้ำ
-
ทำไมสิ่งนี้จึงช่วยป้องกันการโจมตีแบบ DoS (ปัญหา “การตรวจสอบใช้ทรัพยากรสูง”)
แบบจำลองของ Aztec ผลักดันการตรวจสอบที่ซับซ้อนไปยังฝั่งไคลเอนต์:
-
ลูกค้าตรวจสอบและสร้างหลักฐาน ZK ว่า “การตรวจสอบสำเร็จ”
-
ผู้จัดเรียงยืนยันหลักฐานขนาดคงที่
-
ดังนั้น ความซับซ้อนในการตรวจสอบจึงไม่ทำให้ต้นทุนการตรวจสอบเครือข่ายพุ่งสูงขึ้น
สิ่งนี้ช่วยให้ตรรกะบัญชีสำหรับผู้ใช้ขั้นสูงทำงานได้ โดยไม่ทำให้เครือข่ายช้า
ปุ่มในบัญชี Aztec (เน้นความเป็นส่วนตัว)
บัญชี Aztec แต่ละบัญชีได้รับการรองรับโดยคีย์คู่ 3 คู่:
-
คู่กุญแจ Nullifier: ใช้ในการคำนวณ note nullifiers
-
คู่กุญแจการดูที่กำลังเข้ามา: ใช้ในการเข้ารหัสบันทึกสำหรับผู้รับ
-
คู่กุญแจการดูออก: ใช้ในการเข้ารหัสบันทึกสำหรับผู้ส่ง
เนื่องจากบัญชีเป็นสัญญาอัจฉริยะ จึงไม่มีคู่กุญแจลงนามโดยอัตโนมัติ—การยืนยันตัวตนขึ้นอยู่กับการออกแบบสัญญาของบัญชี
พยานการยืนยันตัวตน: ปลอดภัยกว่า “การอนุมัติแบบไม่จำกัด”
Aztec แทนรูปแบบ “การอนุมัติแบบไม่จำกัด” ที่มีความเสี่ยงด้วย Authentication Witnesses (AuthWit):
-
แทนที่จะให้สิทธิ์แบบไม่จำกัดตลอดไป
-
ผู้ใช้อนุญาตการกระทำเฉพาะพร้อมพารามิเตอร์เฉพาะ
สิ่งนี้ออกแบบมาเพื่อลดความเสี่ยงจากการอนุมัติอย่างต่อเนื่อง ขณะเดียวกันก็ยังคงรักษาประสบการณ์ผู้ใช้ที่ดี (การรวมรายการ อัตโนมัติ)
สร้างบน Aztec ด้วย Noir
สัญญาอัจฉริยะของ Aztec เขียนด้วย Noir ซึ่งเป็นภาษาที่เน้น ZK สำหรับการเขียนโปรแกรม/สัญญาที่สามารถพิสูจน์ได้ คำเตือนสำคัญจากเอกสาร: ฟังก์ชันส่วนตัวสามารถเขียนในลักษณะที่ไม่ได้รับการปรับแต่งอย่างเหมาะสม เพราะการพิสูจน์มีความเข้าใจด้านประสิทธิภาพที่ต่างจากการดำเนินการปกติ—ดังนั้นการเรียนรู้ “วิธีเขียน Noir ที่มีประสิทธิภาพ” จึงมีความสำคัญ
















