สัญญา Ethereum Oracle: เราสามารถเชื่อถือ Oracle ได้หรือไม่

เผยแพร่แล้ว: 2022-03-11

บทความนี้เป็นส่วนสุดท้ายของซีรีส์สามตอนเกี่ยวกับการใช้สัญญา Ethereum oracle

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

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

สรุป: ทำไมเราถึงต้องการ Ethereum oracle?

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

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

Ethereum oracle ภาพประกอบ

หลุมพรางความปลอดภัย

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

1. เจ้าของ/ผู้ดูแลสัญญาเดิมพันอาจเสียหาย

เริ่มต้นในบรรทัดที่ 58 ของ BoxingBets.sol เรามีฟังก์ชันดังต่อไปนี้:

 /// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }

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

ตัวอย่าง: การแข่งขันชกมวยครั้งต่อไปคือ Soda Popinski กับ Glass Joe โซดาเป็นที่โปรดปรานที่ชัดเจนโดยมีระยะขอบกว้าง ทุกคนเดิมพันกับโซดา เงินมากมายขี่มัน ฉันเจ้าของสัญญาตัดสินใจที่จะดึงอย่างรวดเร็ว ก่อนที่แมตช์จะตัดสิน ฉันเปลี่ยน oracle เป็นตัวอันตรายของฉันเอง ซึ่งเหมือนกับ oracle อย่างเป็นทางการ ยกเว้นว่ามีการฮาร์ดโค้ดในการประกาศว่า Glass Joe เป็นผู้ชนะ กลาสโจประกาศว่า ฉันหาเงินได้ทั้งหมด และไม่มีใครหยุดฉันได้ หลังจากนั้นอาจจะไม่มีใครเชื่อถือสัญญาของฉันอีกต่อไป แต่สมมติว่าฉันไม่สนใจ บางทีฉันอาจเขียนและตีพิมพ์สัญญาเพียงเพื่อจุดประสงค์ในการดึงการปล้นนั้น

มีทางเลือกอะไรบ้าง?

1. อย่าให้ oracle ถูกเปลี่ยน

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

นี้ไม่จำเป็นต้องเป็นตัวบล็อกแม้ว่า; ขณะนี้มีแบบจำลองและแนวคิดมากมายเกี่ยวกับวิธีการแก้ไขสัญญาอัจฉริยะ หัวข้อนี้จะสร้างบทความที่ดีในตัวของมันเอง แต่สำหรับตอนนี้ คุณสามารถตรวจสอบบทความ Hackeroon นี้ รวมถึงส่วนนี้เกี่ยวกับกลยุทธ์สัญญาอัจฉริยะ

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

2. ล็อค oracle เป็นระยะเวลา

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

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

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

3. ให้ oracle ถูกกำหนดโดยผู้ใช้

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

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

2. เจ้าของ/ผู้ดูแล oracle อาจเสียหาย

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

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

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

เราจะป้องกันสิ่งนี้ได้อย่างไร

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

ทำไมเราควรเชื่อถือ oracle ใด ๆ

หากแนวคิดทั้งหมดของ blockchain smart contract คือการขจัดความจำเป็นในการไว้วางใจใครก็ตาม ข้อเท็จจริงที่ว่าเราต้อง “ไว้วางใจ” กับ oracle ที่ต้องเผชิญกับความไม่ไว้วางใจไม่ใช่หรือ? ฉันจะบอกว่า: ถึงเวลาโตแล้วลูกชาย (หรือลูกสาว)! ไม่มีสิ่งที่เรียกว่าความไม่ไว้วางใจที่บริสุทธิ์ และบล็อคเชนไม่ได้ให้สภาพแวดล้อมที่ไม่น่าเชื่อถือ Blockchain เป็นชั้นที่อำนวยความสะดวกในการปฏิสัมพันธ์ของมนุษย์ ปฏิสัมพันธ์ของมนุษย์ยังคงเป็นแกนหลักหรือผลลัพธ์สุดท้าย และปฏิสัมพันธ์ของมนุษย์ไม่สามารถไว้ใจได้

ลิงค์: ปัญหาของออราเคิล

วิวัฒนาการของความไว้วางใจ

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

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

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

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

สัญญาของ Oracle และวิวัฒนาการของความไว้วางใจ

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

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

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

มันเยี่ยมมาก ไม่มีการคุกคามของการใช้กำลังหรือความรุนแรงจากภาพด้านบนนั้น ยกเว้นสองสิ่ง:

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

กระจายความไว้วางใจวันนี้

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

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

ระบบดั้งเดิม

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

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

มาดูกันดีกว่าว่าบล็อคเชนทำงาน (หรือแทนที่) ได้อย่างไร

ระบบบล็อคเชน: Bitcoin

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

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

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

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

Blockchain Smart Contracts และ Oracle Contracts

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

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

เราได้อะไรจากการใช้สัญญาอัจฉริยะ? สัญญาอัจฉริยะต่างจากการกำกับดูแลหรือวิธีการเดิมในการถือครองสัญญาอย่างไร

ห่อ

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

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

ฉันขอท้านักพัฒนา Ethereum ให้ทำสองสิ่ง:

  1. ลองนึกถึงวิธีใดๆ ในระบบของบล็อคเชนสาธารณะ (เช่น bitcoin หรือ ethereum) ซึ่งสิ่งใดๆ ก็ตามถูกบังคับใช้โดยการคุกคามโดยนัยหรือโดยชัดแจ้งของการใช้กำลัง
  2. ลองนึกถึงระบบกฎสำคัญๆ ในสัญญาสมัยใหม่หรือกฎหมายการเงิน ซึ่ง ไม่ได้ บังคับใช้โดยชัดแจ้งหรือโดยปริยายของกำลังบังคับ

ภาพประกอบวิวัฒนาการของความไว้วางใจและอำนาจรัฐ

ของเก่า ของใหม่

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

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