คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
นักพัฒนา ZK ต้องอ่าน: เครื่องมือเสริมตั้งแต่ระดับเริ่มต้นไปจนถึงระดับสูง
DAOrayaki
特邀专栏作者
2023-03-04 04:00
บทความนี้มีประมาณ 5392 คำ การอ่านทั้งหมดใช้เวลาประมาณ 8 นาที
บทความนี้หวังว่าจะเป็นแนวทางเพื่อช่วยให้นักพัฒนาเลือก ZK stack ที่เหมาะสมในระหว่างกระบวนการ

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

ฤดูร้อนที่แล้ว Vitalik เขียนบล็อกโพสต์โดยสรุปประเภทต่างๆ ของ zkEVM (Zero-Knowledge Ethereum Virtual Machine) Vitalik กำหนดและแลกกับประสิทธิภาพและความเข้ากันได้

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

พลังแห่งความซับซ้อนเชิงนามธรรม

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

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

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

คำอธิบายภาพ

ตัวอย่างของเครื่องมือ/เทคนิคสำหรับ zk Stack และเลเยอร์

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

Arkworks-rs

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

ข้อได้เปรียบ

ข้อได้เปรียบ

ความยืดหยุ่นผ่านโมดูลาร์

ลดความซ้ำซ้อนของรหัส

ลดต้นทุนด้านวิศวกรรม

ลดพื้นที่พื้นผิวการตรวจสอบ/จุดบกพร่อง

อัปเกรดส่วนประกอบใดๆ โดยไม่ต้องปรับโครงสร้างใหม่

ข้อบกพร่อง

ข้อบกพร่อง

ต้องการความรู้เชิงลึกเกี่ยวกับชุดซอฟต์แวร์ทั้งหมด

หากไม่เข้าใจอย่างถูกต้อง การควบคุมที่มากเกินไปอาจนำไปสู่ปืนลูกซองได้

การควบคุมแบบละเอียดต้องใช้ความชำนาญในทุกระดับของกอง

Arkworks มีค่าเริ่มต้นที่เหมาะสม

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

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

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

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

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

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

Circom — Circom เป็นภาษาเฉพาะสำหรับการสร้างวงจรไฟฟ้า ปัจจุบันเป็นภาษาจริงสำหรับการผลิตวงจร ภาษานี้ไม่ตรงตามหลักสรีรศาสตร์ ทำให้ผู้พัฒนาตระหนักดีว่ากำลังเขียนวงจรอยู่

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

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

สำหรับใคร

นักพัฒนาแอปพลิเคชันที่ต้องการใช้ประโยชน์จากคุณสมบัติเฉพาะของ zk ในแอปพลิเคชันของตน

ข้อได้เปรียบ

ข้อได้เปรียบ

ผู้ใช้ไม่จำเป็นต้องเข้าใจรายละเอียด zk พื้นฐาน

ด้วยประสบการณ์ด้านการผลิตคุณสามารถใช้งานได้แล้ววันนี้

ตรวจสอบได้บนเครือข่าย

ข้อบกพร่อง

ข้อบกพร่อง

ผู้ใช้จำเป็นต้องเรียนรู้ DSL ใหม่

เครื่องมือและการสนับสนุนเกี่ยวกับภาษาเหล่านี้แยกจากกัน

ควบคุมกองหลักฐานพื้นฐานเพียงเล็กน้อยหรือไม่มีเลย (สำหรับตอนนี้)

zkEVMs

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

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

ต้นทุนการดำเนินงานสูง

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

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

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

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

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

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

ทีมพัฒนาจำนวนมาก

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

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

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

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

zkSync และเลื่อน

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

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

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

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

zkLLVM ได้รับการออกแบบมาเป็นส่วนเสริมของโครงสร้างพื้นฐาน LLVM ที่มีอยู่ ซึ่งเป็น toolchain มาตรฐานอุตสาหกรรมที่รองรับภาษาระดับสูงมากมาย เช่น Rust, C, C++ และอื่นๆ

วิธีการวิ่ง

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

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

ชั่งน้ำหนักข้อดีและข้อเสีย

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

ข้อได้เปรียบ

ข้อได้เปรียบ

ผู้ใช้สามารถเขียนโค้ดด้วยภาษาระดับสูงที่คุ้นเคย

โครงสร้างภายใน zk ทั้งหมดเป็นแบบแยกส่วนและไม่ได้รับผลกระทบจากผู้ใช้

ไม่ได้ขึ้นอยู่กับเฉพาะ"เครื่องเสมือน"ข้อบกพร่อง

ข้อบกพร่อง

แต่ละโปรแกรมมีวงจรที่แตกต่างกัน ยากที่จะเพิ่มประสิทธิภาพ (พิสูจน์ว่าตลาดแก้ปัญหานี้ได้บางส่วน)

การสลับ/อัปเกรดไลบรารี่ zk ภายในนั้นไม่ใช่เรื่องเล็กน้อย (ต้องมีการฟอร์ก)

zkVM

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

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

คำอธิบายภาพ

Risc Zero

สถาปัตยกรรมระดับสูงสำหรับการสร้าง Risc Zero Proof

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 ที่สร้างขึ้นระหว่างการคอมไพล์เป็นรหัสอินพุตสำหรับวงจรเครื่องเสมือน นักพัฒนาเพียงเรียกหลักฐาน ซึ่งจะส่งคืนวัตถุใบเสร็จรับเงิน (หลักฐาน zk ที่มีร่องรอยการดำเนินการ) และทุกคนสามารถเรียก `ยืนยัน' ได้จากทุกที่ จากมุมมองของนักพัฒนา ไม่จำเป็นต้องเข้าใจว่า zk ทำงานอย่างไร ระบบพื้นฐานจะจัดการกับความซับซ้อนเหล่านี้ทั้งหมด

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

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

วงจรที่ใช้ซ้ำได้ที่สร้างไว้ล่วงหน้า

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

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

ตามที่กล่าวไว้ในรายละเอียด มีตัวเลือกต่างๆ นับไม่ถ้วนสำหรับการพัฒนาแอปพลิเคชัน zk ซึ่งทั้งหมดมีการแลกเปลี่ยนที่ไม่เหมือนใคร

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

คู่มือนักพัฒนาแอปพลิเคชัน zkGalaxy

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

ฉากที่เกี่ยวข้อง

ต้องการการควบคุมแบบละเอียดทั่วทั้งกองพิสูจน์อักษร

หลีกเลี่ยงการสร้างส่วนประกอบทั่วไปขึ้นมาใหม่

ลองพิสูจน์ชุดรูปแบบ เส้นโค้ง และรูปแบบดั้งเดิมระดับต่ำอื่นๆ

ไม่สามารถใช้ได้

มือใหม่ที่กำลังมองหาอินเทอร์เฟซการพิสูจน์ขั้นสูง

เครื่องมือเสริม

Arkworks-rs

2. zk DSLs

ฉากที่เกี่ยวข้อง

ต้องการใช้ภาษาที่ผ่านการทดลองและทดสอบแล้ว

ต้องการขนาดวงจรขั้นต่ำ เต็มใจที่จะละทิ้งสิ่งที่เป็นนามธรรม

ไม่สามารถใช้ได้

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

เครื่องมือเสริม

Circom

Aztec Noir

Cairo

ZoKrates

Leo

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

ฉากที่เกี่ยวข้อง

ไม่เต็มใจที่จะเสียค่าใช้จ่ายของวงจรเอนกประสงค์

ต้องการเขียนวงจรด้วยภาษาที่คุ้นเคย

ต้องใช้วงจรที่ปรับแต่งสูง

ไม่สามารถใช้ได้

ต้องการควบคุมพื้นฐานการเข้ารหัสพื้นฐาน

ต้องการวงจรที่ปรับให้เหมาะสมที่สุดอยู่แล้ว

เครื่องมือเสริม

nil zkLLVM

4.zkEVM

ฉากที่เกี่ยวข้อง

มี dApp ที่ทำงานอยู่แล้วบน EVM

จำเป็นต้องเสนอข้อเสนอที่ถูกกว่าให้กับผู้ใช้

ต้องการลดความพยายามที่จำเป็นในการปรับใช้กับเชนใหม่

สนใจเฉพาะความเรียบง่ายของ zk (การบีบอัด)

ไม่สามารถใช้ได้

ต้องการการเทียบเท่า EVM ที่สมบูรณ์แบบ

คุณสมบัติความเป็นส่วนตัวที่ต้องใช้ zk

มีกรณีการใช้งานที่ไม่ใช่บล็อกเชน

เครื่องมือเสริม

zksync 2.0 

Polygon zkEVM

Scroll

Starknet

5.zkVM

ฉากที่เกี่ยวข้อง

ต้องการเขียนโค้ดด้วยภาษาระดับสูง

จำเป็นต้องพิสูจน์ความถูกต้องของการดำเนินการ

จำเป็นต้องซ่อนข้อมูลอินพุตบางส่วนสำหรับการดำเนินการนี้จากผู้ตรวจสอบ

ความเชี่ยวชาญ zk เพียงเล็กน้อยหรือไม่มีเลย

ไม่สามารถใช้ได้

ในสภาพแวดล้อมที่มีเวลาแฝงต่ำมาก (ยังช้าอยู่)

มีโปรแกรมใหญ่ (สำหรับตอนนี้)

เครื่องมือเสริม

RISC Zero

zkWASM

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

ฉากที่เกี่ยวข้อง

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

ความเชี่ยวชาญเพียงเล็กน้อยหรือไม่มีเลยเกี่ยวกับสิ่งที่อยู่ภายใต้ประทุนของ zk

ไม่สามารถใช้ได้

มีความต้องการเฉพาะทางสูง

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

สรุปแล้ว

Manta Network

Semaphore

สรุปแล้ว

ขอบคุณ

ขอบคุณ

การรวบรวมบทความนี้ได้รับการสนับสนุนและข้อเสนอแนะจากชุมชน DAOrayaki

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

นักพัฒนา
Vitalik
zkSync
เทคโนโลยี
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
บทความนี้หวังว่าจะเป็นแนวทางเพื่อช่วยให้นักพัฒนาเลือก ZK stack ที่เหมาะสมในระหว่างกระบวนการ
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android