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

บทความนี้กล่าวถึงวิธีรับรู้สิทธิ์ในการอ่านข้อมูลในห่วงโซ่ในสัญญาอัจฉริยะ

区块链大本营
特邀专栏作者
2021-10-28 03:39
บทความนี้มีประมาณ 3337 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
การใช้การควบคุมการอ่านบนเครือข่ายไม่ใช่เรื่องง่าย
สรุปโดย AI
ขยาย
การใช้การควบคุมการอ่านบนเครือข่ายไม่ใช่เรื่องง่าย

บรรณาธิการ | แครอล

บรรณาธิการ | แครอล

คำถามมักถูกถาม: "จะรับรู้การอนุญาตการอ่านข้อมูลในห่วงโซ่ในสัญญาได้อย่างไร"

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

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

เราตั้งกรณี: มีห่วงโซ่คะแนนพันธมิตรและผู้เข้าร่วมในห่วงโซ่รวมถึงอลิซ, บ๊อบ, คาร์ล, เดฟ ฯลฯ และสมาชิกในครอบครัว เราหวังว่าจุดสมดุลของแต่ละคนสามารถตั้งค่าได้ ปรากฏแก่ตนและครอบครัวของตน และ ไม่ปรากฏแก่ผู้ร่วมงานอื่น..

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

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

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

จากนี้ไป เราจะตรวจสอบกรณีนี้อีกครั้งด้วยแนวคิด "หลายศูนย์และไร้ความน่าเชื่อถือ"

มาวิเคราะห์กันก่อน: ข้อมูลถูกเก็บไว้ในห่วงโซ่อย่างไร? จะรั่วไหลภายใต้สถานการณ์ใด

โหนดเครือข่าย blockchain กระจายอยู่ในสภาพแวดล้อมของผู้เข้าร่วมต่าง ๆ เนื่องจากลักษณะความสอดคล้องของข้อมูลของ blockchain แต่ละโหนดจึงมีสำเนาข้อมูลที่สมบูรณ์ ไม่ว่าฐานข้อมูลจะเป็นฐานข้อมูลประเภทไฟล์ เช่น LevelDB/RocksDB หรือฐานข้อมูลเชิงสัมพันธ์ เช่น Mysql ข้อมูลจะตกอยู่ในอินสแตนซ์ฐานข้อมูลของแต่ละโหนด

กล่าวคือ จุดสมดุลของ Bob ถูกบันทึกไว้ในฮาร์ดดิสก์ของโหนดทั้งหมด และเมื่อดูในเครื่องมือฐานข้อมูล MySQL จะมีลักษณะดังนี้:

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

นอกจากนี้ ข้อมูลบล็อกเชนไม่ได้เกี่ยวข้องกับสัญญาเท่านั้น แต่ยังเกี่ยวข้องอย่างใกล้ชิดกับบันทึกการทำธุรกรรมอีกด้วย

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

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

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

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

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

เมื่อเห็นสิ่งนี้ อาจมีบางคนถามว่า: หากการอ่านข้อมูลไม่มีการป้องกัน การอนุญาต "เขียน" บนบล็อกเชนจะยังมีความหมายอยู่หรือไม่ คำตอบคือ: ใช่

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

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

ธุรกรรม "เขียน" เพื่อแสวงหาฉันทามติดังนั้นเมื่อลูกค้าส่งธุรกรรม (sendTransaction หรือ sendRawTransaction) จะต้องเซ็นชื่อแบบดิจิทัล และระบบบล็อกเชนจะตรวจสอบลายเซ็นเพื่อยืนยันว่าบัญชีภายนอกใดที่ส่งธุรกรรม ซึ่งสามารถตรวจสอบและติดตามได้อย่างถูกต้องอย่างเคร่งครัด

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

จากการวิเคราะห์ข้างต้น สรุปได้ว่าไม่ใช่เรื่องง่ายที่จะใช้การควบคุมการอ่านบนห่วงโซ่

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

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

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

แล้วเรามีวิธีอื่นใดอีกบ้างในการควบคุมการเปิดเผยข้อมูลอย่างเหมาะสมโดยคำนึงถึงการแบ่งปัน ความโปร่งใส และความเปิดเผย

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

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

ความคิดที่สองคือแนะนำการเข้ารหัส. นี่คือตัวอย่างบางส่วน

การเข้ารหัสแบบอสมมาตร:ข้อมูลในห่วงโซ่ถูกเข้ารหัสด้วยรหัสสาธารณะของผู้รับ และมีเพียงผู้รับเท่านั้นที่สามารถปลดล็อกได้ด้วยรหัสส่วนตัวของตนเอง

ซองรหัสผ่าน:ข้อมูลอัปลิงค์ถูกเข้ารหัสด้วยรหัสผ่านที่แน่นอน และรหัสผ่านจะถูกส่งไปยังผู้รับผ่านช่องทางออฟไลน์ และมีเพียงผู้รับที่รู้รหัสผ่านเท่านั้นที่สามารถถอดรหัสได้

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

ความคิดที่สามคือเฉพาะข้อมูลสรุปเท่านั้นที่อัปโหลดไปยังเชนข้อความธรรมดาของข้อมูลไม่ได้อยู่ในเชนเลย

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

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

อย่างไรก็ตาม ยังคงมีความสับสนเล็กน้อยที่ข้อมูลไม่ได้อยู่ใน chain แนวคิดที่เป็นนวัตกรรมของ blockchain และฟังก์ชันอันทรงพลังของสัญญาอัจฉริยะจะถูกนำมาใช้อย่างเต็มที่ได้อย่างไร

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

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

การป้องกันความเป็นส่วนตัวของ WeDPR ที่เกี่ยวข้องกับโซลูชันสถานการณ์โอเพ่นซอร์ส:

https://fintech.webank.com/wedpr/VCL

บทส่งท้ายhttps://sandbox.webank.com/wedpr/confidentialpayment/#/start

บทส่งท้าย

เดิมทีฉันแค่ต้องการพูดคุยเกี่ยวกับปัญหาเล็กๆ เช่น "วิธีเขียนสัญญาสิทธิ์ในการอ่าน" แต่กลายเป็นบทความขนาดยาว

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



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