BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

MACI: กรอบต่อต้านการสมรู้ร่วมคิดในการกำกับดูแลแบบออนไลน์

DAOrayaki
特邀专栏作者
2021-12-23 12:51
บทความนี้มีประมาณ 3072 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
หนึ่งเดือนหลังจากบทความนี้เผยแพร่ มูลนิธิ BSC ได้เปิดตัวรอบแรกของการระดมทุนกำลังสองสำหรั
สรุปโดย AI
ขยาย
หนึ่งเดือนหลังจากบทความนี้เผยแพร่ มูลนิธิ BSC ได้เปิดตัวรอบแรกของการระดมทุนกำลังสองสำหรั

Eric Zhang

Architect @DoraFactory @DoraHacks

สำหรับเบื้องหลังของบทความนี้ โปรดดูที่ "Quadratic Voting and Quadratic Funding" (https://matataki.io/p/6113) หนึ่งเดือนหลังจากการเผยแพร่บทความนี้ มูลนิธิ BSC ได้เปิดตัวรอบแรกของการระดมทุนกำลังสองสำหรับระบบนิเวศ BSC (https://hackerlink.io/grant) บนแพลตฟอร์มนักพัฒนา DoraHacks HackerLink และในอีก 15 วันต่อมาก็ได้รับโครงการ ส่งโดยทีมนักพัฒนามากกว่า 60 ทีมทั่วโลก

ใน "Quadratic Voting and Quadratic Funding" ฉันได้แนะนำสามประเด็นที่กล่าวถึงในบล็อกของ Vitalik "Quadratic Payments": Identity Bribery, Colllusion, Rational Ignore Ignorance) ปัญหาทั้งสามนี้ไม่ได้จำกัดเฉพาะการลงคะแนนแบบควอดราติคเท่านั้น แต่เป็นปัญหาทั่วไปที่พบโดยกลไกการกำกับดูแลแบบออนไลน์ ดังนั้น การแก้ปัญหาเหล่านี้ไม่เพียงทำให้การลงคะแนนแบบควอดราติกปรับขนาดได้และปลอดภัยมากขึ้นเท่านั้น แต่ยังเป็นประโยชน์ต่อกลไกการกำกับดูแลแบบออนไลน์อีกด้วย

เป้าหมายของบทความนี้คือเพื่อเตรียมพร้อมสำหรับการออกแบบกลไก "การลงคะแนนกำลังสองแบบไม่ให้ความร่วมมือ" หรือ "การลงคะแนนกำลังสองแบบป้องกันการสมรู้ร่วมคิด" ในสถานการณ์นี้ ผู้มีสิทธิเลือกตั้งไม่สามารถร่วมมือกันได้ ดังนั้นจึงไม่มีความเป็นไปได้ที่จะเกิดการสมรู้ร่วมคิด กรอบพื้นฐานของกลไกนี้คือบทความ "โครงสร้างพื้นฐานต่อต้านการสมรู้ร่วมคิดขั้นต่ำ" [1] (MACI) เผยแพร่โดย Vitalik Buterin บน Ethresear ดังนั้น ก่อนอื่นเราจะอธิบายกลไกของ MACI เพื่อสำรวจเพิ่มเติมเกี่ยวกับวิธีการใช้ MACI เพื่อปรับปรุงการลงคะแนนแบบกำลังสองและกำจัดความเป็นไปได้ของการสมรู้ร่วมคิด

MACI: Minimal Anti-Collusion Infrastructure

MACI คือ "Minimization Anti-collusion Framework" สำหรับวัสดุพื้นหลัง โปรดดูบล็อกของ Vitalik Buterin https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413 และ "On Colllusion" https://vitalik.ca/general/2019/04/03/collusion .html

ติดตั้ง

ติดตั้ง

สมมติว่ามีสัญญาอัจฉริยะ \(R\) ที่มีรายการคีย์สาธารณะ\(K_1 ... K_n\),และฟังก์ชันที่จำเป็นบางอย่างในการลงทะเบียนคีย์สาธารณะเหล่านี้ในสัญญาอัจฉริยะ นอกจากนี้ เฉพาะรหัสสาธารณะของผู้เข้าร่วมที่ตรงตามเงื่อนไขสองข้อต่อไปนี้เพื่อยืนยันตัวตนเท่านั้นที่สามารถป้อน R:

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

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

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

นอกจากนี้ สมมติว่ามีโอเปอเรเตอร์ (\(โอเปอเรเตอร์\)) ที่มีคีย์ส่วนตัว\(k_\omega\),และรหัสสาธารณะที่เกี่ยวข้อง\(K_\omega\).

สุดท้าย สมมติว่ามีกลไก\(M\),มันเป็นฟังก์ชั่น\(action^n \rightarrow Outputs\),ดำเนินการ

ดำเนินการ

เวลาเริ่มต้น \(T_{start}\), \(operator\) เริ่มสถานะจริง\(S_{start} = {i: (key=K_i, action = \phi)}, i \in 1...n\).

ระหว่างเวลาเริ่มต้น \(T_{start}\) และเวลาสิ้นสุด \(T_{end}\) ผู้เข้าร่วมที่ลงทะเบียนสามารถส่งข้อความถึง R ด้วยการเข้ารหัสคีย์ส่วนตัว \(k\) ของผู้เข้าร่วมเอง ข้อความมีสองประเภท:

พฤติกรรมที่เห็นด้วย: เช่น การลงคะแนนเสียง ผู้เข้าร่วมจำเป็นต้องส่งข้อความที่เข้ารหัส\(enc(msg = (i, sign(msg = action, key = k_i)), pubkey = K_\omega)\),โดยที่ \(k_i\) คือคีย์ส่วนตัวปัจจุบันของผู้เข้าร่วม และ \(i\) คือรหัสของผู้เข้าร่วมใน \(R\)

Rekey: ผู้เข้าร่วมจำเป็นต้องส่งข้อความที่เข้ารหัส\(enc(msg = (i, sign(msg = NewK_i, key = k_i)), pubkey = K_\omega)\),โดยที่ \(NewK_i\) คือรหัสสาธารณะที่จะเปลี่ยนแปลงโดยผู้เข้าร่วม\(k_i\) คือคีย์ส่วนตัวปัจจุบันของผู้เข้าร่วมรายนี้

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

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

ใช้ \(state[i].key\) เพื่อตรวจสอบลายเซ็นของข้อความ

หากข้อความที่ถอดรหัสเป็นลักษณะการทำงานที่ตกลงไว้ (\(การกระทำ\)) ให้ตั้งค่า\(state[i] = action\),หากข้อความที่ถอดรหัสเป็นรหัสสาธารณะใหม่ ให้ตั้งค่า\(state[i].key = NewK_i\)

หลังจาก \(T_{end}\) ผู้ดำเนินการต้องประกาศสถานะเอาต์พุต\(M(state[1].action, ... , state[n].action)\),ในเวลาเดียวกัน ZK-SNARK ได้รับเพื่อพิสูจน์ว่าผลลัพธ์นี้เป็นผลลัพธ์ที่ถูกต้อง

เหตุใดกลไกนี้จึงต่อต้านการสมรู้ร่วมคิด

สมมติว่าผู้เข้าร่วมต้องการพิสูจน์สิ่งที่เขาทำ เช่น ทำ \(การกระทำ\) \(A\) เขาสามารถอ้างถึงธุรกรรมบนห่วงโซ่ได้\(enc(msg = (i, sign(msg = A, key = k_i)),pubkey = K_\omega)\) และให้หลักฐานที่ไม่มีความรู้เพื่อตรวจสอบว่าการทำธุรกรรมมีข้อมูลที่เข้ารหัสของ \(A\) จริงๆ อย่างไรก็ตาม เขาไม่สามารถพิสูจน์ได้ว่าเขาไม่ได้ส่งธุรกรรมอื่นๆ ตัวอย่างเช่น เขาอาจส่งธุรกรรมก่อนหน้านี้และแทนที่คีย์สาธารณะด้วย \(NewK_i\) ใหม่ ดังนั้นหลักฐานก่อนหน้านี้จึงไร้ความหมายเพราะหากเขาเปลี่ยน ที่สำคัญ เขาอาจจะทำอย่างอื่นไปแล้ว

เป็นไปได้ที่ผู้เข้าร่วมจะให้รหัสส่วนตัวแก่บุคคลอื่น แต่ในการทำเช่นนั้น บุคคลนั้นสามารถพยายามแก้ไขรหัสได้ทันทีเมื่อมี ในกรณีนี้ 1) มีอัตราความสำเร็จ 50% และ 2) ผู้ที่ได้รับกุญแจจะนำเงินฝากของเงินเดิมพันก่อนหน้าออกไปโดยตรง

ปัญหาที่ไม่ได้แก้ไขกับ MACI

ผู้รับขายคีย์ส่วนตัวในสภาพแวดล้อมฮาร์ดแวร์ที่เชื่อถือได้ หรือในกรณีของลายเซ็นหลายลายเซ็นที่เชื่อถือได้

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

ในกรณีแรก สามารถใช้กลไกลายเซ็นที่ซับซ้อนที่ออกแบบมาเป็นพิเศษได้ และการออกแบบนี้ไม่เป็นมิตรกับฮาร์ดแวร์ที่เชื่อถือได้และหลายลายเซ็น อย่างไรก็ตาม การออกแบบนี้จำเป็นต้องตรวจสอบให้แน่ใจว่าฟังก์ชันการตรวจสอบนั้นเป็นมิตรกับ ZKP

กรณีที่สองสามารถแก้ไขได้ด้วย "การพิสูจน์แบบไม่มีความรู้แบบตัวต่อตัว" ตัวอย่างเช่น ผู้เข้าร่วมสามารถแยกรหัสส่วนตัวออกเป็น \(x + y = k_i\) เผยแพร่ \(X = x*G\) และ\(Y = y*G\),และแสดงตัวตรวจสอบสองซองที่มี \(x\) และ \(y\) ตัวตรวจสอบเปิดหนึ่งซอง ตรวจสอบว่า \(Y\) ที่ประกาศนั้นถูกต้อง แล้วตรวจสอบ\(X + Y = K_i\)。

การลงคะแนนแบบควอดราติคแบบไม่ให้ความร่วมมือ

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

[1]Vitalik Buterin, Minimal anti-collusion infrastructure,

https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413

DAO
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
คลังบทความของผู้เขียน
DAOrayaki
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android