คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
บันทึกการศึกษาที่ปราศจากความรู้ที่พิสูจน์ได้: ความเป็นมาและที่มา
安比(SECBIT)实验室
特邀专栏作者
2019-12-24 03:12
บทความนี้มีประมาณ 7142 คำ การอ่านทั้งหมดใช้เวลาประมาณ 11 นาที
บันทึกการศึกษาพิสูจน์ความรู้เป็นศูนย์ของ Stanford Scholar

ผู้เขียนบทความนี้ Dongze เป็นหุ้นส่วนขนาดเล็กจาก Ambi Technology Community ปัจจุบันเขากำลังศึกษาอยู่ที่ Stanford University และทิศทางการวิจัยของเขาคือการเข้ารหัส บทความชุดนี้มาจากบันทึกการศึกษาของผู้เขียนเกี่ยวกับหลักสูตร Stanford ที่มีชื่อเสียง "CS 251: Cryptocurrencies และเทคโนโลยี blockchain" ผู้สอนหลักสูตรคือ Dan Boneh ปรมาจารย์ด้านการเข้ารหัส

ผู้เขียนบทความนี้ Dongze เป็นหุ้นส่วนขนาดเล็กจาก Ambi Technology Community ปัจจุบันเขากำลังศึกษาอยู่ที่ Stanford University และทิศทางการวิจัยของเขาคือการเข้ารหัส บทความชุดนี้มาจากบันทึกการศึกษาของผู้เขียนเกี่ยวกับหลักสูตร Stanford ที่มีชื่อเสียง "CS 251: Cryptocurrencies และเทคโนโลยี blockchain" ผู้สอนหลักสูตรคือ Dan Boneh ปรมาจารย์ด้านการเข้ารหัส

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

คำนำ

คำนำ

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

หลังจากอ่านคำนำแล้วเราสามารถเริ่มข้อความได้

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

ข้อบกพร่องของ Bitcoin

หากคุณคุ้นเคยกับ Bitcoin คุณควรรู้ว่าในเครือข่าย Bitcoin ทุกธุรกรรมจะถูกเปิดเผยต่อสาธารณะ

หาก A ต้องการจ่ายเงินให้กับ B A ก็จะประกาศผ่านลำโพงให้ทั้งเครือข่ายทราบว่าเธอต้องการสร้างธุรกรรมใหม่ (Tx) และผู้รับผลประโยชน์จากธุรกรรมนี้คือ Public Key (P2PK) ของ B หรือ แฮชของคีย์สาธารณะ (P2PKH) ตราบใดที่ B เห็นการทำธุรกรรม เขาสามารถใช้คีย์ส่วนตัวของเขาเพื่อเซ็นลายเซ็นดิจิทัลเพื่อพิสูจน์ว่าเขาเป็นเจ้าของคีย์สาธารณะจริง ๆ ดังนั้นจึงใช้จ่ายเงิน

เมื่อ A ส่งธุรกรรมเพื่อจ่าย B ในฐานะผู้ยืนดู M บนเครือข่าย เธอจะเห็นเพียงสตริงของที่อยู่แบบอ่านไม่ออก aaaaa เพื่อจ่าย x เหรียญไปยังสตริงของที่อยู่แบบอ่านไม่ออก bbbbb จากนั้นเมื่อ B ส่งเงินให้ C เขาก็เห็นเพียงว่า bbbbb ส่งเงินจำนวนหนึ่งให้ ccccc เราจะเห็นว่าธุรกรรมใน Bitcoin นั้นเชื่อมโยงกันอย่างมาก แม้ว่าเราจะไม่รู้ว่าใครเป็นผู้ส่งเงินให้กับใคร แต่เราสามารถค้นหาสายธุรกรรมจำนวนมากได้โดยทำตามเถาวัลย์

หากผู้ใช้ทุกคนเพียงแค่ส่งเงินไปมาอย่างเชื่อฟัง Bitcoin นั้นค่อนข้างปลอดภัย

เมื่อผู้ใช้เข้าใจแล้ว ไม่ต้องการเล่นอีกต่อไป และต้องการถอนเงินจากการแลกเปลี่ยน ข้อมูลธุรกรรมของเครือข่ายทั้งหมดจะถูกเปิดเผย การแลกเปลี่ยนมักจะมีนโยบาย KYC (รู้จักลูกค้าของคุณ) และผู้ใช้แต่ละรายที่แลกเปลี่ยนสกุลเงินดิจิทัลและสกุลเงินตามกฎหมายจะต้องผ่านการตรวจสอบชื่อจริง เมื่อ C ถอนเงินจากที่อยู่ของ ccccc และหนีไป การแลกเปลี่ยนก็จับได้ว่า bbbbb ส่งเงินให้ C หาก C ตกเป็นผู้ต้องสงสัยในการฟอกเงิน ในตอนนี้ คุณเพียงแต่รออย่างเงียบๆ เพื่อให้ B ถอนเงินออกมา แล้วจึงจับได้

มีหลายบริษัทในสหรัฐอเมริกาที่ทำการวิเคราะห์ห่วงโซ่ธุรกรรมใน Bitcoin เช่น Chainalysis

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

ไม่ระบุชื่อกับนามแฝง

ความเข้าใจเกี่ยวกับความเป็นส่วนตัวของเราแบ่งออกเป็นสองประเภท

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

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

จากการวิเคราะห์นี้ Bitcoin เป็นกลไกนามแฝง: ผู้ใช้แต่ละคนจะสร้างรหัสสาธารณะ (นามแฝง) แบบสุ่มและรับเงินผ่านที่อยู่รหัสสาธารณะ นี่เป็นเหมือนบุคคลสี่คน A/B/C/D ตามลำดับโดยใช้นามแฝงว่า Xiaoming/Xiaohong/Ergou/Xiaogang เพื่อซื้อขายออนไลน์โดยไม่เปิดเผยตัวตน ตราบเท่าที่ D เปิดเผยตัวตนของเขาในลิงก์ใดๆ (เช่น ในการถอนเงินสดแลกเปลี่ยน) จากนั้น ความสัมพันธ์ระหว่าง Xiaoming/Xiaohong/Ergou และ D จะถูกเปิดเผยทันที

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

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

CoinJoin

เนื่องจากคนอื่นจะเห็นการจ่ายเงินของ A ให้กับ B และคนอื่นจะเห็นการจ่ายเงินของ C ให้กับ D ด้วยเช่นกัน บางคนคิดว่าการโยนคนทั้งสี่คน ABCD ลงในธุรกรรมเดียว เนื่องจากธุรกรรม Bitcoin สามารถมีอินพุตและเอาต์พุตได้หลายรายการ ผู้ยืนดูจะเห็นว่าในการทำธุรกรรมนั้น ทั้ง aaaaa และ ccccc ใส่ x เหรียญเข้าไป จากนั้น bbbbb และ ddddd จะได้รับเงิน ด้วยวิธีนี้ แม้ว่าการแลกเปลี่ยนจะรู้ว่าที่อยู่เหล่านี้ตรงกับ ABCD สี่คน แต่ก็ยากที่จะบอกว่าใครได้รับเงินจากใคร

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

ข้อเสียของ CoinJoin คืออะไร? ในความเป็นจริง การทำธุรกรรมหลายรายการแบบผสมกันไม่สามารถป้องกันผู้คนจากการถูกจับโดยผู้อื่นได้อย่างสมบูรณ์แบบ กล่าวได้เพียงว่ามันช่วยลดโอกาสที่จะถูกจับได้ทั้งหมด และมีอีกจุดที่สำคัญมาก หากคุณต้องการผสมธุรกรรมของ AB และ CD ปริมาณธุรกรรมจะต้องเท่ากัน หาก A จ่าย B 10,000 เหรียญ และ C จ่าย D หนึ่งเหรียญ เราเพียงแค่ดูที่อินพุตและเอาต์พุต และเราสามารถแบ่งธุรกรรม CoinJoin ออกเป็นสองธุรกรรมแยกกันได้ทันที ดังนั้น การทำธุรกรรมแบบผสมและจับคู่กับจำนวนธุรกรรมที่ใกล้เคียงกัน จึงเป็นปัญหาที่ไม่สามารถเพิกเฉยได้เมื่อใช้งาน CoinJoin

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

ธุรกรรมที่เป็นความลับ (ธุรกรรมส่วนตัว/CT)

เนื่องจากเป็นเรื่องยากมากที่จะซ่อนว่าฉันเป็นใคร ผู้คนจึงเริ่มคิดว่า: หากเราไม่ซ่อนรหัสสาธารณะที่เกี่ยวข้องกับธุรกรรม เราก็สามารถซ่อนจำนวนเงินของธุรกรรมได้เช่นกัน เมื่อ A ส่งเงินให้ B แม้ว่า B จะถูกเปิดเผย เครือข่ายทั้งหมดจะไม่รู้ว่า A ให้เงินไปเท่าไหร่

หากการดำเนินการนี้เป็นจริง เราก็สามารถใช้ Bitcoin เพื่อจ่ายค่าจ้างได้ ทุกคนสามารถเห็นเพียงว่าเงินเดือนของคุณมาถึง แต่พวกเขาไม่รู้ว่าคุณมีรายได้เท่าไร

เพื่อให้เข้าใจถึงวิธีการนี้ เราต้องเข้าใจอัลกอริทึมการเข้ารหัสแบบพิเศษก่อน: การเข้ารหัสแบบโฮโมมอร์ฟิก

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

เราสามารถสรุปได้ว่ามีวิธีการเข้ารหัส E ถ้า E เป็นโฮโมมอร์ฟิกเพิ่มเติม ดังนั้น E(a) + E(b) = E(a+b) ในทางกลับกัน ถ้าการคูณเป็นแบบโฮโมมอร์ฟิค แล้ว E(a) x E(b) = E(axb)

เนื่องจากบทความนี้เป็นบทความวิทยาศาสตร์ยอดนิยมเกี่ยวกับ zkp เราจึงไม่เข้าใจวิธีการนำไปใช้งานโดยละเอียด เราแค่ต้องเข้าใจว่าทั้งสมการการเข้ารหัสแบบวงรีและโมดูลตัวเลขจำนวนมากใน RSA มีคุณสมบัติโฮโมมอร์ฟิคบางอย่าง

ความมุ่งมั่นของพีเดอร์สัน

ย้ายไปยังหัวข้อของปริมาณที่ซ่อนอยู่ หาก A มียอดคงเหลือ 100 เหรียญและจ่าย 10 เหรียญให้กับ B การทำธุรกรรมจะมีลักษณะดังนี้:

เมื่อรวมกับโฮโมมอร์ฟิซึมแบบเพิ่มที่กล่าวถึงข้างต้น หากเรามีวิธีการเข้ารหัสแบบเพิ่มแบบโฮโมมอร์ฟิก E เราสามารถแปลงธุรกรรมนี้เป็น:

ตราบเท่าที่ตัวเลขแรกเท่ากับผลบวกของตัวเลขสองตัวสุดท้าย ผู้ยืนดูจะไม่เห็นปริมาณการซื้อขายในตอนท้าย แต่เขาต้องยอมรับว่า A ให้เงินส่วนหนึ่งแก่ B จริงๆ แล้วจากนั้นให้ส่วนหนึ่งของ เงินถูกส่งคืนให้กับ A วิธีนี้เรียกว่า Pederson Commitment (Pederson Commitment) ซึ่งจะซ่อนตัวข้อมูลเอง แต่พิสูจน์ความสัมพันธ์ระหว่างข้อมูล

ช่องโหว่จำนวนลบ

หลังจากอ่านข้อความนี้แล้ว เพื่อนๆ บางคนจะพบช่องโหว่ขนาดใหญ่: แม้ว่า Pederson สัญญาว่าจะพิสูจน์ความสัมพันธ์ระหว่างตัวเลข แต่เขาไม่ได้จำกัดช่วงค่าของตัวเลขใดๆ ทั้งสิ้น! กล่าวคือ A สามารถเล่นตลก ส่งธุรกรรม บอกว่าเขาต้องการจ่าย -100 เหรียญให้ B แล้ว "หา" 200 เหรียญให้ตัวเอง ด้วยวิธีนี้ สมการยังคงอยู่ A สามารถใช้สิ่งนี้เพื่อพิมพ์เงินได้ไม่จำกัด จึงทำลายระบบทั้งหมด

จะหลีกเลี่ยงการมีอยู่ของจำนวนลบได้อย่างไร? นอกเหนือจากคำสัญญาของ Pederson แล้ว เราต้องการหลักฐานอีกชุดหนึ่งเพื่อพิสูจน์ว่าตัวเลขในธุรกรรมทั้งหมดเป็นบวก กล่าวอีกนัยหนึ่ง ตัวเลขในการทำธุรกรรมทั้งหมดจะถูกจำกัดอยู่ในช่วง (Range Proof) ตั้งแต่ 0 ถึง 2^256 (ค่าสูงสุดของจำนวนเต็มบวก)

ฟังดูไม่ยาก และวิธีที่ง่ายที่สุดคือการเปิดเผยตัวเลขทั้งหมดนี้อย่างไม่ต้องสงสัย แต่สิ่งนี้เป็นการเอาชนะสมมติฐานของการซ่อนปริมาณธุรกรรม จึงต้องหาวิธีพิสูจน์อีกวิธีหนึ่ง คือ ไม่เปิดเผยจำนวนเดิมแต่ต้องพิสูจน์ลักษณะเฉพาะด้วย (ค่าอยู่ระหว่าง 0 ถึง 2^256) ฟังดูเหมือนประเด็นหรือไม่? ไม่ต้องกังวล มาดูคำถามอื่นกัน

ช่องโหว่ความเป็นเจ้าของ

ก่อนที่เราจะไปไกลกว่านี้ ฉันต้องการชี้ให้เห็นโดยเร็วว่า จริงๆ แล้วมีช่องโหว่ขนาดใหญ่ในโปรโตคอลนี้ นั่นคือ ความเป็นเจ้าของที่ไม่รู้จัก

เพื่อนๆ ที่รู้เรื่อง Bitcoin อาจรู้ว่าเมื่อสร้างธุรกรรม Bitcoin คุณต้องระบุ UTXO Txid ของธุรกรรมอินพุต เพื่อให้คุณตรวจสอบได้อย่างรวดเร็วว่า A ที่จะจ่ายเงินให้ B มีเงินจริงหรือไม่

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

จะแก้ปัญหานี้อย่างไร? มีสองตัวเลือก

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

นี่เป็นปัญหาไก่กับไข่ จะสร้างธุรกรรมส่วนตัวครั้งแรกได้อย่างไรโดยไม่มีปัญหา?

เราสามารถแปลงเหรียญธรรมดาให้เป็นผลงานส่วนตัวได้ผ่านธุรกรรมพิเศษ อินพุตของธุรกรรมนี้คือรหัสธุรกรรมที่มีอยู่ (Bitcoin UTXO) จากนั้นเอาต์พุตจะกลายเป็นเอาต์พุตส่วนตัว ด้วยวิธีนี้เราเสกไข่ที่เร็วที่สุด (ธุรกรรมที่มีการป้องกันของ ZCash คือหลักการนี้)

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

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

แต่ถ้าเราส่ง Merkle Proof โดยตรง ผู้ยืนดูทั้งหมดจะสามารถเห็นข้อมูลการทำธุรกรรมของ A ซึ่งละเมิดหลักการของการทำธุรกรรมส่วนตัว อีกครั้ง: เรายังจำเป็นต้องยืมอัลกอริทึมลึกลับที่กล่าวถึงข้างต้น - ไม่เพียง แต่สามารถซ่อนคำตอบ (สมดุลของ A) เท่านั้น แต่ยังพิสูจน์ได้ว่าตัวเลขนี้เป็นของสถานะของโลกจริงๆ

ZCash: ไม่ระบุชื่อทั้งหมด

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

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

ZCash เป็นสกุลเงินดิจิทัลที่ใช้โปรโตคอล ZeroCoin/ZeroCash ซึ่งสามารถทำธุรกรรมโดยไม่ระบุตัวตนได้อย่างสมบูรณ์ ฉันจะไม่แนะนำมากเกินไปที่นี่ แต่ฉันยังคงใช้เครื่องมือเข้ารหัสแบบเก่า: คำสัญญาของ Pederson, การพิสูจน์ช่วงเวลา, การพิสูจน์ Merkle และมนต์ดำที่เราพูดถึง: สิ่งที่ไม่เปิดเผยคำตอบ . พิสูจน์

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

ศูนย์หลักฐานความรู้ (zkSNARK)

ผมเชื่อว่าหลังจากอ่านข้างต้น ทุกคนมีความเข้าใจโดยทั่วไปเกี่ยวกับปัญหาที่เราต้องการแก้ไข

เราต้องการพิสูจน์ความสัมพันธ์ระหว่างตัวเลข เช่น 0 <= a <= 2^256 หรือ SHA256(x) = y แต่เราไม่ต้องการเปิดเผยตัวเลขเหล่านี้ เช่น a และ x ด้านบน จะสร้างระบบเพื่อให้บรรลุเป้าหมายนี้ได้อย่างไร?

ก่อนที่จะพูดถึงหัวข้อนี้ ฉันต้องการเปลี่ยนความคิดและแบ่งหัวข้อนี้ออกเป็นสองส่วน: ความรู้ที่เป็นศูนย์ (zk) และการพิสูจน์ (SNARK)

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

หลักฐาน (SNARK)

เริ่มกันที่หลักฐาน

ชื่อเต็มของ SNARK คือ Succict Non-interactive ARgument of Knowledge คำนามนี้ประกอบด้วยสามมิติ:

  • สั้น (รวบรัด): การพิสูจน์ควรสั้นพอ และเป็นการดีที่สุดที่จะตรวจสอบว่าการพิสูจน์มีความซับซ้อน O(logN) หรือแม้แต่ O(1)

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

  • การแสดงออกของความรู้ (ข้อโต้แย้งของความรู้): สิ่งนี้ค่อนข้างคลุมเครือ แต่ความหมายทั่วไป คือ สิ่งที่ต้องการพิสูจน์ต้องสามารถแสดงความรู้ได้ (Proof of Knowledge) หลักฐานของ PoK เกี่ยวข้องกับแนวคิดที่เป็นนามธรรมมากขึ้นของสารสกัด (Extractor) สำหรับเนื้อหาเฉพาะโปรดอ้างอิงจากบทความของ Mr. Guo Yu แต่ประโยคหนึ่ง สิ่งที่คุณพิสูจน์ว่ามีค่าและได้มาจากการคำนวน ไม่ใช่ไปยุ่งกับสิ่งอื่น

หลังจากอ่านคำจำกัดความแล้ว เราจะพบว่าเพียงแค่นำ SNARK ไปใช้ก็แข็งแกร่งมากแล้ว โดยเฉพาะในแง่ของความกะทัดรัด

เราสามารถนึกถึงแอปพลิเคชันได้ทันที: หากองค์กรบุคคลที่สามเก็บข้อมูล (ระดับ PB) จำนวนมากไว้ในฐานข้อมูลของตนเอง หากหน่วยงานรัฐบาลต้องการตรวจสอบฐานข้อมูลเพื่อให้แน่ใจว่าไม่มีปัญหากับจุดข้อมูลแต่ละจุด ภายใต้สถานการณ์ปกติ หน่วยงานรัฐอาจต้องอ่านทีละบรรทัด อ่านข้อมูล PB ทั้งหมด และดูเวลาสิ้นสุด ในเวลานี้ SNARK ก็ปรากฏขึ้น ขนาดและเวลาของ O(1) หรือ O(logN) ได้รับการพิสูจน์อย่างเต็มที่แล้วว่าไม่มีปัญหากับข้อมูลแต่ละรายการในฐานข้อมูลขนาดใหญ่นี้ เป็นเรื่องน่าตื่นเต้นเล็กน้อยที่จะคิดเกี่ยวกับมัน คนส่วนใหญ่คิดว่าสิ่งนี้เป็นไปไม่ได้โดยสิ้นเชิง: จะตรวจสอบความถูกต้องของหมายเลขนับสิบล้านหมายเลขด้วยหมายเลขเพียงไม่กี่หมายเลขได้อย่างไร

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

ความรู้เป็นศูนย์ (zk)

กลับไปที่ความรู้เป็นศูนย์ (ความรู้เป็นศูนย์)

ในความเป็นจริงแล้ว ความรู้ที่เป็นศูนย์เป็นเพียงข้อกำหนดเพิ่มเติมบนพื้นฐานของการพิสูจน์ SNARK นี้: การพิสูจน์ทั้งหมดนั้นไม่สามารถเปิดเผยข้อมูลใด ๆ ที่เกี่ยวข้องกับคำตอบที่จะพิสูจน์ได้ คำจำกัดความอย่างเป็นทางการของแนวคิดของความรู้เป็นศูนย์นั้นคลุมเครือมาก โดยแนะนำแนวคิดของโปรแกรมจำลอง (Simulator) สำหรับคำแนะนำโดยละเอียด คุณสามารถอ้างอิงจากบทความของ Mr. Guo Yu และฉันจะกล่าวถึงที่นี่ ในหนึ่งประโยค ไม่ว่าแฮ็กเกอร์จะฉลาดแค่ไหน เขาไม่สามารถดึงข้อมูลใดๆ ที่เกี่ยวข้องกับคำตอบได้ ไม่ว่าเขาจะดูหลักฐานที่ไม่มีความรู้ก็ตาม

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

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

การประยุกต์ใช้การพิสูจน์ความรู้เป็นศูนย์

ด้วย zkSNARK เราทำอะไรได้บ้าง?

สิ่งแรกคือการทำธุรกรรมส่วนตัว (ธุรกรรมที่เป็นความลับ) ดังกล่าวข้างต้นสามารถรับรู้ได้ กลไกการทำธุรกรรมส่วนตัวของ ZCash นั้นใช้ zkSNARK ด้วยวิธีนี้ การทำธุรกรรมสกุลเงินดิจิทัลจะปลอดภัยมากขึ้น

ประการที่สองคือเราสามารถใช้เทคโนโลยีนี้เพื่อแก้ปัญหาประสิทธิภาพของ blockchain ได้ดียิ่งขึ้น ตอนนี้มีหลายวิธีในการปรับขนาด blockchain อย่างไม่ต้องสงสัย: การเสียสละความแข็งแกร่งที่เป็นเอกฉันท์เพื่อเพิ่มความเร็วของการสร้างบล็อก การเปิดใช้งาน side chains หรือช่องทางแบบจุดต่อจุดแบบออฟไลน์ที่คล้ายกับ Lightning

ในความเป็นจริงมีแนวคิดอื่นที่เรียกว่า Rollup แนวคิดของ Rollup อาจเป็นไปได้ว่าโหลดบนห่วงโซ่หลักมีขนาดใหญ่เกินไป ดังนั้นเราจึงเปิดเซิร์ฟเวอร์ขนาดเล็กเพิ่มอีกสองสามตัว ซึ่งสามารถรับธุรกรรม ทำการตรวจสอบความถูกต้องของธุรกรรม จากนั้นแบทช์ธุรกรรมทั้งหมดที่สะสมในช่วงเวลาหนึ่ง อัปเดตเป็น ห่วงโซ่หลัก อย่างไรก็ตาม หากกระบวนการอัปเดตยังคงต้องการส่งข้อมูลธุรกรรมจำนวนมากไปยังเชนหลัก ความหมายของการยกเลิกนี้จะไม่มีอยู่จริง และจะไม่ลดภาระใดๆ ในเชนหลัก ในเวลานี้ SNARK มีประโยชน์: ผ่าน SNARK (อาจเป็น zk หรือไม่ก็ได้) เซิร์ฟเวอร์ Rollup สามารถส่งหลักฐานสั้นๆ ไปยังเชนหลักได้ เพื่อพิสูจน์ว่าธุรกรรมจำนวนมากนั้นถูกต้อง และมีเพียงเชนหลักเท่านั้น ต้องทำตามขั้นสุดท้าย ดังนั้นให้เพิ่มหรือลบ UTXO บางส่วน เท่านี้ก็เสร็จแล้ว ด้วย ZK Rollup เราสามารถลดภาระในห่วงโซ่หลักได้อย่างมากและจ้างผู้ตรวจสอบเพิ่มเติมจากภายนอกไปยังที่อื่น

ประการที่สามเราสามารถรับรู้การทำธุรกรรมกับบุคคลที่สามได้อย่างแท้จริง

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

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

อย่างที่สี่ เราสามารถถ่ายโอนความเป็นเจ้าของข้อมูลได้อย่างสมบูรณ์

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

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

ยังมีต่อ

ยังมีต่อ

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

ในตอนต้นของบทความหน้า ฉันจะเขียนรายละเอียดเพิ่มเติมเล็กน้อย โดยส่วนใหญ่จะกล่าวถึงโครงสร้างเฉพาะของ zkSNARK

อ่านเพิ่มเติม

อ่านเพิ่มเติม

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

เพื่อนๆ ที่สนใจในการพิสูจน์ความรู้แบบไร้ศูนย์สามารถเพิ่ม WeChat Xiaoan @SECBIT (id: secbit_xiaoanbi) ในกลุ่มสนทนาได้

开发者
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
บันทึกการศึกษาพิสูจน์ความรู้เป็นศูนย์ของ Stanford Scholar
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android