คู่มือนักพัฒนาสำหรับ zkGalaxy

คู่มือนักพัฒนาสำหรับ zkGalaxy

โหนดต้นทาง: 1946171

บทนำ

Vitalik ยอมแลกกับ zkEVM ระหว่างประสิทธิภาพและความเข้ากันได้

นี่เป็นฮิวริสติกที่มีประโยชน์อย่างมากในการแยกแยะวิธีการสนับสนุน zkEVM อย่างไรก็ตาม zkEVM เป็นส่วนย่อยของวิธีที่เป็นไปได้ทั้งหมดในการสร้างแอปพลิเคชันที่ไม่มีความรู้ สำหรับโปรแกรมเมอร์ที่ต้องการใช้ประโยชน์จากคุณสมบัติเฉพาะของการคำนวณ zk กล่าวคือ ความรวบรัด ไม่มีความรู้ และความถูกต้องzkEVM อาจไม่ใช่ตัวเลือกที่ดีที่สุด ด้วยการจัดวางเครื่องมือสำหรับนักพัฒนาทั้งชุด ฉันหวังว่าจะให้คำแนะนำที่ช่วยในกระบวนการตัดสินใจเกี่ยวกับ zk stack ที่เหมาะสมสำหรับแอปพลิเคชันของคุณ

ในช่วงหนึ่งหรือสองปีที่ผ่านมา มีความก้าวหน้าอย่างมากในเครื่องมือ zk พวกเขากำลังเข้าใกล้จุดที่นักพัฒนาซอฟต์แวร์ทั่วไปสามารถใช้ประโยชน์จากคุณสมบัติอันทรงพลังของ zk โดยปราศจากความเข้าใจอย่างลึกซึ้งเกี่ยวกับคณิตศาสตร์และวิศวกรรมพื้นฐานที่น่ากลัว ในอีกด้านหนึ่ง มีการเพิ่มจำนวนขึ้นในเครื่องมือสำหรับผู้ใช้ระดับสูง ซึ่งทำให้ผู้เชี่ยวชาญ zk ควบคุม zk stack ได้อย่างละเอียด

พลังของนามธรรมที่ซับซ้อน

ซอฟต์แวร์สมัยใหม่สร้างขึ้นบนชั้นของสิ่งที่เป็นนามธรรมจำนวนนับไม่ถ้วนเพื่อเพิ่มผลผลิตของผู้เชี่ยวชาญให้สูงสุด มีข้อดีหลายประการสำหรับการสรุปทางวิศวกรรมที่ค่อนข้างจะเข้าใจได้ง่าย นักพัฒนาเว็บไม่จำเป็นต้องเข้าใจว่าระบบปฏิบัติการทำงานอย่างไรในเชิงลึก 

กุญแจสำคัญในการสร้างเลเยอร์ abstraction ที่ดีและนำกลับมาใช้ใหม่ได้คือการสรุปความซับซ้อนของเลเยอร์ แล้วจัดเตรียมอินเทอร์เฟซที่เรียบง่ายแต่สื่อความหมายสำหรับเลเยอร์ที่สูงกว่าในสแต็กที่จะใช้ ทำอย่างถูกต้อง สิ่งนี้จะช่วยให้นักพัฒนาที่มีความชำนาญและความรู้ที่แตกต่างกันสามารถสร้างเครื่องมือที่มีประโยชน์ทั่วทั้งสแตกได้

ไม่น่าแปลกใจเลยที่หลักการเดียวกันนี้ใช้กับระบบ zk และเลเยอร์นามธรรมเหล่านี้ก็เติบโตเพียงพอสำหรับมือใหม่ zk ที่จะเริ่มใช้งานและสร้างแอปพลิเคชันในวันนี้

กองเทคโนโลยี zk
zk Stack พร้อมตัวอย่างเครื่องมือ/เทคโนโลยีในแต่ละเลเยอร์

การพัฒนา zk ระดับต่ำ

Arkworks-rs

Arkworks-rs เป็นระบบนิเวศของห้องสมุด Rust ที่ให้การใช้งานคอมโพเนนต์ย่อยของแอปพลิเคชัน zkSNARK ที่มีประสิทธิภาพและปลอดภัย Arkworks มีอินเทอร์เฟซที่จำเป็นสำหรับนักพัฒนาซอฟต์แวร์ในการปรับแต่งชุดซอฟต์แวร์สำหรับแอปพลิเคชัน zk โดยไม่ต้องปรับใช้สิ่งทั่วไปซ้ำกับไลบรารีที่มีอยู่อื่นๆ

ก่อนหน้า Arkworks วิธีเดียวในการสร้างแอปพลิเคชัน zk ใหม่คือสร้างทุกอย่างตั้งแต่เริ่มต้น ข้อได้เปรียบที่สำคัญของ Arkworks-rs ที่เหนือกว่าเครื่องมือที่สร้างขึ้นเองและบูรณาการในแนวตั้งคือระดับของความยืดหยุ่น การลดลงของวิศวกรรมที่ซ้ำซ้อน และลดความพยายามในการตรวจสอบ เส้นอินเทอร์เฟซที่สมเหตุสมผลของ Arkworks ระหว่างคอมโพเนนต์ช่วยให้สามารถอัปเกรดได้ในระดับที่สามารถทำให้สแต็กมีความเกี่ยวข้องกันท่ามกลางนวัตกรรมที่ก้าวล้ำในเทคโนโลยี zk โดยไม่บังคับให้ทีมสร้างทุกอย่างใหม่ตั้งแต่เริ่มต้น

สำหรับใคร?

Arkworks มีไว้สำหรับโปรเจ็กต์ที่ต้องการการควบคุมซอฟต์แวร์ zk ทั้งหมดอย่างละเอียด แต่ไม่ต้องการสร้างชิ้นส่วนที่ซ้ำซ้อนทั้งหมดตั้งแต่เริ่มต้น หากคุณกำลังพิจารณารุ่นที่กำหนดเองของ DSL วงจร เนื่องจากตัวอย่างเช่น คุณกำลังสร้างต้นแบบระบบพิสูจน์ใหม่ แต่ไม่แน่ใจเกี่ยวกับรูปแบบความมุ่งมั่นหรือเส้นโค้งวงรีที่สอดคล้องกัน arkworks จะช่วยให้คุณสามารถสลับระหว่างตัวเลือกต่างๆ ได้อย่างรวดเร็วด้วยอินเทอร์เฟซที่ใช้ร่วมกัน กว่าจะเริ่มต้นใหม่

ข้อดี

  • ความยืดหยุ่นผ่านโมดูลาร์
  • โค้ดที่ซ้ำกันน้อยลง
    • ลดต้นทุนด้านวิศวกรรม
    • พื้นที่ผิวการตรวจสอบ/บั๊กลดลง
  • อัปเกรดส่วนประกอบใดๆ โดยไม่ต้องปรับโครงสร้างใหม่
  • ง่ายต่อการทดลองกับวัตถุดั้งเดิมใหม่ในสภาพแวดล้อม zk ที่พัฒนาอย่างรวดเร็ว

จุดด้อย

  • ต้องการความเข้าใจอย่างลึกซึ้งเกี่ยวกับชุดซอฟต์แวร์ทั้งหมด
    • การควบคุมมากเกินไปอาจนำไปสู่ปืนลูกซองได้หากไม่เข้าใจอย่างถูกต้อง
  • การควบคุมแบบละเอียดต้องการความเชี่ยวชาญในทุกระดับของสแต็ก
    • Arkworks มีค่าเริ่มต้นที่เหมาะสม

zk ภาษาเฉพาะโดเมน (DSL)

ในการสร้างหลักฐานเกี่ยวกับการคำนวณบางอย่าง อันดับแรก การคำนวณนี้จะต้องแสดงในรูปแบบที่ระบบ zkSNARK สามารถเข้าใจได้ ภาษาเฉพาะของโดเมนหลายภาษาได้สร้างภาษาโปรแกรมที่ช่วยให้นักพัฒนาแอปพลิเคชันสามารถแสดงการคำนวณในลักษณะดังกล่าวได้ เหล่านี้รวมถึง แอซเท็ก นัวร์สตาร์คเน็ต ไคโรเซอร์คอมโซคราเตสและของอเลโอ ราศีสิงห์ ท่ามกลางคนอื่น ๆ. โดยทั่วไประบบพิสูจน์หลักฐานและรายละเอียดทางคณิตศาสตร์จะไม่เปิดเผยต่อผู้พัฒนาแอปพลิเคชัน

ประสบการณ์นักพัฒนา

นักพัฒนา zkApp จะต้องมีความเชี่ยวชาญในการเขียนโปรแกรมในภาษาเฉพาะโดเมน ภาษาเหล่านี้บางภาษามีลักษณะคล้ายกับภาษาโปรแกรมที่คุ้นเคย ในขณะที่ภาษาอื่นอาจเรียนรู้ได้ยาก เรามาแยกย่อยสิ่งเหล่านี้:

ไคโร – Starkware DSL จำเป็นสำหรับการสร้างแอพบน Starknet รวบรวมเป็นภาษาแอสเซมบลีเฉพาะของไคโรที่สามารถตีความได้โดย Cairo zkVM

โซคราเตส — ZoKrates เป็นชุดเครื่องมือสำหรับความต้องการทั่วไปของ SNARK รวมถึงภาษาระดับสูงในการเขียนวงจร นอกจากนี้ ZoKrates ยังมีความยืดหยุ่นรอบ ๆ ส่วนโค้ง การพิสูจน์โครงร่าง และแบ็กเอนด์ ทำให้ผู้พัฒนาสามารถแลกเปลี่ยนความร้อนได้โดยใช้อาร์กิวเมนต์ CLI อย่างง่าย

เซอร์คอม — Circom เป็นภาษาที่สร้างขึ้นโดยเฉพาะสำหรับการสร้างวงจร ปัจจุบันเป็นภาษาพฤตินัยสำหรับวงจรในการผลิต ภาษาไม่เป็นไปตามหลักสรีรศาสตร์ ภาษานั้นทำให้คุณตระหนักได้อย่างชัดเจนถึงความจริงที่ว่าคุณกำลังเขียนวงจร

ราศีสิงห์ — Leo ได้รับการพัฒนาให้เป็นภาษาสำหรับ Aleo blockchain Leo มีไวยากรณ์ที่เหมือนสนิมและสร้างขึ้นโดยเฉพาะสำหรับการเปลี่ยนสถานะภายในบล็อกเชน

Noir - ไวยากรณ์ที่ได้รับแรงบันดาลใจจากสนิม ออกแบบโดยใช้ IR มากกว่าตัวภาษา ซึ่งหมายความว่าสามารถมีส่วนหน้าตามอำเภอใจได้ 

สแต็คการรวบรวม Aztec Noir มีสถาปัตยกรรมแบบโมดูลาร์

สำหรับใคร?

นักพัฒนาแอปพลิเคชันที่ต้องการใช้ประโยชน์จากคุณสมบัติเฉพาะของ zk ในแอปพลิเคชันของตน ภาษาเหล่านี้บางภาษาได้รับการทดสอบการต่อสู้ด้วยเงินหลายพันล้านดอลลาร์ที่โอนผ่านเครือข่ายเช่น ZCash และ Starknet แม้ว่าบางโครงการที่เราจะพูดถึงยังไม่พร้อมสำหรับการใช้งานจริง การเขียนวงจรของคุณในภาษาใดภาษาหนึ่งเหล่านี้ถือเป็นกลยุทธ์ที่ดีที่สุด เว้นแต่คุณต้องการการควบคุมที่ละเอียดกว่าที่ชุดเครื่องมืออย่าง Arkworks มีให้

ข้อดี

  • ผู้ใช้ไม่จำเป็นต้องเข้าใจรายละเอียด zk พื้นฐาน
  • วางจำหน่ายแล้ววันนี้ ด้วยประสบการณ์การผลิต
  • ตรวจสอบได้บนห่วงโซ่
  • ไม่เชื่อเรื่องพระเจ้าในระบบนิเวศ

จุดด้อย

  • ผู้ใช้จำเป็นต้องเรียนรู้ DSL ใหม่
  • เครื่องมือแบบแยกส่วนและการสนับสนุนในแต่ละภาษาเหล่านี้
  • ควบคุมสแต็กการพิสูจน์พื้นฐานเพียงเล็กน้อยหรือไม่มีเลย (สำหรับตอนนี้)

เป้าหมายหลักของ zkEVM คือการเปลี่ยนสถานะ Ethereum และพิสูจน์ความถูกต้องโดยใช้การพิสูจน์ความถูกต้องโดยสรุปเป็นศูนย์ ตามที่กล่าวไว้ในโพสต์ของ Vitalik มีหลายวิธีในการทำเช่นนี้โดยมีความแตกต่างเล็กน้อยและการแลกเปลี่ยนที่สอดคล้องกัน 

ความแตกต่างทางเทคนิคที่สำคัญระหว่างสิ่งเหล่านี้คือตรงที่ในสแต็กภาษา การคำนวณจะถูกแปลงเป็นรูปแบบ (การเลขคณิต) ที่สามารถใช้ในระบบพิสูจน์ได้ ในบาง zkEVM สิ่งนี้จะเกิดขึ้นที่ภาษาระดับสูง (Solidity, Vyper, Yul) ในขณะที่วิธีการอื่นๆ พยายามพิสูจน์ EVM ไปจนถึงระดับ opcode การแลกเปลี่ยนระหว่างวิธีการเหล่านี้ได้รับการกล่าวถึงอย่างลึกซึ้งในโพสต์ของ Vitalik แต่ฉันจะสรุปในประโยคเดียว: ยิ่งการแปลง/การคำนวณทางคณิตศาสตร์เกิดขึ้นในสแต็กต่ำ การปรับประสิทธิภาพก็จะยิ่งมากขึ้นเท่านั้น

เหตุใด opcodes EVM จึงมีราคาแพงในการพิสูจน์ใน zk

ความท้าทายหลักในการสร้างการพิสูจน์สำหรับเครื่องเสมือนคือขนาดของวงจรที่ขยายใหญ่ขึ้นตามสัดส่วนของคำสั่งที่เป็นไปได้ทั้งหมดสำหรับทุกคำสั่งที่ดำเนินการ สิ่งนี้เกิดขึ้นเนื่องจากวงจรไม่รู้ว่าคำสั่งใดที่จะถูกดำเนินการในแต่ละโปรแกรม ดังนั้นจึงจำเป็นต้องรองรับคำสั่งทั้งหมด

ในวงจรสากล คำสั่งที่ดำเนินการทุกคำสั่งมีค่าใช้จ่ายเป็นสัดส่วนกับผลรวมของคำสั่งที่รองรับทั้งหมด

สิ่งนี้หมายความว่าในทางปฏิบัติคือคุณจ่าย (เป็นค่าดำเนินการ) สำหรับคำสั่งที่แพงที่สุดเท่าที่จะเป็นไปได้ แม้ว่าคุณกำลังดำเนินการเฉพาะคำสั่งที่ง่ายที่สุดก็ตาม สิ่งนี้นำไปสู่การแลกเปลี่ยนโดยตรงระหว่างความสามารถทั่วไปและประสิทธิภาพ เมื่อคุณเพิ่มคำแนะนำเพิ่มเติมสำหรับความสามารถทั่วไป คุณจะต้องจ่ายสำหรับสิ่งนี้ ทุกๆ คำแนะนำที่คุณพิสูจน์!

นี่เป็นปัญหาพื้นฐานของวงจรสากล แต่ด้วย การพัฒนาใหม่ในด้านเทคโนโลยี เช่นเดียวกับ IVC (การคำนวณที่เพิ่มขึ้นที่ตรวจสอบได้) ข้อจำกัดนี้สามารถแก้ไขได้โดยการแบ่งการคำนวณออกเป็นชิ้นเล็ก ๆ ซึ่งแต่ละอันมีวงจรย่อยเฉพาะที่เล็กกว่า

การใช้งาน zkEVM ในปัจจุบันใช้กลยุทธ์ที่แตกต่างกันเพื่อลดผลกระทบของปัญหานี้... ตัวอย่างเช่น zkSync ฉีกการดำเนินการที่มีราคาแพงกว่า (ส่วนใหญ่เป็นการคอมไพล์ล่วงหน้าการเข้ารหัส เช่น แฮชและ ECDSA) จากวงจรพิสูจน์การดำเนินการหลักออกเป็นวงจรแยกต่างหากที่รวมเข้าด้วยกันที่ สิ้นสุดด้วยการเรียกซ้ำ snark zkSync ใช้แนวทางนี้หลังจากที่พวกเขาตระหนักว่าค่าใช้จ่ายส่วนใหญ่มาจากคำแนะนำที่ซับซ้อนไม่กี่ขั้นตอน

ต้นทุนการทำธุรกรรมถูกควบคุมโดยการดำเนินงานที่มีราคาแพงเพียงเล็กน้อย

ที่แกนหลัก เหตุผลที่พิสูจน์ว่าชุดคำสั่งเทียบเท่า EVM มีราคาแพงกว่า เนื่องจาก EVM ไม่ได้ออกแบบมาสำหรับการคำนวณ zk การละทิ้ง EVM ก่อนหน้านี้ในสแต็กทำให้ zkEVM สามารถทำงานบนชุดคำสั่งที่ปรับให้เหมาะสมยิ่งขึ้นสำหรับ zk และถูกกว่าในการพิสูจน์

สำหรับใคร?

ลูกค้าในอุดมคติสำหรับ zkEVM คือแอปพลิเคชันสัญญาอัจฉริยะที่ต้องการคำสั่งการทำธุรกรรมที่ถูกกว่าที่มีใน L1 Ethereum นักพัฒนาเหล่านี้ไม่จำเป็นต้องมีความเชี่ยวชาญหรือแบนด์วิธในการเขียนแอปพลิเคชัน zk ตั้งแต่เริ่มต้น ดังนั้นพวกเขาจึงต้องการเขียนแอปพลิเคชันในภาษาระดับสูงกว่าที่พวกเขาคุ้นเคย เช่น Solidity 

ทำไมหลายทีมถึงสร้างสิ่งนี้ขึ้นมา?

ปรับขนาด Ethereum ปัจจุบันเป็นแอพพลิเคชั่นเทคโนโลยี zk ที่เป็นที่ต้องการมากที่สุด

zkEVM เป็นโซลูชันการปรับขนาด Ethereum ที่ช่วยลดปัญหาความแออัดที่จำกัดนักพัฒนา L1 dApp ได้อย่างไม่มีสะดุด

ประสบการณ์ของนักพัฒนา

เป้าหมายของ zkEVM คือการสนับสนุนประสบการณ์ของนักพัฒนาที่ใกล้เคียงกับการพัฒนา Ethereum ในปัจจุบันมากที่สุด การสนับสนุน Full Solidity หมายความว่าทีมไม่จำเป็นต้องสร้างและดูแลโค้ดเบสหลายตัว สิ่งนี้ค่อนข้างไม่สามารถทำได้อย่างสมบูรณ์เนื่องจาก zkEVM จำเป็นต้องแลกกับความเข้ากันได้บางอย่างเพื่อให้สามารถสร้างการพิสูจน์ขนาดที่เหมาะสมในระยะเวลาที่เหมาะสม

กรณีศึกษาด่วน: zkSync vs Scroll

ความแตกต่างหลักระหว่าง zkSync และ Scroll คือตำแหน่ง/เวลาที่ดำเนินการคำนวณทางคณิตศาสตร์ในสแต็ก นั่นคือตำแหน่งที่แปลงจากโครงสร้าง EVM ปกติเป็นการแสดงแทนที่เป็นมิตรต่อ SNARK สำหรับ zkSync สิ่งนี้เกิดขึ้นเมื่อพวกเขาแปลง YUL bytecode เป็นชุดคำสั่ง zk ที่กำหนดเอง สำหรับ Scroll สิ่งนี้จะเกิดขึ้นในตอนท้าย เมื่อมีการสร้างการติดตามการดำเนินการจริงด้วย EVM opcodes จริง

ดังนั้น สำหรับ zkSync ทุกอย่างเหมือนกับการโต้ตอบกับ EVM จนกว่าจะมีการสร้าง zk bytecode สำหรับ Scroll ทุกอย่างจะเหมือนกันจนกว่าจะมีการดำเนินการ bytecode จริง นี่เป็นข้อแตกต่างเล็กน้อยซึ่งแลกกับประสิทธิภาพสำหรับการสนับสนุน ตัวอย่างเช่น zkSync จะไม่สนับสนุนเครื่องมือ EVM bytecode เช่น ดีบักเกอร์ที่แกะกล่อง เนื่องจากเป็น bytecode ที่แตกต่างกันโดยสิ้นเชิง แม้ว่า Scroll จะมีปัญหามากขึ้นในการทำให้ชุดคำสั่งมีประสิทธิภาพที่ดี แต่นั่นไม่ได้ออกแบบมาสำหรับ zk กลยุทธ์ทั้งสองมีข้อดีและข้อเสีย และท้ายที่สุดมีปัจจัยภายนอกมากมายที่จะส่งผลต่อความสำเร็จ

zkLLVM วงจรคอมไพเลอร์

💡 แม้จะมีการตั้งชื่อ LLVM ไม่ใช่ VM (เครื่องเสมือน) LLVM เป็นชื่อของชุดเครื่องมือคอมไพเลอร์ที่ยึดโดยการแทนค่ากลาง (IR) ที่ไม่เชื่อเรื่องภาษา

=ไม่มี; มูลนิธิ(ประมาณชื่อมันก เรื่องตลกของการฉีด SQL หากคุณสงสัย) กำลังสร้างคอมไพเลอร์ที่สามารถแปลงภาษาส่วนหน้าของ LLVM ให้เป็นตัวแทนระดับกลางที่สามารถพิสูจน์ได้ภายใน SNARK zkLLVM ได้รับการออกแบบทางสถาปัตยกรรมเป็นส่วนเสริมของโครงสร้างพื้นฐาน LLVM ที่มีอยู่ ซึ่งเป็น toolchain มาตรฐานอุตสาหกรรมที่รองรับภาษาระดับสูงมากมาย เช่น Rust, C, C++ เป็นต้น

วิธีการทำงาน

ภาพร่างคร่าวๆ ของสถาปัตยกรรม zkLLVM

ผู้ใช้ที่ต้องการพิสูจน์การคำนวณเพียงใช้การคำนวณนั้นใน C ++ zkLLVM ใช้ซอร์สโค้ดระดับสูงนี้ซึ่งสนับสนุนโดยคอมไพเลอร์เสียงดังกราวที่แก้ไขแล้ว (ปัจจุบันคือ C++) และสร้างตัวแทนระดับกลางของวงจร ณ จุดนี้ วงจรพร้อมที่จะพิสูจน์แล้ว แต่ผู้ใช้อาจต้องการพิสูจน์วงจรตามอินพุตไดนามิกบางตัว ในการจัดการอินพุตแบบไดนามิก zkLLVM มีส่วนประกอบเพิ่มเติมที่เรียกว่า assigner ซึ่งสร้างตารางการกำหนดด้วยอินพุตและพยานทั้งหมดที่ได้รับการประมวลผลล่วงหน้าอย่างสมบูรณ์และพร้อมที่จะพิสูจน์ควบคู่ไปกับวงจร

องค์ประกอบทั้ง 2 นี้เป็นสิ่งที่จำเป็นในการสร้างหลักฐาน ในทางทฤษฎี ผู้ใช้สามารถสร้างหลักฐานได้เอง แต่เนื่องจากเป็นงานที่ค่อนข้างเชี่ยวชาญด้านการคำนวณ พวกเขาอาจต้องการจ่ายเงินให้คนอื่นที่มีฮาร์ดแวร์ทำแทน สำหรับกลไกการค้นหาคู่สัญญานี้ =ไม่มี; Foundation ยังได้จัดตั้ง 'ตลาดพิสูจน์' ซึ่งผู้พิสูจน์แข่งขันกันเพื่อพิสูจน์การคำนวณสำหรับผู้ใช้ที่จะจ่ายเงินให้ทำเช่นนั้น การเปลี่ยนแปลงของตลาดเสรีนี้จะนำไปสู่การเพิ่มประสิทธิภาพของงานพิสูจน์ที่มีค่าที่สุด

การแลกเปลี่ยน

เนื่องจากทุกงานการคำนวณที่ต้องพิสูจน์นั้นมีเอกลักษณ์เฉพาะตัวและสร้างวงจรที่แตกต่างกัน จึงมีวงจรจำนวนนับไม่ถ้วนที่ผู้พิสูจน์จะต้องสามารถจัดการได้ ความสามารถทั่วไปที่ถูกบังคับนี้ทำให้การปรับให้เหมาะสมของแต่ละวงจรทำได้ยาก การเปิดตัวตลาดพิสูจน์ช่วยให้มีความเชี่ยวชาญในวงจรที่ตลาดเห็นว่ามีค่า หากไม่มีตลาดนี้ การโน้มน้าวผู้พิสูจน์ให้เพิ่มประสิทธิภาพวงจรนี้คงเป็นเรื่องยาก เนื่องจากปัญหาการสตาร์ทเครื่องเย็นโดยธรรมชาตินี้

การแลกเปลี่ยนอื่น ๆ คือนามธรรมแบบคลาสสิกกับการควบคุม ผู้ใช้ที่เต็มใจใช้อินเทอร์เฟซที่ใช้งานง่ายนี้กำลังละทิ้งการควบคุมพื้นฐานการเข้ารหัสพื้นฐาน สำหรับผู้ใช้หลายๆ คน นี่เป็นการแลกเปลี่ยนที่ถูกต้องมาก เนื่องจากมักจะดีกว่าที่จะให้ผู้เชี่ยวชาญด้านการเข้ารหัสตัดสินใจแทนคุณ

ข้อดี

  • ผู้ใช้สามารถเขียนโค้ดในภาษาระดับสูงที่คุ้นเคย
  • zk internals ทั้งหมดแยกออกจากผู้ใช้
  • ไม่พึ่งพาวงจร 'VM' เฉพาะที่เพิ่มค่าใช้จ่ายเพิ่มเติม

จุดด้อย

  • ทุกโปรแกรมมีวงจรที่แตกต่างกัน ยากที่จะเพิ่มประสิทธิภาพ (ตลาดพิสูจน์ได้แก้ปัญหานี้บางส่วน)
  • ไม่สำคัญในการสลับ / อัปเกรดไลบรารี่ zk ภายใน (ต้องมีการฟอร์ก)

zkVM อธิบาย superset ของเครื่องเสมือน zk ทั้งหมด ในขณะที่ zkEVM เป็นประเภทเฉพาะของ zkVM ซึ่งควรค่าแก่การอภิปรายเป็นหัวข้อแยกต่างหากเนื่องจากความแพร่หลายในปัจจุบัน มีโครงการอื่นๆ อีกสองสามโครงการที่กำลังดำเนินการสร้าง zkVMs ที่ใช้ ISAs ทั่วไปนอกเหนือจาก crypto VMs ตามความต้องการ

แทนที่จะพิสูจน์ EVM ระบบสามารถพิสูจน์สถาปัตยกรรมชุดคำสั่ง (ISA) ที่แตกต่างกัน เช่น RISC-V หรือ WASM ใน VM ใหม่ โครงการสองโครงการที่ทำงานบน zkVM ทั่วไปเหล่านี้ ได้แก่ RISC Zero และ zkWASM มาดู RISC Zero กันที่นี่สักหน่อยเพื่อสาธิตวิธีการทำงานของกลยุทธ์นี้และข้อดี/ข้อเสียบางประการ 

สถาปัตยกรรมระดับสูงรุ่น Risc Zeroproof

RISC Zero สามารถพิสูจน์การคำนวณใดๆ ที่ดำเนินการบนสถาปัตยกรรม RISC-V RISC-V เป็นมาตรฐานสถาปัตยกรรมชุดคำสั่งแบบโอเพ่นซอร์ส (ISA) ที่ได้รับความนิยม ปรัชญาของ RISC (ลดชุดคำสั่งคอมพิวเตอร์) คือการสร้างชุดคำสั่งที่ง่ายมากโดยมีความซับซ้อนน้อยที่สุด ซึ่งหมายความว่านักพัฒนาในเลเยอร์ที่สูงกว่าในสแต็กจะต้องรับภาระมากขึ้นในการดำเนินการตามคำแนะนำโดยใช้สถาปัตยกรรมนี้ ในขณะที่ทำให้การติดตั้งฮาร์ดแวร์ง่ายขึ้น

ปรัชญานี้ใช้กับการประมวลผลทั่วไปเช่นกัน ชิป ARM ใช้ประโยชน์จากชุดคำสั่งสไตล์ RISC และเริ่มครองตลาดชิปมือถือ ปรากฎว่าชุดคำสั่งที่เรียบง่ายขึ้นยังมีประสิทธิภาพด้านพลังงานและพื้นที่แม่พิมพ์ที่สูงกว่าอีกด้วย

การเปรียบเทียบนี้ค่อนข้างดีสำหรับประสิทธิภาพในการสร้างการพิสูจน์ zk ตามที่กล่าวไว้ก่อนหน้านี้ เมื่อพิสูจน์การติดตามการดำเนินการใน zk คุณจะจ่ายสำหรับผลรวมของค่าใช้จ่ายของคำสั่งทั้งหมดต่อทุกรายการในการติดตาม ดังนั้นคำสั่งที่ง่ายกว่าและน้อยกว่าทั้งหมดจึงดีกว่า

วิธีการทำงาน

จากมุมมองของนักพัฒนา การใช้ RISC Zero เพื่อจัดการกับการพิสูจน์ zk นั้นเหมือนกับการใช้ฟังก์ชัน AWS Lambda เพื่อจัดการกับสถาปัตยกรรมเซิร์ฟเวอร์แบ็คเอนด์ นักพัฒนาโต้ตอบกับ RISC Zero หรือ AWS Lambda เพียงแค่เขียนโค้ด และบริการจะจัดการกับความซับซ้อนของแบ็กเอนด์ทั้งหมด

สำหรับ RISC Zero นักพัฒนาเขียน Rust หรือ C++ (ในที่สุดก็เป็นอะไรก็ได้ที่กำหนดเป้าหมาย RISC-V) จากนั้นระบบจะนำไฟล์ ELF ที่สร้างขึ้นระหว่างการคอมไพล์และใช้เป็นรหัสอินพุตสำหรับวงจร VM นักพัฒนาเพียงเรียกพิสูจน์ซึ่งส่งคืนใบเสร็จรับเงิน (ซึ่งมีหลักฐาน zk ของการติดตามการดำเนินการ) ซึ่งทุกคนสามารถเรียก "ยืนยัน" ได้จากทุกที่ จากมุมมองของนักพัฒนา ไม่จำเป็นต้องเข้าใจว่า zk ทำงานอย่างไร ระบบพื้นฐานจะจัดการกับความซับซ้อนทั้งหมดนี้

นักศึกษาฝึกงาน Risc Zero?

ข้อดี

  • ง่ายต่อการใช้. เปิดประตูให้โปรแกรมเมอร์ทุกคนสร้างแอปพลิเคชัน zk
  • วงจรเดียวที่นักพิสูจน์สามารถเชี่ยวชาญได้
    • นอกจากนี้ยังมีพื้นที่ผิวน้อยสำหรับการโจมตีและการตรวจสอบน้อยกว่า
  • เข้ากันได้กับบล็อกเชนใด ๆ คุณเพียงแค่โพสต์หลักฐาน

จุดด้อย

  • ใช้ค่าใช้จ่ายจำนวนมาก (ในขนาดการพิสูจน์และความเร็วในการสร้าง) เพื่อรองรับอินเทอร์เฟซทั่วไปดังกล่าว
  • ต้องการการปรับปรุงที่สำคัญในเทคนิคการพิสูจน์อักษรเพื่อให้ได้รับการสนับสนุนอย่างกว้างขวางสำหรับไลบรารี่ที่มีอยู่

วงจรนำกลับมาใช้ใหม่ที่สร้างไว้ล่วงหน้า

สำหรับวงจรพื้นฐานและวงจรที่ใช้ซ้ำได้ซึ่งมีประโยชน์อย่างยิ่งต่อแอปพลิเคชันบล็อกเชนหรือที่อื่น ๆ ทีมงานอาจสร้างและปรับวงจรเหล่านี้ให้เหมาะสมสำหรับคุณแล้ว คุณสามารถป้อนข้อมูลสำหรับกรณีการใช้งานเฉพาะของคุณ ตัวอย่างการพิสูจน์การรวม Merkle เป็นสิ่งที่จำเป็นโดยทั่วไปในแอปพลิเคชัน crypto (รายการ airdrop, Tornado Cash เป็นต้น) ในฐานะผู้พัฒนาแอปพลิเคชัน คุณสามารถใช้สัญญาที่ผ่านการทดสอบการต่อสู้เหล่านี้ซ้ำได้เสมอ และแก้ไขเลเยอร์ที่อยู่ด้านบนสุดเพื่อสร้างแอปพลิเคชันที่ไม่เหมือนใคร

ตัวอย่างเช่น วงจรของ Tornado Cash สามารถใช้ซ้ำได้สำหรับ แอปพลิเคชั่น airdrop ส่วนตัว หรือ ใบสมัครลงคะแนนส่วนตัว. Manta และ Semaphore กำลังสร้างชุดเครื่องมือทั้งหมดของแกดเจ็ตวงจรทั่วไปเช่นนี้ ซึ่งสามารถใช้ในสัญญา Solidity โดยมีความเข้าใจเพียงเล็กน้อยหรือไม่มีเลยเกี่ยวกับคณิตศาสตร์ zk moon พื้นฐาน

คู่มือ — การเลือกกองของคุณ

ตามที่กล่าวไว้ในรายละเอียด มีตัวเลือกมากมายสำหรับการพัฒนาแอปพลิเคชัน zk โดยทั้งหมดมีชุดของการแลกเปลี่ยนที่ไม่เหมือนใคร แผนภูมินี้จะช่วยสรุปเมทริกซ์การตัดสินใจนี้ เพื่อให้คุณสามารถเลือกเครื่องมือที่ดีที่สุดสำหรับงานได้ตามระดับความเชี่ยวชาญและประสิทธิภาพ zk ของคุณ นี่ไม่ใช่รายการที่ครอบคลุม ฉันวางแผนที่จะเพิ่มสิ่งนี้ในอนาคต เมื่อฉันรู้ว่ามีเครื่องมืออื่นๆ เพิ่มขึ้นในพื้นที่

คู่มือนักพัฒนาแอปพลิเคชันสำหรับ zkGalaxy

สูตรโกง App Dev ของ zk

1. ห้องสมุด Snark ระดับต่ำ

ควรใช้เมื่อใด: 

  • คุณต้องควบคุมกองพิสูจน์ทั้งหมดอย่างละเอียด
  • ต้องการหลีกเลี่ยงการสร้างส่วนประกอบทั่วไปขึ้นมาใหม่
  • คุณต้องการทดลองด้วยชุดค่าผสมต่างๆ ของการพิสูจน์แบบแผน เส้นโค้ง และอื่น ๆ ระดับต่ำ วิทยาการ

เมื่อไม่ใช้:

  • คุณเป็นมือใหม่ที่กำลังมองหาอินเทอร์เฟซการพิสูจน์ระดับสูง

ตัวเลือก: 


3. zk คอมไพเลอร์

ควรใช้เมื่อใด: 

  • ไม่เต็มใจที่จะใช้ค่าใช้จ่ายของวงจรสากล
  • ต้องการเขียนวงจรด้วยภาษาที่คุ้นเคย 
  • ต้องการวงจรที่ปรับแต่งได้สูง

เมื่อไม่ใช้: 

  • ต้องการควบคุมพื้นฐานการเข้ารหัสพื้นฐาน
  • ต้องการวงจรที่ได้รับการปรับให้เหมาะสมอย่างมากแล้ว

ตัวเลือก:


5. zkVM

ควรใช้เมื่อใด: 

  • ต้องการเขียนโค้ดด้วยภาษาระดับสูง 
  • จำเป็นต้องพิสูจน์ความถูกต้องของการดำเนินการนี้ 
  • จำเป็นต้องซ่อนอินพุตบางส่วนสำหรับการดำเนินการนี้จากผู้ตรวจสอบ
  • มีความเชี่ยวชาญเพียงเล็กน้อยหรือไม่มีเลยใน zk

เมื่อไม่ใช้:

  • ในสภาพแวดล้อมที่มีเวลาแฝงต่ำมาก (ยังช้าอยู่)
  • คุณมีโปรแกรมมากมาย (สำหรับตอนนี้)

ตัวเลือก:

2. zk DSL

ควรใช้เมื่อใด: 

  • คุณสบายใจที่จะเลือกภาษาใหม่
  • ต้องการใช้ภาษาทดสอบการต่อสู้
  • ต้องการขนาดวงจรที่น้อยที่สุด

เมื่อไม่ใช้: 

  • ต้องการการควบคุมส่วนหลังที่พิสูจน์แล้วอย่างละเอียด (สำหรับตอนนี้ สามารถแลกเปลี่ยนส่วนหลังสำหรับ DSL บางตัวได้)

ตัวเลือก:


4. zkEVM

ควรใช้เมื่อใด: 

  • คุณมี dApp ที่ใช้งานบน EVM ได้อยู่แล้ว
  • คุณต้องการธุรกรรมที่ถูกกว่าสำหรับผู้ใช้ของคุณ 
  • คุณต้องการลดความพยายามในการปรับใช้กับเชนใหม่
  • สนใจเฉพาะคุณสมบัติความรวบรัดของ zk (การบีบอัด)

เมื่อไม่ใช้: 

  • คุณต้องการความเท่าเทียมกันของ EVM ที่สมบูรณ์แบบ
  • คุณต้องมีคุณสมบัติความเป็นส่วนตัวของ zk 
  • คุณมีกรณีการใช้งานที่ไม่ใช่บล็อกเชน 

ตัวเลือก: 


6. วงจรนำกลับมาใช้ใหม่ที่สร้างไว้ล่วงหน้า

ควรใช้เมื่อใด: 

  • คุณมีแอปพลิเคชันสัญญาอัจฉริยะที่ใช้บล็อกการสร้าง zk ทั่วไป เช่น การรวม Merkle
  • คุณมีความเชี่ยวชาญเพียงเล็กน้อยหรือไม่มีเลยในเนื้อหา zk พื้นฐาน

เมื่อไม่ควรใช้:

  • คุณมีความต้องการพิเศษสูง
  • กรณีการใช้งานของคุณไม่รองรับวงจรที่สร้างไว้ล่วงหน้า 

ตัวเลือก: 

สรุป

zk อยู่ในแนวหน้าของเทคโนโลยีหลายอย่าง และการสร้างเทคโนโลยีนั้นต้องอาศัยความเข้าใจอย่างลึกซึ้งเกี่ยวกับคณิตศาสตร์ วิทยาการเข้ารหัสลับ วิทยาการคอมพิวเตอร์ และวิศวกรรมฮาร์ดแวร์ แต่ด้วยเลเยอร์นามธรรมที่มากขึ้นในแต่ละวัน นักพัฒนาแอปสามารถใช้ประโยชน์จากพลังของ zk ได้โดยไม่ต้องจบปริญญาเอก เนื่องจากข้อจำกัดของเวลาในการพิสูจน์จะค่อยๆ ลดลงเมื่อเวลาผ่านไปผ่านการเพิ่มประสิทธิภาพในทุกระดับของสแต็ก เราน่าจะเห็นเครื่องมือที่ง่ายกว่าสำหรับนักพัฒนาทั่วไป

ฉันหวังว่าฉันจะโน้มน้าวคุณ นักพัฒนาซอฟต์แวร์ที่อยากรู้อยากเห็น ว่าคุณสามารถเริ่มใช้ zk ในแอปพลิเคชันของคุณได้แล้ววันนี้ มีความสุขแฮ็ค🙂

คุณจะรออะไรอีก ไปสร้างแอป zk กันเลย

การเปิดเผยข้อมูล: Blockchain Capital เป็นผู้ลงทุนในหลายโปรโตคอลที่กล่าวถึงข้างต้น

มุมมองที่แสดงในแต่ละบล็อกโพสต์อาจเป็นมุมมองส่วนตัวของผู้เขียนแต่ละคน และไม่จำเป็นต้องสะท้อนถึงมุมมองของ Blockchain Capital และบริษัทในเครือ ทั้ง Blockchain Capital และผู้เขียนไม่รับประกันความถูกต้อง ความเพียงพอ หรือความสมบูรณ์ของข้อมูลที่ให้ในแต่ละบล็อกโพสต์ ไม่มีการรับรองหรือการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยปริยายหรือมอบให้โดยหรือในนามของ Blockchain Capital ผู้เขียนหรือบุคคลอื่นใดเกี่ยวกับความถูกต้องและครบถ้วนหรือยุติธรรมของข้อมูลที่มีอยู่ในบล็อกโพสต์ใด ๆ และไม่รับผิดชอบหรือรับผิดใด ๆ สำหรับข้อมูลดังกล่าว ไม่มีสิ่งใดในบล็อกโพสต์แต่ละรายการที่ถือเป็นการลงทุน ข้อบังคับ กฎหมาย การปฏิบัติตามกฎระเบียบ หรือภาษี หรือคำแนะนำอื่น ๆ และไม่เป็นที่พึ่งพาในการตัดสินใจลงทุน บล็อกโพสต์ไม่ควรถูกมองว่าเป็นคำแนะนำในปัจจุบันหรือในอดีตหรือการชักชวนให้ซื้อหรือขายหลักทรัพย์หรือนำกลยุทธ์การลงทุนมาใช้ บล็อกโพสต์อาจมีการคาดคะเนหรือแถลงการณ์เชิงคาดการณ์ล่วงหน้าอื่นๆ ซึ่งอิงตามความเชื่อ ข้อสันนิษฐาน และความคาดหวังที่อาจเปลี่ยนแปลงอันเป็นผลมาจากเหตุการณ์หรือปัจจัยต่างๆ ที่เป็นไปได้ หากมีการเปลี่ยนแปลงเกิดขึ้น ผลลัพธ์ที่แท้จริงอาจแตกต่างอย่างมากจากที่แสดงในข้อความคาดการณ์ล่วงหน้า แถลงการณ์เชิงคาดการณ์ล่วงหน้าทั้งหมดกล่าวถึง ณ วันที่จัดทำแถลงการณ์เท่านั้น และทั้ง Blockchain Capital และผู้เขียนแต่ละรายไม่มีหน้าที่ในการปรับปรุงข้อความดังกล่าว ยกเว้นตามที่กฎหมายกำหนด ในขอบเขตที่เอกสาร งานนำเสนอ หรือสื่ออื่นๆ ที่ผลิต เผยแพร่ หรือแจกจ่ายโดย Blockchain Capital ถูกอ้างอิงในบล็อกโพสต์ใดๆ ควรอ่านเนื้อหาดังกล่าวด้วยความระมัดระวังต่อข้อจำกัดความรับผิดชอบใดๆ ที่ระบุไว้ในนั้น

ประทับเวลา:

เพิ่มเติมจาก Blockchain Capital

Joshua Rivera ที่ปรึกษาทั่วไปของเราเป็นพยานต่อหน้าคณะอนุกรรมการด้านบริการทางการเงินของสภาว่าด้วยสินทรัพย์ดิจิทัล เทคโนโลยีทางการเงิน และการมีส่วนร่วม

โหนดต้นทาง: 2074665
ประทับเวลา: เมษายน 26, 2023

ฟอร์ตา

โหนดต้นทาง: 1091174
ประทับเวลา: กันยายน 30, 2021