บทความรวบรวมลักษณะทางเทคนิคของโครงร่างการใช้งานกระแสหลักของ ZKP

avatar
慢雾科技
1ปี ที่แล้ว
ประมาณ 10931คำ,ใช้เวลาอ่านบทความฉบับเต็มประมาณ 14นาที
เมื่อพัฒนาวงจรที่ปราศจากความรู้ นักพัฒนาจำเป็นต้องให้ความสนใจกับการเลือกเฟรมเวิร์กที่

แหล่งที่มาดั้งเดิม:ชื่อเรื่องรอง

ภาพรวม

ภาพรวม

เมื่อศึกษาหลักการทำงานของระบบ blockchain เราต้องเข้าใจความรู้ด้านการเข้ารหัสต่างๆ เช่น secp 256 k 1 ซึ่งเป็นอัลกอริทึมลายเซ็นแบบโค้งและอสมมาตรที่ใช้สำหรับลายเซ็นในระบบ bitcoin และ ethereum และตรวจสอบบัญชี ตัวอย่างเช่น sha 256 เป็นอัลกอริทึมแฮชที่ใช้ในการบีบอัดข้อมูลที่มีความยาวผันแปรเป็นรหัสที่มีความยาวคงที่ เช่น ฐาน 58 ซึ่งสามารถแปลงการเข้ารหัสข้อมูลเป็นสตริงที่แสดงด้วยอักขระที่พิมพ์ได้ ตัวอย่างเช่น ECDH ซึ่งเป็นอัลกอริทึมการแลกเปลี่ยนคีย์ Diffie-Hellman ใช้เพื่อแลกเปลี่ยนคีย์การสื่อสารอย่างปลอดภัยระหว่างโหนด P2P

ZKP ถูกเสนอครั้งแรกในปี 1985 อย่างไรก็ตาม เป็นเวลานานแล้วที่ไม่พบสถานการณ์การใช้งานขนาดใหญ่ ดังนั้นการพัฒนาเทคโนโลยีจึงช้ามาก จนกระทั่งเกิด Bitcoin ในปี 2009 ผู้คนพบว่ามันเหมาะสมมากสำหรับการแก้ปัญหาความเป็นส่วนตัวและความสามารถในการปรับขนาดใน blockchain ตั้งแต่นั้นมา เงินทุนและความสามารถจำนวนมากได้ลงทุนในการพัฒนาและการประยุกต์ใช้ทางวิศวกรรมของเทคโนโลยีนี้ มีการใช้งาน ZKP มากมาย เช่น: Groth 16, PlonK, STARK เป็นต้น และยังไม่มีมาตรฐานอุตสาหกรรมที่แท้จริงใด ๆ เกิดขึ้น บทความนี้จะรวบรวมคุณลักษณะทางเทคนิคของการใช้งาน ZKP ต่าง ๆ โดยหวังว่าจะช่วยเหลือคุณได้ ศึกษา วิจัย และ พัฒนา ด้าน วิศวกรรม .

ฟิลด์แอปพลิเคชัน ZKP

ชื่อเรื่องรอง

1. ใบรับรองความเป็นส่วนตัว

Tornado Cash เป็นเครื่องผสมเหรียญที่ทำงานบน Ethereum ใช้ ZKP เพื่อพิสูจน์โหนดบน Merkle-Tree ผู้ใช้สามารถฝากโทเค็นในจำนวนคงที่ลงในกองทุนรวม จากนั้นใช้ Proof ที่สร้างโดย ZKP เพื่อพิสูจน์ว่าพวกเขาได้ฝาก กองทุน แต่ไม่จำเป็นต้องเปิดเผยข้อมูลการทำธุรกรรมเมื่อคุณฝากเงิน

ชื่อเรื่องรอง

2. การเอาท์ซอร์สคอมพิวเตอร์

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

ชื่อเรื่องรอง

3. การบีบอัดข้อมูล

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

ชื่อระดับแรก

ระบบพิสูจน์คือการใช้อัลกอริทึมพื้นฐานของ ZKP ซึ่งสามารถแบ่งออกเป็นสองประเภท: แบบโต้ตอบและไม่โต้ตอบ:

ชื่อเรื่องรอง

1. ระบบพิสูจน์แบบโต้ตอบ

ระบบพิสูจน์แบบโต้ตอบประกอบด้วยสองฝ่าย เรียกว่า Prover (เรียกสั้นๆ ว่า P) และ Verifier (เรียกสั้นๆ ว่า V) โดยที่ P รู้ความลับบางอย่าง (เช่น คีย์ลับของระบบเข้ารหัสคีย์สาธารณะ หรือรากที่สองของสมการกำลังสอง สารตกค้าง x), P หวังที่จะโน้มน้าว V ว่าเขากุมความลับนี้ไว้ การพิสูจน์เชิงโต้ตอบประกอบด้วยหลายรอบ ในแต่ละรอบ P และ V อาจต้องส่งข้อความหากันตามข้อความที่ได้รับจากกันและกันและคำนวณผลลัพธ์ด้วยตัวเอง วิธีทั่วไปคือ V ส่งข้อความค้นหาไปยัง P ในแต่ละรอบ และ P ตอบกลับไปยัง V หลังจากดำเนินการทุกรอบแล้ว V ตัดสินใจว่าจะยอมรับการพิสูจน์ของ P หรือไม่ โดยพิจารณาว่า P สามารถตอบคำถามที่ส่งด้วยตัวเองในแต่ละรอบได้อย่างถูกต้องหรือไม่

2. ระบบพิสูจน์แบบไม่โต้ตอบ

ในระบบการพิสูจน์แบบโต้ตอบที่กล่าวถึงข้างต้น P และ V ไม่โต้ตอบ และการพิสูจน์ถูกสร้างขึ้นโดย P โดยตรงไปยัง V และ V ยืนยันการพิสูจน์โดยตรง ระบบพิสูจน์แบบนี้เรียกว่า non-interactive proof system (NIZK)

ระบบพิสูจน์ที่เราใช้ในบล็อกเชนโดยทั่วไปคือ NIZK โหนดในบล็อกเชนคือตัวตรวจสอบ V และผู้ใช้ปลายทางหรือเครือข่ายสองชั้น (เลเยอร์ 2) คือตัวพิสูจน์ P

ลิงค์อ้างอิง [ 1 ] ที่ส่วนท้ายของบทความอธิบายโครงร่างและคุณลักษณะของ NIZK ที่ได้รับการเผยแพร่สู่สาธารณะในช่วงสิบปีที่ผ่านมา

  • Bulletproofs

    ในการใช้งานด้านวิศวกรรมเชิงปฏิบัติ เรามุ่งเน้นที่ประสิทธิภาพและความอเนกประสงค์เป็นหลัก ดังนั้นเราจึงจัดประเภทและเปรียบเทียบระบบพิสูจน์ทั่วไปอย่างละเอียดมากขึ้น โปรดดูลิงก์อ้างอิงที่ส่วนท้ายของบทความ [2]:

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

  • SNARKs (Succinct Non-interactive ARguments of Knowledge)

    โครงการตัวแทน: Bulletproofs, Halo, Halo 2

    คุณสมบัติ: ขนาดของการพิสูจน์นั้นกระชับและเวลาในการตรวจสอบการพิสูจน์ค่อนข้างสั้น แต่แต่ละวงจรจำเป็นต้องเชื่อถือได้

  • SNORKs (Succinct Non-interactive Oecumenical (Universal) aRguments of Knowledge)

    โครงการตัวแทน: Groth 16

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

  • STARKs (Succinct (Scalable) Transparent ARguments of Knowledge)

    โครงการตัวแทน: Sonic, PlonK, Marlin, Plonky 2

    คุณสมบัติ: หลักฐานมีขนาดใหญ่มาก ไม่ต้องการการตั้งค่าที่เชื่อถือได้ และมีความสามารถในการปรับขนาดได้ดี

การจำแนกประเภทข้างต้นนั้นไม่แน่นอน ตัวอย่างเช่น โครงการ Halo/Halo 2 พวกเขายังยืมแนวคิดมากมายจาก Plonk ในการออกแบบ นอกจากนี้ SNORK มักจะถูกจัดประเภทเป็น SNARK เนื่องจากพวกมันทั้งหมดต้องการการตั้งค่าที่เชื่อถือได้

3. การเปรียบเทียบประสิทธิภาพ

บทความรวบรวมลักษณะทางเทคนิคของโครงร่างการใช้งานกระแสหลักของ ZKP

บทความรวบรวมลักษณะทางเทคนิคของโครงร่างการใช้งานกระแสหลักของ ZKP

(ดูลิงค์อ้างอิงท้ายบทความ [3])

ชื่อระดับแรก

การเขียนโปรแกรมวงจร

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

  • รหัสของการพิสูจน์ ZKP จะถูกแปลงเป็นชุดของนิพจน์ R 1 CS ที่มีข้อจำกัดอย่างง่าย จากนั้นจึงแปลงเป็น QAP พหุนามขนาดใหญ่โดยใช้วิธีแก้ไข Lagrange ซึ่งสุดท้ายแล้วจะถูกจำกัดในรูปแบบของวงจรเกท

  • เช่นเดียวกับวงจรฮาร์ดแวร์ รหัสสาขาทั้งหมดจะถูกดำเนินการพร้อมกัน

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

ชื่อเรื่องรอง

  • libsnark

1. ไลบรารีการพัฒนาที่ใช้กันทั่วไป

ระบบพิสูจน์ทั่วไป ไลบรารีวงจรพื้นฐาน และตัวอย่างการใช้งานถูกนำไปใช้ในภาษา C++

ระบบพิสูจน์อักษร: BBFR 15, BCCT 12, BCCT 13, BCGT V1 3, BCIOP 13, BCT V1 4 a, BCT V1 4 b, CT V1 5, DFGK 14, Groth 16, GM 17, GGPR 13, PGHR 13

  • gnark

ลิงค์: https://github.com/scipr-lab/libsnark

ระบบพิสูจน์การใช้งานใน Go ให้ API ระดับสูงในการออกแบบวงจร

ระบบพิสูจน์: Groth 16, PlonK

  • bellman

ลิงค์: https://github.com/consensys/gnark

ระบบพิสูจน์การใช้งานใน Rust ซึ่งมีอินเทอร์เฟซวงจร โครงสร้างพื้นฐาน และการใช้งานวงจรพื้นฐานบางอย่าง เช่น บูลีนและนามธรรมที่เป็นตัวเลข

ระบบพิสูจน์: Groth 16.

  • snarkjs

ลิงค์: https://github.com/zkcrypto/bellman

ระบบพิสูจน์การใช้งานใน Javascript และ WASM ที่สามารถใช้เพื่อเชื่อถือการตั้งค่า สร้างการพิสูจน์ และตรวจสอบการพิสูจน์ snarkjs ใช้คอมไพเลอร์ circom ของ iden 3 เพื่อรวบรวมวงจรที่กำหนดโดย DSL

ระบบพิสูจน์: Groth 16, PlonK

  • ethsnarks

ลิงค์: https://github.com/iden3/snarkjs

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

ระบบพิสูจน์: Groth 16.

  • bulletproofs

ลิงค์: https://github.com/HarryR/ethsnarks

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

ระบบพิสูจน์: กันกระสุน

  • halo 2 

ลิงค์: https://github.com/dalek-cryptography/bulletproofs

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

ลิงค์: https://github.com/zcash/halo 2.

ชื่อเรื่องรอง

2. กระบวนการพัฒนา

บทความรวบรวมลักษณะทางเทคนิคของโครงร่างการใช้งานกระแสหลักของ ZKP

ยกตัวอย่าง gnark เวิร์กโฟลว์ทั่วไปมีดังนี้:

1) ใช้รหัสเพื่ออธิบายปัญหาที่จะแก้ไข

2) รวบรวมเป็นระบบข้อ จำกัด R 1 CS

3) ทำการตั้งค่าที่น่าเชื่อถือใน R 1 CS เพื่อรับรหัสพิสูจน์และรหัสยืนยัน

5) ผู้ตรวจสอบใช้ปุ่มยืนยันเพื่อตรวจสอบหลักฐาน

ภาษาพิเศษสำหรับการเขียนโปรแกรมวงจร

ชื่อเรื่องรอง

  • Cairo

1. ขึ้นอยู่กับแพลตฟอร์ม Ethereum

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

ระบบพิสูจน์: STARK

  • Zokrates

ลิงค์: https://www.cairo-lang.org/docs/

ZoKrates ใช้ DSL เพื่ออธิบายวงจรและจัดเตรียมไลบรารีวงจรที่ใช้กันทั่วไป ซึ่งสามารถช่วยคุณใช้การคำนวณที่ตรวจสอบได้ใน DApps ตั้งแต่การกำหนดมาตรฐานโปรแกรมของคุณในภาษาระดับสูงไปจนถึงการสร้างหลักฐานการคำนวณ จากนั้นตรวจสอบหลักฐานเหล่านี้ใน Solidity

ระบบพิสูจน์: GM 17, Groth 16, Marlin

  • Circom

ลิงค์: https://zokrates.github.io/

ภาษา Circom ใช้ DSL เพื่ออธิบายวงจร และสามารถร่วมมือกับ snarkjs เพื่อสร้างการพิสูจน์ในเบราว์เซอร์ของผู้ใช้ โดยใช้ Ethereum smart contract เป็นตัวตรวจสอบ

ระบบพิสูจน์: Groth 16, PlonK

  • Noir

ลิงค์: https://iden 3.io/circom.

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

ระบบพิสูจน์อักษร: PlonK.

  • zkEVM

ลิงค์: https://noir-lang.org/index.html

ปัจจุบัน zkSync, Polygon, Scroll, Starkware และทีมอื่น ๆ กำลังดำเนินการเพื่อใช้งาน zkEVM และมีความคืบหน้าอย่างมาก

ชื่อเรื่องรอง

  • zkApp (Mina)

2. ขึ้นอยู่กับแพลตฟอร์มเชนสาธารณะ

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

ระบบพิสูจน์อักษร: PlonK.

  • LEO (Aleo)

ลิงค์: https://docs.minaprotocol.com/zkapps

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

ลิงค์: https://leo-lang.org/

ชื่อระดับแรก

ปัญหาด้านความปลอดภัยทั่วไปของ ZKP

  • ในช่วงไม่กี่ปีที่ผ่านมา ทีมรักษาความปลอดภัยของ SlowMist ได้ทำการตรวจสอบความปลอดภัยของวงจรและแอปพลิเคชันสำหรับผลิตภัณฑ์ ZKP ที่มีชื่อเสียงมากมาย รวมถึง ZKSwap, Zkdex, Zksafe เป็นต้น และพบช่องโหว่ที่มีความเสี่ยงปานกลางและสูงจำนวนมาก แอปพลิเคชันมี ความเข้าใจที่ลึกซึ้งยิ่งขึ้น ปัญหาด้านความปลอดภัยทั่วไปที่ทีมรักษาความปลอดภัย SlowMist พบในการตรวจสอบแอปพลิเคชัน ZKP คือ:

ความเสี่ยงของพารามิเตอร์ความน่าเชื่อถือ
ในการใช้ zk-SNARK จำเป็นต้องมีชุดพารามิเตอร์ทั่วไปที่เรียกว่า Common Reference String (CRS) แต่การสร้างพารามิเตอร์เหล่านี้ยังสร้างพารามิเตอร์ส่วนตัวบางอย่าง และหากฝ่ายใดฝ่ายหนึ่งได้รับพารามิเตอร์ส่วนตัวเหล่านี้ ก็จะสามารถปลอมแปลงหลักฐานได้

นอกจากนี้ กระบวนการสร้าง CRS จำเป็นต้องได้รับการตรวจสอบเพื่อให้แน่ใจว่าไม่มีแบ็คดอร์หมายเลขสุ่ม หรือพารามิเตอร์ส่วนตัวไม่ได้ถูกรักษาไว้โดยเจตนา การใช้ zk-SNORK จำเป็นต้องตรวจสอบให้แน่ใจว่าสตริงอ้างอิงที่มีโครงสร้าง (SRS) นั้นเชื่อถือได้

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

ความปลอดภัยของรหัสคงที่

  • ส่วนนี้มีสาเหตุหลักมาจากปัญหาด้านความปลอดภัยที่เกิดจากการเข้ารหัสที่ไม่ได้มาตรฐาน เช่น: พารามิเตอร์ที่ไม่ได้ตรวจสอบ ค่าส่งกลับที่ยังไม่ได้ประมวลผล ตัวเลขล้น ขอบเขตที่ไม่ได้ตรวจสอบ ฯลฯ หากภาษาสำหรับเขียนวงจรคือ C/C++ ก็จะมีความเสี่ยงเช่นกัน หน่วยความจำล้น

ความเสี่ยงจากการโจมตีของซัพพลายเชน

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

ข้อผิดพลาดเชิงตรรกะ

  • ข้อผิดพลาดทางลอจิกเป็นข้อผิดพลาดที่เป็นไปได้มากที่สุดในการนำวงจรไปใช้จำเป็นต้องตรวจสอบว่าการออกแบบวงจรเป็นไปตามข้อกำหนดร่วมกับเอกสารข้อกำหนดหรือไม่

โจมตีการใช้จ่ายสองเท่า

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

พิสูจน์การปลอมแปลง

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

การโจมตีช่องทางด้านข้าง

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

ความล้มเหลวของข้อ จำกัด ของวงจร

  • การแสดงออกของวงจรที่ไม่เหมาะสมอาจส่งผลให้เกิดตัวแปรที่ไม่มีข้อจำกัด

การโจมตีด้วยค่าพิเศษ

  • ค่าอินพุตพิเศษบางค่าอาจข้ามตรรกะการตรวจสอบความถูกต้องของระบบ เช่น 0, null เป็นต้น

การคาดเดาความเป็นส่วนตัว

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

บางโครงการอาจมีสิทธิ์พิเศษของผู้ดูแลระบบ เมื่อใช้สิทธิ์อย่างผิดกฎหมาย เงินโครงการและทรัพย์สินของผู้ใช้จะถูกขโมย

  • ความเสี่ยงของสัญญาอัจฉริยะ

ความเสี่ยงของสัญญาอัจฉริยะ

ชื่อระดับแรก

สรุป

สรุป

สุดท้ายนี้ ขอขอบคุณ Safeheron ผู้ให้บริการดูแลทรัพย์สินดิจิทัลแบบครบวงจรชั้นนำสำหรับคำแนะนำทางเทคนิคระดับมืออาชีพ

ลิงค์อ้างอิง:

[ 1 ]. https://en.wikipedia.org/wiki/Zero-knowledge_proof

[ 2 ]. https://github.com/matter-labs/awesome-zero-knowledge-proofs

[ 3 ].https://docs.google.com/presentation/d/1gfB6WZMvM9mmDKofFibIgsyYShdf0RV_Y8TLz3k1Ls0/edit

บทความต้นฉบับ, ผู้เขียน:慢雾科技。พิมพ์ซ้ำ/ความร่วมมือด้านเนื้อหา/ค้นหารายงาน กรุณาติดต่อ report@odaily.email;การละเมิดการพิมพ์ซ้ำกฎหมายต้องถูกตรวจสอบ

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

การอ่านแนะนำ
ตัวเลือกของบรรณาธิการ