การยืนยันอย่างเป็นทางการสามารถลดข้อบกพร่องและช่องโหว่ในสัญญาอัจฉริยะได้อย่างไร
การตรวจสอบสัญญาอัจฉริยะอย่างเป็นทางการเป็นแนวโน้มที่เกิดขึ้นใหม่ในพื้นที่ของสกุลเงินดิจิทัลที่มุ่งเน้นไปที่การลดอินสแตนซ์ของข้อบกพร่องและช่องโหว่ของสัญญาอัจฉริยะที่นำไปสู่การแฮ็กรายละเอียดสูงจำนวนมากและปัญหาด้านความปลอดภัยเฉพาะที่.
การตรวจสอบอย่างเป็นทางการมีแอปพลิเคชันที่หลากหลายเกี่ยวกับระบบฮาร์ดแวร์และซอฟต์แวร์ มีความสำคัญอย่างยิ่งเมื่อความซับซ้อนของระบบเพิ่มขึ้นโดยเฉพาะกับฮาร์ดแวร์ ในเครือข่ายบล็อกเชนบทลงโทษของช่องโหว่และช่องโหว่ของสัญญาอัจฉริยะทำให้เกิดความจำเป็นในการปรับปรุงการเขียนโปรแกรมและการตรวจสอบสัญญาอัจฉริยะ.
ความเป็นมาเกี่ยวกับการยืนยันอย่างเป็นทางการ
ใช้การตรวจสอบอย่างเป็นทางการ วิธีการที่เป็นทางการ เพื่อตรวจสอบว่าการออกแบบฮาร์ดแวร์หรือระบบซอฟต์แวร์ตรงตามคุณสมบัติเฉพาะหรือไม่ วิธีการทางการเป็นเทคนิคทางคณิตศาสตร์ประเภทหนึ่งสำหรับข้อกำหนดการพัฒนาและการตรวจสอบทั้งระบบฮาร์ดแวร์และซอฟต์แวร์ การใช้วิธีการที่เป็นทางการเพื่อพิสูจน์หรือพิสูจน์ความถูกต้องของอัลกอริทึมที่ตั้งใจไว้เรียกว่าการตรวจสอบอย่างเป็นทางการ.
มาร์ตินเดวิสได้รับเครดิตจากการพัฒนาหลักฐานทางคณิตศาสตร์ที่สร้างขึ้นด้วยคอมพิวเตอร์เครื่องแรกในปี 2497 แนวคิดนี้เริ่มได้รับความสนใจในทศวรรษที่ 1960 สำหรับการตรวจสอบความถูกต้องของโปรแกรมคอมพิวเตอร์ในภาษาต้น ๆ เช่นภาษาปาสคาลและภาษาจาวา ปฏิบัติตามข้อบกพร่องของคอมพิวเตอร์ที่มีรายละเอียดสูงเช่นไฟล์ ข้อผิดพลาด Pentium FDIV ในปี 1994 ความเชื่อมั่นที่ว่าการตรวจสอบอย่างเป็นทางการจำเป็นต้องมีอยู่ทั่วไปเริ่มที่การสโนว์บอล.
การทดสอบซอฟต์แวร์หรือระบบฮาร์ดแวร์สามารถแบ่งออกเป็นสองขั้นตอนทั่วไป:
- การตรวจสอบ
- การยืนยัน
การตรวจสอบความถูกต้องคือการพิจารณาว่าผลิตภัณฑ์ตรงตามความต้องการของผู้ใช้หรือไม่.
Verification กำลังทดสอบว่าผลิตภัณฑ์เป็นไปตามข้อกำหนดหรือไม่.
การตรวจสอบประกอบด้วยการสร้างแบบจำลองทางคณิตศาสตร์เชิงนามธรรมที่สัมพันธ์กับข้อกำหนดการออกแบบของผลิตภัณฑ์ (เช่นอัลกอริทึมชิปฮาร์ดแวร์) ในขณะที่วิธีการอย่างเป็นทางการที่ใช้ในการสร้างแบบจำลองส่วนใหญ่เกิดจากพื้นฐานทางวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี.
การใช้การตรวจสอบอย่างเป็นทางการกลายเป็นสิ่งสำคัญอย่างยิ่งในระบบฮาร์ดแวร์ซึ่งผู้ผลิตฮาร์ดแวร์รายใหญ่เกือบทุกแห่งใช้เพื่อให้แน่ใจว่าผลิตภัณฑ์ของตนมีความทนทาน อย่างไรก็ตามการใช้งานยังไม่แพร่หลายในซอฟต์แวร์เหมือนกับที่ใช้ในฮาร์ดแวร์ซึ่งส่วนใหญ่เกิดจากลักษณะทางการค้าของการผลิตฮาร์ดแวร์.
อย่างไรก็ตามไดนามิกดังกล่าวเริ่มเปลี่ยนไปตามการถือกำเนิดของ blockchains และ cryptocurrencies ซึ่งการถ่ายโอนมูลค่าจำนวนมากจะดำเนินการโดยอัตโนมัติผ่านเครือข่ายแบบกระจายอำนาจ ด้วยมูลค่าที่เป็นเดิมพันมากกว่าระบบแบบเดิมความถูกต้องของสัญญาอัจฉริยะจึงกลายเป็นปัญหาเร่งด่วน.
ก ประวัติย่อ การใช้ประโยชน์จากสัญญาอย่างชาญฉลาดคือการทำความเข้าใจผลของช่องโหว่ง่ายๆในรหัสสัญญา.
เหตุใดจึงควรใช้สำหรับสัญญาอัจฉริยะ?
ตามล่าสุด ศึกษา ดำเนินการกับสัญญาอัจฉริยะ Ethereum เกือบ 1 ล้านสัญญาโดย 34,200 รายการถูกตั้งค่าสถานะว่ามีความเสี่ยงใน 10 วินาทีต่อสัญญา จำนวนที่น่าตกใจนั้นมาถึงโดยการวิเคราะห์ช่องโหว่การติดตามของสัญญาอัจฉริยะ ได้แก่ :
- ค้นหาสัญญาที่ล็อคเงินไปเรื่อย ๆ
- สัญญาที่ทำให้เงินรั่วไหลไปยังผู้ใช้โดยพลการ
- สัญญาที่ใคร ๆ ก็ฆ่าได้
นอกเหนือจากความซับซ้อนเชิงตรรกะทั่วไปและความแปลกใหม่ที่เกี่ยวข้องกับการเขียนโปรแกรมสัญญาอัจฉริยะสำหรับบล็อกเชนลักษณะที่ไม่เปลี่ยนรูป – เมื่อพวกเขายึดมั่นกับบล็อกเชนทำให้ช่องโหว่อาจสร้างความเสียหายได้มากขึ้น.
Brian Marick และ Daejun Park ให้บริการที่ยอดเยี่ยม การวิเคราะห์ เกี่ยวกับช่องโหว่ของสัญญาอัจฉริยะและการตรวจสอบอย่างเป็นทางการจะช่วยลดปัญหาอินสแตนซ์ของพวกเขาได้อย่างไร โดยพื้นฐานแล้วมีสองวิธีที่นักพัฒนาสามารถไม่ได้รับสิ่งที่ต้องการจากสัญญาอัจฉริยะ.
- เจตนาเข้าใจผิด
- การทำผิดเมื่อดำเนินการตามเจตนานั้น
ข้อผิดพลาดมาตรฐานจำนวนมากเหล่านี้อาจนำไปสู่เงินจำนวนมหาศาลที่ถูกล็อคเช่นเดียวกับ กระเป๋าสตางค์ Parity หรือกับ Ethereum’s ส่งแบบเรียกซ้ำ ใน เหตุการณ์ DAO. การตรวจสอบอย่างเป็นทางการใช้เป็นวิธียืนยันทางคณิตศาสตร์ว่าช่องโหว่ที่เฉพาะเจาะจงจะไม่นำไปสู่การใช้ประโยชน์จากเวกเตอร์ที่เป็นอันตราย.
ข้อกำหนดที่เป็นทางการจะใช้เป็นผลลัพธ์ที่แม่นยำหรือผลลัพธ์ที่สัญญาอัจฉริยะกำลังมองหาซึ่งคอมพิวเตอร์สามารถตรวจสอบได้ การยืนยันจะเกิดขึ้นในภายหลังเมื่อสัญญาคอมไพล์เป็น bytecode และการตรวจสอบอย่างเป็นทางการพิสูจน์ว่า bytecode ที่คอมไพล์ใช้ข้อมูลจำเพาะ อย่างไรก็ตามการดำเนินการยืนยันอย่างเป็นทางการด้วยตนเองเป็นกระบวนการที่ยากลำบากและบางครั้งก็มาพร้อมกับความผิดพลาดของตัวเอง แม้แต่การตรวจสอบผลการพิสูจน์อย่างเป็นทางการก็อาจมีความแตกต่างได้.
เครื่องมือเช่น ผู้ช่วย Coq Proof ได้รับการพัฒนาเพื่อช่วยอำนวยความสะดวกในการพิสูจน์กลไกเกี่ยวกับคุณสมบัติของโปรแกรมและปัจจุบันมีการใช้ cryptocurrencies ที่เกิดขึ้นใหม่หลายภาษาด้วยภาษาที่พวกเขาใช้ฝังอยู่ใน Coq.
ในขณะที่การตรวจสอบสัญญาอัจฉริยะให้การประกันชั้นที่จำเป็นมากผ่านการตรวจสอบรหัสการตรวจสอบสัญญาอัจฉริยะอย่างเป็นทางการสามารถช่วยลดช่องโหว่ผ่านการวิเคราะห์ทางคณิตศาสตร์เพิ่มเติมได้ ด้วยสัญญาอัจฉริยะที่แพร่หลายมากขึ้นดูเหมือนว่าการประยุกต์ใช้การตรวจสอบอย่างเป็นทางการจะแพร่หลายมากขึ้นในอุตสาหกรรม.
การประยุกต์ใช้การยืนยันอย่างเป็นทางการในปัจจุบัน
หลายแพลตฟอร์มกำลังรวมการตรวจสอบอย่างเป็นทางการไว้แล้วหรือมีแผนที่จะดำเนินการในเร็ว ๆ นี้ การประเมินความปลอดภัยและการรักษาความปลอดภัยของสัญญาอัจฉริยะที่ดำเนินการภายในแพลตฟอร์มเหล่านี้จะมีความสำคัญต่อการประเมินประสิทธิภาพของพวกเขาในการป้องกันช่องโหว่ที่สำคัญ.
Zilliqa
Zilliqa เป็นบล็อกเชนที่มีปริมาณงานสูงซึ่งออกแบบมาเพื่อโฮสต์แอปพลิเคชันที่กระจายอำนาจที่ปรับขนาดได้และปลอดภัย (dapps) นักพัฒนาด้านเทคนิคหลายคนที่อยู่เบื้องหลัง Zilliqa เป็นผู้เขียนการศึกษาก่อนหน้านี้ที่ค้นพบจุดอ่อนของสัญญาอัจฉริยะหลายพันรายการ.
Zilliqa ใช้ภาษาการเขียนโปรแกรมใหม่ที่เรียกว่า Scilla ซึ่งออกแบบโดยสมาชิกของทีม Zilliqa และ บริษัท ในเครืออื่น ๆ Scilla เป็นภาษาระดับกลางที่ฝังอยู่ใน Coq Proof Assistant มีวัตถุประสงค์เพื่อเป็นเป้าหมายการแปลสำหรับภาษาระดับสูงขึ้นเพื่อดำเนินการวิเคราะห์และตรวจสอบก่อนที่สัญญาจะรวบรวมเป็น bytecode.
Tezos
Tezos เขียนด้วย OCaml และภาษาสัญญาที่ชาญฉลาดของมันคือ Michelson ตาม OCaml OCaml ได้รับเลือกเนื่องจากข้อเสนอการเขียนโปรแกรมเชิงฟังก์ชันที่มีความเร็ววากยสัมพันธ์และความหมายที่ชัดเจนและความสามารถในการใช้การพิสูจน์อย่างเป็นทางการ Tezos ยังใช้ Coq Proof Assistant เพื่ออำนวยความสะดวกในการตรวจสอบสัญญาอัจฉริยะอย่างเป็นทางการ.
Arthur Breitman – ผู้ร่วมก่อตั้ง Tezos – โพสต์ รายละเอียดเกี่ยวกับการตรวจสอบบางส่วน มิเชลสันทำสัญญา ใน Coq รวมถึงสัญญาแบบ multi-sig ใน testnet เมื่อปีที่แล้ว Tezos เพิ่งเปิดตัวดังนั้นการประยุกต์ใช้การตรวจสอบอย่างเป็นทางการควรเป็นมาตรวัดที่ดีเยี่ยมสำหรับสถานะของการปรับปรุงความปลอดภัยของสัญญาอัจฉริยะโดยใช้วิธีนี้ การหาประโยชน์จากสัญญา Solidity จะเกิดขึ้นใน Tezos หรือไม่นั้นจะต้องใช้เวลาพอสมควร แต่การประเมินว่าสัญญาอัจฉริยะที่ปลอดภัยกลายเป็นอย่างไรบน Tezos อาจบ่งบอกถึงแนวโน้มที่ต่อเนื่อง.
Cardano
Cardano เขียนด้วยภาษา Haskell และภาษาสัญญาที่ชาญฉลาดคือ Plutus ซึ่งมีพื้นฐานมาจาก Haskell.
Cardano ได้รับการออกแบบด้วย Cardano Computation Layer (CCL) ที่ประกอบด้วย 2 ชั้น:
- เครื่องเสมือนและกรอบภาษาที่ระบุอย่างเป็นทางการ
- ภาษาที่ระบุอย่างเป็นทางการซึ่งอำนวยความสะดวกในการตรวจสอบรหัสสัญญาอัจฉริยะ
เป้าหมายคือการสร้างสภาพแวดล้อมที่ช่วยเพิ่มความคล่องตัวในกระบวนการรับประกันว่าสัญญาจะทำงานตามที่ออกแบบไว้โดยไม่มีช่องโหว่ที่เป็นภัยพิบัติ โดยเฉพาะอย่างยิ่ง Cardano ไม่ได้ใช้การออกแบบสแต็คที่มีขอบเขตเช่น EVM ของ Ethereum ดังนั้นการไม่ต้องกังวลเกี่ยวกับการไหลของเลขคณิตแบบสแต็กทำให้สามารถตรวจสอบสัญญาอัจฉริยะอย่างเป็นทางการได้ง่ายขึ้น.
Ethereum
Ethereum ได้ทำการวิจัยเกี่ยวกับการรวมการตรวจสอบอย่างเป็นทางการมาระยะหนึ่งแล้วโดยมีหลายโครงการที่ตรวจสอบศักยภาพของมัน หนึ่งในสิ่งพิมพ์ดังกล่าว“การทำสัญญาอัจฉริยะอย่างชาญฉลาด,” มุ่งเน้นไปที่ข้อบกพร่องของสัญญาอัจฉริยะและแนะนำวิธีการลดข้อบกพร่องรวมถึงการปรับปรุงความหมายเชิงปฏิบัติการของ Ethereum เพื่อส่งเสริมการตรวจสอบอย่างเป็นทางการ.
ขีด จำกัด ของก๊าซใน Ethereum ทำให้ได้ การท้าทาย เพื่อดำเนินการตรวจสอบอย่างเป็นทางการ นอกจากนี้วิธีเดียวที่จะทราบความหมายของโปรแกรม Solidity คือรวบรวมเป็น bytecode คอมไพเลอร์มีการเปลี่ยนแปลงอย่างรวดเร็วดังนั้นเครื่องมือการตรวจสอบก็จำเป็นต้องปรับตามอัตราการเปลี่ยนแปลงเช่นกัน เมื่อพิจารณาถึงเครือข่ายและประวัติที่เป็นที่ยอมรับของ Ethereum แล้วการตรวจสอบสัญญาอัจฉริยะอย่างเป็นทางการใน Ethereum จะให้มาตรวัดที่ดีที่สุดสำหรับประสิทธิภาพในการลดช่องโหว่ได้อย่างชัดเจนคือการตรวจสอบอย่างเป็นทางการเพื่อให้ใช้กันอย่างแพร่หลายในเครือข่าย.
สรุป
การตรวจสอบอย่างเป็นทางการเป็นงานที่ซับซ้อนและลำบากมาก อย่างไรก็ตามสิ่งนี้ได้กลายเป็นมาตรฐานสากลในอุตสาหกรรมฮาร์ดแวร์และมีแนวโน้มที่จะได้รับแรงผลักดันอย่างต่อเนื่องในพื้นที่ซอฟต์แวร์ Blockchains และเครือข่าย cryptocurrency ซึ่งการโอนเงินมูลค่าสูงเป็นเรื่องปกติจะช่วยเร่งผลกระทบนี้ได้อย่างแน่นอน การวัดผลกระทบเชิงบวกของการตรวจสอบสัญญาอัจฉริยะอย่างเป็นทางการอาจใช้เวลาหลายปีในการเปิดเผยเนื่องจากเราเพิ่งเห็นจุดเริ่มต้นของสิ่งที่ควรกลายเป็นแนวโน้มที่กว้างขึ้นในอุตสาหกรรม.