การสำรวจภาษาโปรแกรม ZK

มือใหม่12/24/2023, 3:04:47 PM
บทความนี้นำเสนอขอบเขตการใช้งานของภาษาโปรแกรม ZK ต่าง ๆ พร้อมกับข้อดีและข้อเสียของแต่ละภาษา

Zero-Knowledge Proofs (ZKP) เป็นเครื่องมือทางคริปโตที่มีพลวัคซ์ที่สามารถยืนยันความถูกต้องของการคำนวณในขณะที่ปกป้องความเป็นส่วนตัวของข้อมูลนำเข้า ภาษาโดเมนที่เฉพาะเจาะจง (DSLs) เป็นส่วนสำคัญของโครงสร้างพื้นฐานนี้ โดยการทำให้กระบวนการพัฒนาและการตรวจสอบวงจร ZKP เป็นไปอย่างง่าย พวกเขาเป็นสะพานที่สำคัญระหว่างแนวคิดนามธรรมและการแสดงวงจรที่แม่นยำที่ต้องการโดยระบบพิสูจน์

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

ในทศวรรษที่ผ่านมา เราได้เห็นการเพิ่มมากขึ้นอย่างมีนัยสำคัญในปริมาณและความหลากหลายของ DSLs การเคลื่อนไหวในวงการนี้เป็นที่ชัดเจนในการพัฒนาภาษาวงจรต่าง ๆ ซึ่งรวมถึง Noir, Leo, และ Zinc ไม่ว่าคุณจะต้องการตัวเลือกที่หลากหลายเช่น Circom หรือการแก้ไขแก้ไขสำหรับแพลตฟอร์มที่เฉพาะเจาะจงเช่น Cairo คุณสามารถเลือกจากภาษาและกรอบการพัฒนาหลาย ๆ ภาษาเพื่อเขียนวงจร ZKP ได้

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

Cairo by StarkWare

ไคโรเป็นภาษาหลักสําหรับโปรแกรมการคํานวณทั่วไปที่สนับสนุนการพิสูจน์ STARK มีบทบาทสําคัญในความสําเร็จของ StarkNet และ StarkEx ซึ่งขับเคลื่อนความสามารถในการปรับขนาดของแอปพลิเคชันบน Ethereum mainnet โดยเฉพาะอย่างยิ่งไคโรเป็นเครื่องมือในการสนับสนุนการใช้งานที่หลากหลายรวมถึง dYdX, Sorare และ Immutable X ชื่อ "ไคโร" มาจากตัวย่อของ "CPU Algebraic Intermediate Representation" ในขอบเขตของการพิสูจน์ความรู้เป็นศูนย์มันทํางานคล้ายกับภาษาแอสเซมบลีทําให้นักพัฒนาที่คุ้นเคยกับภาษาการเขียนโปรแกรมระดับต่ําเช่น C, C ++ หรือ Solidity เพื่อเริ่มต้นได้ง่ายขึ้น

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

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

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

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

Zinc by ZkSync

Zinc เป็นภาษาโปรแกรมที่ออกแบบมาเฉพาะเพื่อสร้างสัญญาอัจฉริยะและวงจร SNARK บนแพลตฟอร์ม zkSync ซึ่งนำสัญลักษณ์ Rust มาใช้งาน รวมองค์ประกอบของ Solidity และมอบคุณสมบัติที่เฉพาะเจาะจง

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

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

Noir By Aztec

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

Noir มีความสามารถที่สำคัญในการขยายขอบเขตของแอปพลิเคชันที่สามารถใช้ประโยชน์จากความสามารถในการป้องกันความเป็นส่วนตัวที่ ZKP เสนอ ซึ่งจะเสริมความเป็นส่วนตัวและประสิทธิภาพในการตรวจสอบ มันคอมไพล์เป็นแทนที่ตัวกลางที่เรียกว่า Abstract Circuit Intermediate Representation (Acer) ซึ่งจะสามารถคอมไพล์ต่อไปเป็น R1CS การแยกแยะระบบการพิสูจน์ด้านหลังจากภาษาเองทำให้ Noir สามารถสนับสนุนระบบการพิสูจน์ต่าง ๆ เช่น Aztec Brettenberg, Turbo Plonk, และการรวมระบบการพิสูจน์ในอนาคตเช่น Groth16 และ Halo2

ภาษารวมไปถึงไลบรารีมาตรฐานที่มีฟังก์ชันที่มีประสิทธิภาพ เช่น SHA-256 (ฟังก์ชันแฮชที่ใช้เทคโนโลยีเข้ารหัสเพื่อสร้างเอาต์พุตขนาดคงที่) และการตรวจสอบ Pedersen-Merkle (เทคนิคการตรวจสอบเชิงคริปโตแบบใช้กำลังทบทวน Pedersen และต้นไม้ Merkle เพื่อให้มั่นใจในความสมบูรณ์และความสอดคล้องข้อมูล) การออกแบบของ Noir คล้ายกับ Rust มีคุณลักษณะที่คุ้นเคยสำหรับนักพัฒนาแอปพลิเคชัน เช่น ฟังก์ชัน ซับโมดูล ประเภทที่กำหนดเองของผู้ใช้ (structs) คำสั่งเงื่อนไข ลูป และค่าคงที่ทั่วโลก นอกจากนี้กำลังมีความพยายามอย่างต่อเนื่องในการพัฒนา generics และฟังก์ชันขั้นแรกเพื่อเสริมความชัดเจนของ Noir ไปอีกขั้น

สำคัญที่จะทราบว่า Noir ยังคงกำลังพัฒนาอยู่ ซึ่งอาจมีข้อจำกัดและบั๊ก อย่างไรก็ตาม ทีมพัฒนามุ่งมั่นที่จะพัฒนาและปรับปรุงอย่างต่อเนื่อง

o1js by 0(1) Labs

o1js, ที่เคยเรียกว่า SnarkyJS คือไลบรารีของ TypeScript ที่พัฒนาโดย 0(1) Labs สำหรับสร้างสัญญาอัจฉริยะโดยใช้ภาษาโปรแกรม SNARK โดยสมบูรณ์อย่างสมบูรณ์กับเทคโนโลยีที่มีอยู่แล้ว เช่น Node.js และความเข้ากันได้กับเบราว์เซอร์ เพื่อให้มั่นใจในการเข้าถึงและความสะดวกสบายสำหรับนักพัฒนา

o1js ผสานรวมกับไลบรารีและเครื่องมือ JavaScript และ TypeScript ได้อย่างราบรื่น ทําให้นักพัฒนามีระบบนิเวศที่แข็งแกร่งและการสนับสนุนชุมชนที่กว้างขวาง การบูรณาการนี้ช่วยลดความยุ่งยากในกระบวนการพัฒนาและลดช่วงการเรียนรู้ที่เกี่ยวข้องกับการนําสภาพแวดล้อมการพัฒนาใหม่มาใช้ นอกจากนี้ยังรองรับ Visual Studio Code (VS Code) ซึ่งเป็นโปรแกรมแก้ไขโค้ดที่ใช้กันอย่างแพร่หลายทําให้นักพัฒนาสามารถใช้ประโยชน์จากคุณสมบัติต่างๆเช่นการเติมโค้ดการเน้นไวยากรณ์และการดีบักเพื่อเพิ่มประสบการณ์การพัฒนา

โดยพื้นฐานแล้ว o1js เป็นเฟรมเวิร์ก ZK แบบมัลติฟังก์ชั่นที่นําเสนอเครื่องมือสําคัญที่จําเป็นสําหรับการสร้างหลักฐาน ZK รองรับโปรแกรม ZK ที่หลากหลายซึ่งครอบคลุมการดําเนินการที่พิสูจน์ได้ในตัวที่หลากหลายเช่นเลขคณิตพื้นฐานการแฮชการลงนามการดําเนินการบูลีนการเปรียบเทียบและอื่น ๆ ด้วยเฟรมเวิร์ก o1js คุณสามารถสร้าง zkApps บน Mina Protocol สัญญาอัจฉริยะเหล่านี้ดําเนินการในฝั่งไคลเอ็นต์ด้วยอินพุตส่วนตัว

โดยเฉพาะอย่างยิ่งในช่วงต้นเดือนกันยายน 2023 ทีม 0(1) Labs ได้ประกาศการเปลี่ยนจาก SnarkyJS เป็น o1js โดยเน้นย้ําถึงความมุ่งมั่นในการปรับปรุงประสิทธิภาพ โดยเฉพาะอย่างยิ่งที่น่าสังเกตคือความสําเร็จของพวกเขาในการลดเวลาในการโหลดห้องสมุดลง 3-4 เท่าซึ่งหมายถึงเวลาที่ต้องใช้ในการนําเข้า o1js ซึ่งเป็นกระบวนการที่สามารถบล็อกเธรดหลักได้ สําหรับเว็บแอปพลิเคชันเวลาในการโหลดเป็นสิ่งสําคัญสําหรับระยะเวลาของการดําเนินการ JavaScript และการแสดงผลหน้าเว็บโดยรวม นอกจากนี้ทีมงานยังอัปเดต Mina zkApp CLI ปรับปรุงประสบการณ์การสร้างอินเทอร์เฟซผู้ใช้และประกาศการปรับปรุงเพิ่มเติมของ Archive Node API เพื่อเพิ่มความน่าเชื่อถือและความชัดเจน

Leo by Aleo

บล็อกเชน Aleo โดดเด่นในด้านสัญญาอัจฉริยะโดยเน้นที่การปกป้องความเป็นส่วนตัว หัวใจหลักของมันคือภาษาการเขียนโปรแกรม Leo ซึ่งเป็นภาษาที่พิมพ์แบบคงที่ซึ่งได้รับแรงบันดาลใจจาก Rust ออกแบบมาโดยเฉพาะสําหรับการพัฒนาแอปพลิเคชันส่วนตัว Leo สนับสนุนผู้สร้างที่มุ่งสร้างระบบนิเวศแบบกระจายอํานาจที่ปลอดภัยและเป็นความลับ สิ่งที่ทําให้ Leo แตกต่างอย่างแท้จริงคือบทบาทผู้บุกเบิกในการแนะนําชุดเครื่องมือที่ครอบคลุมสําหรับการใช้งานที่ไม่มีความรู้สากล ชุดเครื่องมือนี้ประกอบด้วยกรอบการทดสอบรีจิสทรีของแพ็คเกจตัวแยกวิเคราะห์การนําเข้าคอมไพเลอร์ระยะไกลและตัวสร้างทฤษฎีบท

แนวคิดของ Leo มาจากทีมพัฒนาที่นําโดย Howard Wu โดยจินตนาการถึงระบบที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันแบบกระจายอํานาจโดยให้ความสําคัญกับความเป็นส่วนตัวและความปลอดภัย การออกแบบของ Leo มาจากหลักการของ Rust ยังรวมองค์ประกอบที่คล้ายกับ JavaScript ไว้ด้วยซึ่งช่วยให้รู้สึกคุ้นเคยและสะดวกในระหว่างกระบวนการพัฒนา นอกจากนี้ Leo ยังมีเป้าหมายที่จะเร่งและปรับปรุงการพัฒนาโดยนําเสนอแพลตฟอร์มการทดสอบแบบบูรณาการการลงทะเบียนแพ็คเกจและตัวแปลงการนําเข้า การผสานรวมนี้ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะหลักของแอปพลิเคชันโดยไม่ต้องจมอยู่กับปัญหาโครงสร้างพื้นฐาน

คุณสมบัติที่โดดเด่นของ Leo คือคอมไพเลอร์ซึ่งแปลงโปรแกรมเป็นรูปแบบการพิสูจน์ R1CS ระดับต่ํา เอกลักษณ์ของคอมไพเลอร์ Leo อยู่ในกระบวนการตรวจสอบอย่างเป็นทางการที่เข้มงวด การตรวจสอบนี้มีความสําคัญเนื่องจากช่องโหว่สามารถเกิดขึ้นได้ในหลายขั้นตอนตั้งแต่การเขียนโปรแกรมเริ่มต้นไปจนถึงการตรวจสอบและการรวบรวม ด้วยการตรวจสอบทางคณิตศาสตร์อย่างเข้มงวดเพื่อให้แน่ใจว่าคอมไพเลอร์สอดคล้องกับเจตนาของโปรแกรมเมอร์ Leo มีจุดมุ่งหมายเพื่อลดความเสี่ยงของข้อผิดพลาดที่ตรวจไม่พบหรือช่องโหว่ที่อาจเกิดขึ้นโดยเฉพาะอย่างยิ่งในบริบท L2, ZK-rollups หรือโปรแกรมส่วนตัวบนแพลตฟอร์ม Leo

Circom by iden3

Circom ซึ่งเป็นภาษาเฉพาะโดเมน (DSL) ที่สร้างขึ้นอย่างพิถีพิถันสําหรับการพัฒนาวงจร ZK เป็นการสร้างสรรค์ร่วมกันโดย Jordi Baylina และทีม iden3 คอมไพเลอร์ Circom ซึ่งเขียนด้วย Rust มีหน้าที่หลักในการรวบรวมวงจรที่พัฒนาโดยใช้ภาษา Circom โดยเฉพาะอย่างยิ่ง Circom ได้กลายเป็นตัวเลือกที่ต้องการสําหรับแอปพลิเคชัน ZK ที่โดดเด่นในโลกแห่งความเป็นจริงเช่น Dark Forest และ Tornado Cash ความนิยมของมันเป็นผลมาจากประสิทธิภาพที่น่าประทับใจซึ่งรวมถึงเวลาพิสูจน์เบราว์เซอร์ที่รวดเร็วผ่านการพิสูจน์ WASM ที่ปรับให้เหมาะสมการพิสูจน์ฝั่งเซิร์ฟเวอร์ที่มีประสิทธิภาพผ่าน rapidsnark และการตรวจสอบแบบ on-chain ที่มีประสิทธิภาพ

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


แหล่งที่มาของรูปภาพ: Circom

ความเข้ากันได้ของ Circom มุ่งไปที่ระบบ Zero-Knowledge Proof (ZKP) ที่ใช้กันอย่างแพร่หลาย เช่น snarkjs และ libsnark โดยส่วนใหญ่ ความเข้ากันได้นี้จะทำให้การผสมผสานกับระบบเหล่านี้เป็นไปอย่างราบรื่น แต่ก็หมายความว่าวงจร Circom จะได้รับคุณสมบัติและข้อจำกัดที่เฉพาะเจาะจงที่เกี่ยวข้องกับการพึ่งพาเหล่านี้ นักพัฒนาที่ต้องการหรือต้องการระบบ ZKP ทางเลือกอาจเผชิญกับความท้าทายในเรื่องความเข้ากันได้หรือต้องลงทุนความพยายามเพิ่มเติมเพื่อปรับแต่งและผสมผสานวงจรที่สร้างขึ้นโดย Circom เข้ากับระบบที่พิชิตของพวกเขา

Lurk by Lurk Lab

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

การคำนวณที่สามารถตรวจสอบได้: Lurk ช่วยให้สามารถพิสูจน์ความถูกต้องของสมการของมันภายใต้เงื่อนไขศูนย์ความรู้เชิงลึก ซึ่งเสริมความเชื่อมั่นในผลลัพธ์การคำนวณ

Zero Knowledge: ผู้ใช้สามารถพิสูจน์ความรู้โดยไม่ต้องเปิดเผยข้อมูลที่เฉพาะเจาะจงนอกเหนือจากข้อมูลสาธารณะ ซึ่งจะช่วยปกป้องความเป็นส่วนตัว

ข้อมูลแบบที่สามารถระบุได้: แต่ละโปรแกรม Lurk มาพร้อมกับตัวระบุเนื้อหาที่เป็นเอกลักษณ์ (CID) ทำให้เข้ากันได้กับ IPFS และ IPLD

ความสมบูรณ์ของทัวริง: Lurk สนับสนุนการสร้างและพิสูจน์คําสั่งการคํานวณโดยพลการ

Higher-Order Functions: ฟังก์ชันที่ซ่อนอยู่สามารถยอมรับและส่งคืนฟังก์ชันอื่น ๆ ซึ่งช่วยให้การเขียนโปรแกรมแบบฟังก์ชันได้ออกแบบได้อย่างหรูหรา

การคำนวณด้วยข้อมูลส่วนบุคคล: Lurk ช่วยให้สามารถจัดการกับข้อมูลส่วนบุคคลโดยให้ผลลัพธ์ที่ถูกต้องตามหลักการโดยไม่มีการรั่วไหลข้อมูลส่วนบุคคล

ในการสร้างวงจรทั่วไป Lurk ใช้ Lisp's "cons" memory allocator อย่างแพร่หลายซึ่งรวมถึงการรวมสมการและสร้างการอ้างอิงผ่านการทำ hashing ความสำคัญอยู่ที่การพิสูจน์ว่าสองสมการมีการ hashing ไปยังการอ้างอิงเดียวกันจริง การยืนยันนี้ทำให้ Lurk สามารถทำการคำนวณภายในวงจร snark ได้

ความสามารถของ Lurk มีคุณสมบัติที่หลากหลาย เช่น รองรับการเรียกตนเองอย่างไม่จำกัด, การวนซ้ำ, การควบคุมการไหลของเงื่อนไข, และระบบพิสูจน์หลังส่วนหลายรูปแบบ เช่น Groth16, SnarkPack+ และ Nova ความหลากหลายนี้เปิดโอกาสให้แก่การประยุกต์ใช้ต่าง ๆ เช่น การคำนวณที่สามารถยืนยันได้, การจัดการข้อมูลส่วนตัว, และการดำเนินโปรแกรมที่สามารถทำงานได้แบบ Turing ภายในวงจร snark

สรุป

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

คำปฏิเสธ:

  1. บทความนี้ถูกนำมาจาก [Gatepanewslab]. สิทธิ์ตามลิขสิทธิ์เป็นของผู้เขียนเดิม [ ScalingX]. หากมีการคัดค้านการพิมพ์ซ้ํานี้โปรดติดต่อทีม Gate Learn และพวกเขาจะจัดการทันที
  2. ข้อความประกอบความรับผิดชอบ: มุมมองและความคิดเห็นที่แสดงในบทความนี้มีเพียงผู้เขียนเท่านั้นและไม่เป็นที่ปรึกษาด้านการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่นๆ โดยทีม Gate Learn นอกจากนี้ถ้าไม่ได้กล่าวถึงการคัดลอก การแจกจ่ายหรือการลอกเลียนบทความที่ถูกแปลนั้นถือเป็นการละเมิดทรัพย์สินทางปัญญา

การสำรวจภาษาโปรแกรม ZK

มือใหม่12/24/2023, 3:04:47 PM
บทความนี้นำเสนอขอบเขตการใช้งานของภาษาโปรแกรม ZK ต่าง ๆ พร้อมกับข้อดีและข้อเสียของแต่ละภาษา

Zero-Knowledge Proofs (ZKP) เป็นเครื่องมือทางคริปโตที่มีพลวัคซ์ที่สามารถยืนยันความถูกต้องของการคำนวณในขณะที่ปกป้องความเป็นส่วนตัวของข้อมูลนำเข้า ภาษาโดเมนที่เฉพาะเจาะจง (DSLs) เป็นส่วนสำคัญของโครงสร้างพื้นฐานนี้ โดยการทำให้กระบวนการพัฒนาและการตรวจสอบวงจร ZKP เป็นไปอย่างง่าย พวกเขาเป็นสะพานที่สำคัญระหว่างแนวคิดนามธรรมและการแสดงวงจรที่แม่นยำที่ต้องการโดยระบบพิสูจน์

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

ในทศวรรษที่ผ่านมา เราได้เห็นการเพิ่มมากขึ้นอย่างมีนัยสำคัญในปริมาณและความหลากหลายของ DSLs การเคลื่อนไหวในวงการนี้เป็นที่ชัดเจนในการพัฒนาภาษาวงจรต่าง ๆ ซึ่งรวมถึง Noir, Leo, และ Zinc ไม่ว่าคุณจะต้องการตัวเลือกที่หลากหลายเช่น Circom หรือการแก้ไขแก้ไขสำหรับแพลตฟอร์มที่เฉพาะเจาะจงเช่น Cairo คุณสามารถเลือกจากภาษาและกรอบการพัฒนาหลาย ๆ ภาษาเพื่อเขียนวงจร ZKP ได้

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

Cairo by StarkWare

ไคโรเป็นภาษาหลักสําหรับโปรแกรมการคํานวณทั่วไปที่สนับสนุนการพิสูจน์ STARK มีบทบาทสําคัญในความสําเร็จของ StarkNet และ StarkEx ซึ่งขับเคลื่อนความสามารถในการปรับขนาดของแอปพลิเคชันบน Ethereum mainnet โดยเฉพาะอย่างยิ่งไคโรเป็นเครื่องมือในการสนับสนุนการใช้งานที่หลากหลายรวมถึง dYdX, Sorare และ Immutable X ชื่อ "ไคโร" มาจากตัวย่อของ "CPU Algebraic Intermediate Representation" ในขอบเขตของการพิสูจน์ความรู้เป็นศูนย์มันทํางานคล้ายกับภาษาแอสเซมบลีทําให้นักพัฒนาที่คุ้นเคยกับภาษาการเขียนโปรแกรมระดับต่ําเช่น C, C ++ หรือ Solidity เพื่อเริ่มต้นได้ง่ายขึ้น

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

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

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

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

Zinc by ZkSync

Zinc เป็นภาษาโปรแกรมที่ออกแบบมาเฉพาะเพื่อสร้างสัญญาอัจฉริยะและวงจร SNARK บนแพลตฟอร์ม zkSync ซึ่งนำสัญลักษณ์ Rust มาใช้งาน รวมองค์ประกอบของ Solidity และมอบคุณสมบัติที่เฉพาะเจาะจง

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

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

Noir By Aztec

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

Noir มีความสามารถที่สำคัญในการขยายขอบเขตของแอปพลิเคชันที่สามารถใช้ประโยชน์จากความสามารถในการป้องกันความเป็นส่วนตัวที่ ZKP เสนอ ซึ่งจะเสริมความเป็นส่วนตัวและประสิทธิภาพในการตรวจสอบ มันคอมไพล์เป็นแทนที่ตัวกลางที่เรียกว่า Abstract Circuit Intermediate Representation (Acer) ซึ่งจะสามารถคอมไพล์ต่อไปเป็น R1CS การแยกแยะระบบการพิสูจน์ด้านหลังจากภาษาเองทำให้ Noir สามารถสนับสนุนระบบการพิสูจน์ต่าง ๆ เช่น Aztec Brettenberg, Turbo Plonk, และการรวมระบบการพิสูจน์ในอนาคตเช่น Groth16 และ Halo2

ภาษารวมไปถึงไลบรารีมาตรฐานที่มีฟังก์ชันที่มีประสิทธิภาพ เช่น SHA-256 (ฟังก์ชันแฮชที่ใช้เทคโนโลยีเข้ารหัสเพื่อสร้างเอาต์พุตขนาดคงที่) และการตรวจสอบ Pedersen-Merkle (เทคนิคการตรวจสอบเชิงคริปโตแบบใช้กำลังทบทวน Pedersen และต้นไม้ Merkle เพื่อให้มั่นใจในความสมบูรณ์และความสอดคล้องข้อมูล) การออกแบบของ Noir คล้ายกับ Rust มีคุณลักษณะที่คุ้นเคยสำหรับนักพัฒนาแอปพลิเคชัน เช่น ฟังก์ชัน ซับโมดูล ประเภทที่กำหนดเองของผู้ใช้ (structs) คำสั่งเงื่อนไข ลูป และค่าคงที่ทั่วโลก นอกจากนี้กำลังมีความพยายามอย่างต่อเนื่องในการพัฒนา generics และฟังก์ชันขั้นแรกเพื่อเสริมความชัดเจนของ Noir ไปอีกขั้น

สำคัญที่จะทราบว่า Noir ยังคงกำลังพัฒนาอยู่ ซึ่งอาจมีข้อจำกัดและบั๊ก อย่างไรก็ตาม ทีมพัฒนามุ่งมั่นที่จะพัฒนาและปรับปรุงอย่างต่อเนื่อง

o1js by 0(1) Labs

o1js, ที่เคยเรียกว่า SnarkyJS คือไลบรารีของ TypeScript ที่พัฒนาโดย 0(1) Labs สำหรับสร้างสัญญาอัจฉริยะโดยใช้ภาษาโปรแกรม SNARK โดยสมบูรณ์อย่างสมบูรณ์กับเทคโนโลยีที่มีอยู่แล้ว เช่น Node.js และความเข้ากันได้กับเบราว์เซอร์ เพื่อให้มั่นใจในการเข้าถึงและความสะดวกสบายสำหรับนักพัฒนา

o1js ผสานรวมกับไลบรารีและเครื่องมือ JavaScript และ TypeScript ได้อย่างราบรื่น ทําให้นักพัฒนามีระบบนิเวศที่แข็งแกร่งและการสนับสนุนชุมชนที่กว้างขวาง การบูรณาการนี้ช่วยลดความยุ่งยากในกระบวนการพัฒนาและลดช่วงการเรียนรู้ที่เกี่ยวข้องกับการนําสภาพแวดล้อมการพัฒนาใหม่มาใช้ นอกจากนี้ยังรองรับ Visual Studio Code (VS Code) ซึ่งเป็นโปรแกรมแก้ไขโค้ดที่ใช้กันอย่างแพร่หลายทําให้นักพัฒนาสามารถใช้ประโยชน์จากคุณสมบัติต่างๆเช่นการเติมโค้ดการเน้นไวยากรณ์และการดีบักเพื่อเพิ่มประสบการณ์การพัฒนา

โดยพื้นฐานแล้ว o1js เป็นเฟรมเวิร์ก ZK แบบมัลติฟังก์ชั่นที่นําเสนอเครื่องมือสําคัญที่จําเป็นสําหรับการสร้างหลักฐาน ZK รองรับโปรแกรม ZK ที่หลากหลายซึ่งครอบคลุมการดําเนินการที่พิสูจน์ได้ในตัวที่หลากหลายเช่นเลขคณิตพื้นฐานการแฮชการลงนามการดําเนินการบูลีนการเปรียบเทียบและอื่น ๆ ด้วยเฟรมเวิร์ก o1js คุณสามารถสร้าง zkApps บน Mina Protocol สัญญาอัจฉริยะเหล่านี้ดําเนินการในฝั่งไคลเอ็นต์ด้วยอินพุตส่วนตัว

โดยเฉพาะอย่างยิ่งในช่วงต้นเดือนกันยายน 2023 ทีม 0(1) Labs ได้ประกาศการเปลี่ยนจาก SnarkyJS เป็น o1js โดยเน้นย้ําถึงความมุ่งมั่นในการปรับปรุงประสิทธิภาพ โดยเฉพาะอย่างยิ่งที่น่าสังเกตคือความสําเร็จของพวกเขาในการลดเวลาในการโหลดห้องสมุดลง 3-4 เท่าซึ่งหมายถึงเวลาที่ต้องใช้ในการนําเข้า o1js ซึ่งเป็นกระบวนการที่สามารถบล็อกเธรดหลักได้ สําหรับเว็บแอปพลิเคชันเวลาในการโหลดเป็นสิ่งสําคัญสําหรับระยะเวลาของการดําเนินการ JavaScript และการแสดงผลหน้าเว็บโดยรวม นอกจากนี้ทีมงานยังอัปเดต Mina zkApp CLI ปรับปรุงประสบการณ์การสร้างอินเทอร์เฟซผู้ใช้และประกาศการปรับปรุงเพิ่มเติมของ Archive Node API เพื่อเพิ่มความน่าเชื่อถือและความชัดเจน

Leo by Aleo

บล็อกเชน Aleo โดดเด่นในด้านสัญญาอัจฉริยะโดยเน้นที่การปกป้องความเป็นส่วนตัว หัวใจหลักของมันคือภาษาการเขียนโปรแกรม Leo ซึ่งเป็นภาษาที่พิมพ์แบบคงที่ซึ่งได้รับแรงบันดาลใจจาก Rust ออกแบบมาโดยเฉพาะสําหรับการพัฒนาแอปพลิเคชันส่วนตัว Leo สนับสนุนผู้สร้างที่มุ่งสร้างระบบนิเวศแบบกระจายอํานาจที่ปลอดภัยและเป็นความลับ สิ่งที่ทําให้ Leo แตกต่างอย่างแท้จริงคือบทบาทผู้บุกเบิกในการแนะนําชุดเครื่องมือที่ครอบคลุมสําหรับการใช้งานที่ไม่มีความรู้สากล ชุดเครื่องมือนี้ประกอบด้วยกรอบการทดสอบรีจิสทรีของแพ็คเกจตัวแยกวิเคราะห์การนําเข้าคอมไพเลอร์ระยะไกลและตัวสร้างทฤษฎีบท

แนวคิดของ Leo มาจากทีมพัฒนาที่นําโดย Howard Wu โดยจินตนาการถึงระบบที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันแบบกระจายอํานาจโดยให้ความสําคัญกับความเป็นส่วนตัวและความปลอดภัย การออกแบบของ Leo มาจากหลักการของ Rust ยังรวมองค์ประกอบที่คล้ายกับ JavaScript ไว้ด้วยซึ่งช่วยให้รู้สึกคุ้นเคยและสะดวกในระหว่างกระบวนการพัฒนา นอกจากนี้ Leo ยังมีเป้าหมายที่จะเร่งและปรับปรุงการพัฒนาโดยนําเสนอแพลตฟอร์มการทดสอบแบบบูรณาการการลงทะเบียนแพ็คเกจและตัวแปลงการนําเข้า การผสานรวมนี้ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะหลักของแอปพลิเคชันโดยไม่ต้องจมอยู่กับปัญหาโครงสร้างพื้นฐาน

คุณสมบัติที่โดดเด่นของ Leo คือคอมไพเลอร์ซึ่งแปลงโปรแกรมเป็นรูปแบบการพิสูจน์ R1CS ระดับต่ํา เอกลักษณ์ของคอมไพเลอร์ Leo อยู่ในกระบวนการตรวจสอบอย่างเป็นทางการที่เข้มงวด การตรวจสอบนี้มีความสําคัญเนื่องจากช่องโหว่สามารถเกิดขึ้นได้ในหลายขั้นตอนตั้งแต่การเขียนโปรแกรมเริ่มต้นไปจนถึงการตรวจสอบและการรวบรวม ด้วยการตรวจสอบทางคณิตศาสตร์อย่างเข้มงวดเพื่อให้แน่ใจว่าคอมไพเลอร์สอดคล้องกับเจตนาของโปรแกรมเมอร์ Leo มีจุดมุ่งหมายเพื่อลดความเสี่ยงของข้อผิดพลาดที่ตรวจไม่พบหรือช่องโหว่ที่อาจเกิดขึ้นโดยเฉพาะอย่างยิ่งในบริบท L2, ZK-rollups หรือโปรแกรมส่วนตัวบนแพลตฟอร์ม Leo

Circom by iden3

Circom ซึ่งเป็นภาษาเฉพาะโดเมน (DSL) ที่สร้างขึ้นอย่างพิถีพิถันสําหรับการพัฒนาวงจร ZK เป็นการสร้างสรรค์ร่วมกันโดย Jordi Baylina และทีม iden3 คอมไพเลอร์ Circom ซึ่งเขียนด้วย Rust มีหน้าที่หลักในการรวบรวมวงจรที่พัฒนาโดยใช้ภาษา Circom โดยเฉพาะอย่างยิ่ง Circom ได้กลายเป็นตัวเลือกที่ต้องการสําหรับแอปพลิเคชัน ZK ที่โดดเด่นในโลกแห่งความเป็นจริงเช่น Dark Forest และ Tornado Cash ความนิยมของมันเป็นผลมาจากประสิทธิภาพที่น่าประทับใจซึ่งรวมถึงเวลาพิสูจน์เบราว์เซอร์ที่รวดเร็วผ่านการพิสูจน์ WASM ที่ปรับให้เหมาะสมการพิสูจน์ฝั่งเซิร์ฟเวอร์ที่มีประสิทธิภาพผ่าน rapidsnark และการตรวจสอบแบบ on-chain ที่มีประสิทธิภาพ

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


แหล่งที่มาของรูปภาพ: Circom

ความเข้ากันได้ของ Circom มุ่งไปที่ระบบ Zero-Knowledge Proof (ZKP) ที่ใช้กันอย่างแพร่หลาย เช่น snarkjs และ libsnark โดยส่วนใหญ่ ความเข้ากันได้นี้จะทำให้การผสมผสานกับระบบเหล่านี้เป็นไปอย่างราบรื่น แต่ก็หมายความว่าวงจร Circom จะได้รับคุณสมบัติและข้อจำกัดที่เฉพาะเจาะจงที่เกี่ยวข้องกับการพึ่งพาเหล่านี้ นักพัฒนาที่ต้องการหรือต้องการระบบ ZKP ทางเลือกอาจเผชิญกับความท้าทายในเรื่องความเข้ากันได้หรือต้องลงทุนความพยายามเพิ่มเติมเพื่อปรับแต่งและผสมผสานวงจรที่สร้างขึ้นโดย Circom เข้ากับระบบที่พิชิตของพวกเขา

Lurk by Lurk Lab

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

การคำนวณที่สามารถตรวจสอบได้: Lurk ช่วยให้สามารถพิสูจน์ความถูกต้องของสมการของมันภายใต้เงื่อนไขศูนย์ความรู้เชิงลึก ซึ่งเสริมความเชื่อมั่นในผลลัพธ์การคำนวณ

Zero Knowledge: ผู้ใช้สามารถพิสูจน์ความรู้โดยไม่ต้องเปิดเผยข้อมูลที่เฉพาะเจาะจงนอกเหนือจากข้อมูลสาธารณะ ซึ่งจะช่วยปกป้องความเป็นส่วนตัว

ข้อมูลแบบที่สามารถระบุได้: แต่ละโปรแกรม Lurk มาพร้อมกับตัวระบุเนื้อหาที่เป็นเอกลักษณ์ (CID) ทำให้เข้ากันได้กับ IPFS และ IPLD

ความสมบูรณ์ของทัวริง: Lurk สนับสนุนการสร้างและพิสูจน์คําสั่งการคํานวณโดยพลการ

Higher-Order Functions: ฟังก์ชันที่ซ่อนอยู่สามารถยอมรับและส่งคืนฟังก์ชันอื่น ๆ ซึ่งช่วยให้การเขียนโปรแกรมแบบฟังก์ชันได้ออกแบบได้อย่างหรูหรา

การคำนวณด้วยข้อมูลส่วนบุคคล: Lurk ช่วยให้สามารถจัดการกับข้อมูลส่วนบุคคลโดยให้ผลลัพธ์ที่ถูกต้องตามหลักการโดยไม่มีการรั่วไหลข้อมูลส่วนบุคคล

ในการสร้างวงจรทั่วไป Lurk ใช้ Lisp's "cons" memory allocator อย่างแพร่หลายซึ่งรวมถึงการรวมสมการและสร้างการอ้างอิงผ่านการทำ hashing ความสำคัญอยู่ที่การพิสูจน์ว่าสองสมการมีการ hashing ไปยังการอ้างอิงเดียวกันจริง การยืนยันนี้ทำให้ Lurk สามารถทำการคำนวณภายในวงจร snark ได้

ความสามารถของ Lurk มีคุณสมบัติที่หลากหลาย เช่น รองรับการเรียกตนเองอย่างไม่จำกัด, การวนซ้ำ, การควบคุมการไหลของเงื่อนไข, และระบบพิสูจน์หลังส่วนหลายรูปแบบ เช่น Groth16, SnarkPack+ และ Nova ความหลากหลายนี้เปิดโอกาสให้แก่การประยุกต์ใช้ต่าง ๆ เช่น การคำนวณที่สามารถยืนยันได้, การจัดการข้อมูลส่วนตัว, และการดำเนินโปรแกรมที่สามารถทำงานได้แบบ Turing ภายในวงจร snark

สรุป

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

คำปฏิเสธ:

  1. บทความนี้ถูกนำมาจาก [Gatepanewslab]. สิทธิ์ตามลิขสิทธิ์เป็นของผู้เขียนเดิม [ ScalingX]. หากมีการคัดค้านการพิมพ์ซ้ํานี้โปรดติดต่อทีม Gate Learn และพวกเขาจะจัดการทันที
  2. ข้อความประกอบความรับผิดชอบ: มุมมองและความคิดเห็นที่แสดงในบทความนี้มีเพียงผู้เขียนเท่านั้นและไม่เป็นที่ปรึกษาด้านการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่นๆ โดยทีม Gate Learn นอกจากนี้ถ้าไม่ได้กล่าวถึงการคัดลอก การแจกจ่ายหรือการลอกเลียนบทความที่ถูกแปลนั้นถือเป็นการละเมิดทรัพย์สินทางปัญญา
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!