ปรับปรุงเมื่อวันที่ 14 กันยายน 2026การตรวจสอบสัญญาอัจฉริยะอาจเป็นหลักฐานที่มีประโยชน์ แต่ไม่ใช่ใบรับรองความปลอดภัย คำถามที่สำคัญที่สุดไม่ใช่ “โครงการนี้ได้รับการตรวจสอบแล้วหรือไม่?” แต่เป็น “มีการตรวจสอบอะไรบ้าง ตรวจสอบเวอร์ชันใด อะไรที่ยังไม่ได้รับการแก้ไข และโค้ดที่ใช้งานอยู่ยังตรงกับระบบที่ได้รับการตรวจสอบหรือไม่?”
คำแนะนำด้านความปลอดภัยของ Ethereum เตือนไว้อย่างชัดเจนว่า การตรวจสอบไม่ใช่ทางออกเดียวที่จะแก้ปัญหาได้ทุกอย่าง และไม่สามารถเปิดเผยข้อบกพร่องทุกอย่างได้ เช่นเดียวกับขั้นตอนการตรวจสอบของ OpenZeppelin ที่แยกส่วนขอบเขต ผลการตรวจสอบ ความรุนแรง สถานะการแก้ไข และการตรวจสอบการแก้ไข ออกจากกัน ดังนั้น เป้าหมายที่สำคัญสำหรับผู้ซื้อคือการอ่านรายงานเหมือนเอกสารเกี่ยวกับความเสี่ยง ไม่ใช่เหมือนป้ายโฆษณาทางการตลาด
รายการตรวจสอบสัญญาณเตือนภัยอย่างรวดเร็ว
| สิ่งที่ต้องตรวจสอบ |
สัญญาณความเสี่ยงต่ำ |
สัญญาณเตือนภัย |
| ขอบเขต |
มีการระบุแหล่งเก็บข้อมูล ไฟล์ สัญญา เครือข่าย และข้อยกเว้นอย่างแม่นยำ |
มีการกล่าวอ้างว่า "ผ่านการตรวจสอบแล้ว" โดยไม่มีขอบเขตที่ชัดเจน |
| เวอร์ชั่น |
มีการระบุแฮช แท็ก หรือเวอร์ชันโค้ดที่แน่นอนของคอมมิต |
ไม่มีการเปลี่ยนแปลงใดๆ ในโค้ดที่ส่งเข้ามาหรือโค้ดที่ใช้งานจริงหลังจากตรวจสอบแล้ว |
| ผลการตรวจสอบที่สำคัญ/ระดับสูง |
ปัญหาได้รับการแก้ไขและตรวจสอบซ้ำโดยอิสระแล้ว |
ยังไม่ได้รับการแก้ไข, แก้ไขบางส่วนแล้ว, ยอมรับแล้วโดยไม่มีข้อแก้ตัวที่น่าเชื่อถือ หรือไม่มีการตรวจสอบแก้ไข |
| อำนาจผู้ดูแลระบบ |
บทบาทต่างๆ จะถูกบันทึกและปกป้องด้วยระบบ multisig/timelock ตามความเหมาะสม |
กระเป๋าเงินดิจิทัลหนึ่งใบสามารถสร้างเหรียญใหม่ หยุดชั่วคราว ถอนเงิน อัปเกรด หรือเปลี่ยนแปลงพารามิเตอร์ได้ทันที |
| ความสามารถในการอัปเกรด |
รูปแบบพร็อกซีและอำนาจการอัปเกรดอยู่ในขอบเขตและมีการบันทึกไว้อย่างชัดเจน |
สามารถเปลี่ยนระบบที่ได้รับการตรวจสอบแล้วได้หลังจากการตรวจสอบเสร็จสิ้น โดยไม่ต้องเสียเวลาหรือทบทวนเพิ่มเติมอย่างมีนัยสำคัญ |
| การพึ่งพาและออราเคิล |
มีการระบุถึงข้อสมมติฐานเรื่องความไว้วางใจและระบบภายนอก |
รายงานฉบับนี้ไม่รวมส่วนประกอบที่ควบคุมการกำหนดราคา การดูแลรักษา การเชื่อมต่อ หรือพฤติกรรมของโปรโตคอลหลัก |
| อายุการตรวจสอบ |
เวอร์ชันล่าสุดเพียงพอสำหรับโค้ดเบสปัจจุบัน พร้อมการตรวจสอบติดตามผลหลังจากการเปลี่ยนแปลงครั้งใหญ่ |
นำรายงานการตรวจสอบเก่ามาใช้เป็นหลักฐานสำหรับผลิตภัณฑ์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง |
ขั้นตอนที่ 1: ตรวจสอบว่ารายงานนั้นเป็นของจริงและมาจากผู้ตรวจสอบบัญชี
คำบรรยายภาพ: เริ่มต้นด้วยข้อมูลระบุตัวตนของรายงาน วันที่ ผู้ตรวจสอบ และสรุปความรุนแรง ก่อนที่จะอ่านรายละเอียดข้อค้นพบแต่ละรายการ
ตรวจสอบแล้ว:รายงานการตรวจสอบที่น่าเชื่อถือมักระบุโครงการ ระยะเวลาการประเมิน ผู้ตรวจสอบ และโค้ดที่ได้รับการตรวจสอบ รายงานที่เผยแพร่ของ OpenZeppelin และรายงาน Diligence ของ Consensys มักมีส่วนขอบเขตและการแก้ไขโค้ด ตัวอย่างเช่น รายงาน USDKG ของ Consensys ระบุแฮชคอมมิตที่ได้รับการตรวจสอบอย่างแม่นยำ ในขณะที่รายงานของ OpenZeppelin มักระบุที่เก็บและคอมมิตหรือคำขอพูลที่อยู่ในขอบเขต
ความเข้าใจผิด:ไฟล์ PDF ที่อัปโหลดโดยโครงการนั้นเชื่อถือได้โดยอัตโนมัติเพราะมีโลโก้ของผู้ตรวจสอบอยู่ นั่นไม่เพียงพอ ไฟล์อาจล้าสมัย ถูกแก้ไข หรือแยกออกจากบริบทเดิมได้
ขั้นตอน:ค้นหารายงานผ่านเว็บไซต์หรือแหล่งเก็บข้อมูลของหน่วยงานตรวจสอบบัญชีทุกครั้งที่เป็นไปได้ เปรียบเทียบชื่อโครงการ วันที่รายงาน URL และรายละเอียดเวอร์ชันกับสำเนาที่ทีมผู้ให้โทเค็นส่งมาให้
เอกสารอ้างอิงหลัก: เอกสารการตรวจสอบของ OpenZeppelinและ การตรวจสอบ USDKG ของ Consensys Diligence
ขั้นตอนที่ 2: อ่านขอบเขตของการศึกษาอย่างละเอียดก่อนอ่านผลการศึกษา
คำบรรยายภาพ: ตราสัญลักษณ์การตรวจสอบมีความสำคัญน้อยกว่าขอบเขตของการตรวจสอบ: ระบุให้ชัดเจนว่าสัญญาและส่วนประกอบใดบ้างที่ได้รับการตรวจสอบ
การตรวจสอบจะครอบคลุมเฉพาะสิ่งที่อยู่ในขอบเขตเท่านั้น รายงานอาจตรวจสอบสัญญาโทเค็น แต่ไม่รวมถึงการวางเดิมพัน (staking), การเชื่อมต่อ (bridges), ห้องนิรภัย (vaults), การกำกับดูแล (governance), โครงสร้างพื้นฐานส่วนหน้า (front-end infrastructure), การพึ่งพาภายนอก หรือการอัปเกรดในภายหลัง
ตรวจสอบแล้ว:รายงานการตรวจสอบ Panoptic ของ OpenZeppelin ระบุขอบเขตการตรวจสอบและยังระบุด้วยว่าการแก้ไขถูกกระจายไปยังที่เก็บข้อมูลต่างๆ รายงานอีกฉบับของ OpenZeppelin เกี่ยวกับอีมูเลเตอร์ EVM ระบุอย่างชัดเจนว่ามีการตรวจสอบเฉพาะการเปลี่ยนแปลงในคำขอพูลเฉพาะเท่านั้น ไม่ใช่ไฟล์ทั้งหมด ตัวอย่างเหล่านี้แสดงให้เห็นว่าเหตุใดข้อสรุปที่ว่า “โครงการได้รับการตรวจสอบแล้ว” จึงอาจกว้างเกินไป
ความเข้าใจผิด:หากสัญญาฉบับใดฉบับหนึ่งในระบบนิเวศถูกตรวจสอบ โปรโตคอลทั้งหมดก็จะได้รับการตรวจสอบไปด้วย ซึ่งไม่เป็นเช่นนั้น
ขั้นตอน:จดบันทึกส่วนประกอบทุกอย่างที่สามารถเก็บรักษาเงินทุน โอนเงิน กำหนดราคา เปลี่ยนสิทธิ์ สร้างโทเค็น หรืออัปเกรดสัญญา จากนั้นทำเครื่องหมายว่าแต่ละส่วนประกอบปรากฏอยู่ในขอบเขตการตรวจสอบหรือไม่ ช่องว่างที่สำคัญใดๆ คือคำถามที่ต้องติดตามเพิ่มเติม
ตัวอย่างข้อมูลอ้างอิง: การตรวจสอบ OpenZeppelin Panopticและการตรวจสอบ OpenZeppelin EVM Emulator
ขั้นตอนที่ 3: จับคู่แฮชของคอมมิตกับโค้ดที่ถูกนำไปใช้งานจริง
คำบรรยายภาพ: รายงานฉบับนี้เชื่อมโยงกับการแก้ไขโค้ด ตรวจสอบว่าการแก้ไขที่ตรวจสอบแล้วยังคงตรงกับสัญญาที่ใช้งานอยู่หรือไม่
นี่เป็นหนึ่งในขั้นตอนการตรวจสอบที่ถูกมองข้ามมากที่สุด การตรวจสอบอาจจะทำได้ดีเยี่ยม แต่โครงการอาจมีการเปลี่ยนแปลงโค้ดในภายหลัง
ได้รับการยืนยันแล้ว:เอกสารประกอบของ OpenZeppelin Code Inspector ระบุว่ารายงานจะเชื่อมโยงกับ commit เฉพาะ และคำแนะนำในการตรวจสอบสัญญาของ Ethereum อธิบายว่าซอร์สโค้ดที่ได้รับการตรวจสอบแล้วจะช่วยให้ผู้ใช้ยืนยันได้ว่าซอร์สโค้ดที่เผยแพร่ตรงกับ bytecode ที่ใช้งานอยู่
ความเข้าใจผิด: ประโยคที่ว่า “ตรวจสอบแล้วเมื่อเดือนที่แล้ว” หมายความว่าสัญญาที่ใช้งานอยู่ในปัจจุบันคือสัญญาที่ได้รับการตรวจสอบแล้ว เวลาเพียงอย่างเดียวไม่สามารถพิสูจน์ได้เช่นนั้น
ขั้นตอน:ค้นหาแฮชของคอมมิต แท็ก หรือพูลรีเควสต์ในรายงาน จากนั้นตรวจสอบเอกสารการปรับใช้โครงการและซอร์สโค้ดที่ได้รับการยืนยันในบล็อกเอ็กซ์พลอเรอร์ที่เกี่ยวข้อง หากการใช้งานที่ปรับใช้เป็นเวอร์ชันใหม่กว่า ให้มองหาการตรวจสอบติดตามผลหรือการตรวจสอบความแตกต่างที่บันทึกไว้
เอกสารอ้างอิงหลัก: เอกสารประกอบการใช้งาน OpenZeppelin Code Inspectorและคู่มือการตรวจสอบสัญญาจาก Ethereum.org
ขั้นตอนที่ 4: พิจารณาสถานะการค้นพบอย่างจริงจังเช่นเดียวกับความรุนแรง
คำบรรยายภาพ: คำว่า “วิกฤต” “สูง” หรือ “ปานกลาง” เป็นเพียงครึ่งหนึ่งของเรื่องราวทั้งหมดเท่านั้น โปรดตรวจสอบว่าแต่ละประเด็นได้รับการแก้ไขแล้ว แก้ไขไปบางส่วนแล้ว หรือยังคงเป็นประเด็นที่ยังไม่ได้รับการแก้ไข
ระดับความรุนแรงจะบอกคุณถึงความสำคัญที่อาจเกิดขึ้นของข้อค้นพบนั้น สถานะจะบอกคุณว่าเกิดอะไรขึ้นหลังจากนั้น เครื่องมือตรวจสอบของ OpenZeppelin จะแยกแยะสถานะต่างๆ เช่น แก้ไขแล้ว แก้ไขบางส่วน รับทราบแล้วแต่ยังไม่ได้รับการแก้ไข และไม่มีการตอบสนอง
ความเข้าใจผิด:วลี “การตรวจสอบเสร็จสมบูรณ์” หมายความว่าโครงการได้แก้ไขทุกอย่างแล้ว ซึ่งไม่เป็นเช่นนั้น การตรวจสอบอาจเสร็จสมบูรณ์แล้วในขณะที่ยังมีข้อบกพร่องที่ยังไม่ได้รับการแก้ไข
ขั้นตอนการดำเนินการ:สร้างรายการปัญหาที่สำคัญและร้ายแรงทั้งหมด จากนั้นบันทึกสถานะสุดท้ายและหลักฐานการตรวจสอบการแก้ไข สำหรับปัญหาที่มีความสำคัญปานกลาง ให้ให้ความสนใจเป็นพิเศษเมื่อมีปัญหาหลายอย่างชี้ไปที่จุดอ่อนด้านการออกแบบเดียวกัน เช่น การควบคุมการเข้าถึง การบิดเบือนราคา หรือข้อผิดพลาดทางการบัญชี
อย่ามองข้ามข้อบกพร่องที่มีความรุนแรงน้อยโดยอัตโนมัติเช่นกัน ความสำคัญของข้อบกพร่องเหล่านั้นขึ้นอยู่กับบริบทของระบบ การผสมผสานกับปัญหาอื่นๆ และวิธีที่ผู้มีสิทธิ์พิเศษสามารถใช้ฟังก์ชันที่ได้รับผลกระทบได้
ขั้นตอนที่ 5: อ่านรายละเอียดเกี่ยวกับสิ่งที่พบ ผลกระทบ ปัจจัยก่อนหน้า และวิธีแก้ไข ไม่ใช่แค่หัวข้อเรื่อง
คำบรรยายภาพ: การกำหนดระดับความรุนแรงเป็นเพียงจุดเริ่มต้น สิ่งสำคัญคือต้องเข้าใจเงื่อนไขการโจมตี สินทรัพย์ที่ได้รับผลกระทบ และเหตุผลของผู้ตรวจสอบบัญชี
โดยปกติแล้ว ผลการตรวจสอบที่มีประโยชน์จะอธิบายถึงสิ่งที่อาจผิดพลาด เหตุใดจึงมีความสำคัญ เส้นทางการทำงานของโค้ดที่เกี่ยวข้อง เงื่อนไขเบื้องต้น และคำแนะนำ ผลการตรวจสอบที่ระบุว่า "มีความเสี่ยงสูง" ซึ่งต้องมีการบุกรุกระบบของผู้ดูแลระบบ อาจแสดงถึงความเสี่ยงในทางปฏิบัติที่แตกต่างไปจากการโจมตีโดยไม่ได้รับอนุญาตซึ่งผู้ใช้รายใดก็ได้สามารถกระทำได้
ตรวจสอบแล้ว: OpenZeppelin อธิบายความรุนแรงของปัญหาว่าสะท้อนถึงปัจจัยต่างๆ เช่น ผลกระทบ ความน่าจะเป็น และความยากในการโจมตี การวิเคราะห์ของ Trail of Bits เกี่ยวกับข้อบกพร่องของสัญญาอัจฉริยะ 246 รายการ ยังพบว่าปัญหาที่ร้ายแรงเกิดขึ้นในหลายหมวดหมู่ ไม่ใช่แค่เฉพาะข้อบกพร่องที่รู้จักกันดี เช่น การโจมตีแบบ reentrancy เท่านั้น ชุดข้อมูลของพวกเขายังเน้นย้ำถึงการควบคุมการเข้าถึง การตรวจสอบสิทธิ์ การกำหนดเวลา ตัวเลข การตรวจสอบความถูกต้อง และหมวดหมู่อื่นๆ ว่าเป็นแหล่งที่มาของความเสี่ยงที่สำคัญ
ความเข้าใจผิด:ข้อผิดพลาดในการเข้าถึงซ้ำ (reentrancy) เป็นข้อผิดพลาดเดียวในสัญญาอัจฉริยะที่ควรต้องกังวล ไม่ใช่เช่นนั้น ตรรกะทางธุรกิจ การควบคุมการเข้าถึง การตรวจสอบความถูกต้อง การออกแบบออราเคิล และการบัญชี ก็มีความสำคัญไม่แพ้กัน
การดำเนินการ:สำหรับข้อบกพร่องร้ายแรงแต่ละข้อ ให้ตอบคำถามสี่ข้อต่อไปนี้: ใครสามารถก่อให้เกิดข้อบกพร่องนี้ได้? พวกเขาจะได้รับประโยชน์หรือได้รับผลเสียอะไรบ้าง? ต้องมีข้อสมมติฐานอะไรบ้าง? ได้มีการทบทวนวิธีการแก้ไขที่ถูกต้องแล้วหรือไม่?
เอกสารอ้างอิงหลัก: โมเดลปัญหาการตรวจสอบของ OpenZeppelin , การวิเคราะห์ผลการตรวจสอบโดย Trail of Bitsและ ข้อควร พิจารณาด้านความปลอดภัยของ Solidity
ขั้นตอนที่ 6: ตรวจสอบบทบาทพิเศษ, คีย์ผู้ดูแลระบบ, สิทธิ์ในการหยุดชั่วคราว, การสร้างคีย์ใหม่ และสิทธิ์ในการอัปเกรด
คำบรรยายภาพ: ฟังก์ชันที่มีสิทธิ์พิเศษสมควรได้รับการพิจารณาเป็นพิเศษ เนื่องจากเส้นทางโค้ดที่ปลอดภัยยังคงอาจมีความเสี่ยงด้านการกำกับดูแลหรือการจัดการคีย์อยู่
โปรโตคอลหลายตัวจงใจรวมบทบาทที่มีสิทธิ์พิเศษไว้ด้วย ซึ่งไม่ได้หมายความว่ามันไม่ปลอดภัยโดยอัตโนมัติ แต่เป็นการเปลี่ยนแปลงรูปแบบความไว้วางใจ
ตรวจสอบแล้ว:คำแนะนำด้านความปลอดภัยของสัญญาอัจฉริยะของ Ethereum เตือนว่าเจ้าของเพียงรายเดียวอาจกลายเป็นจุดอ่อนสำคัญ โดยอธิบายว่าการควบคุมการเข้าถึงตามบทบาทและการควบคุมด้วยลายเซ็นหลายรายการเป็นวิธีลดความเสี่ยงดังกล่าว เอกสารเกี่ยวกับการล็อกเวลาของ OpenZeppelin อธิบายว่าการดำเนินการที่ล่าช้าสามารถให้เวลาผู้ใช้ในการตรวจสอบการดำเนินการบำรุงรักษาและออกจากระบบเมื่อเหมาะสม
ความเข้าใจผิด: “ไม่มีช่องโหว่ร้ายแรง” หมายความว่าผู้ดูแลระบบไม่สามารถทำอันตรายต่อผู้ใช้ได้ ความรุนแรงของการตรวจสอบและอำนาจในการกำกับดูแลเป็นคนละเรื่องกัน
ขั้นตอนการดำเนินการ:ค้นหาคำต่างๆ ในรายงาน เช่นowner, admin, role, multisig, timelock, pause, mint, upgrade, blacklist, และwithdrawจากนั้นระบุว่าใครดำรงตำแหน่งใดในปัจจุบัน และตำแหน่งนั้นสามารถดำเนินการได้เร็วแค่ไหน
เอกสารอ้างอิงหลัก: คำแนะนำด้านความปลอดภัยของสัญญาอัจฉริยะ Ethereumและเอกสารควบคุมการเข้าถึง OpenZeppelin
ขั้นตอนที่ 7: ตรวจสอบความสามารถในการอัปเกรด, ออราเคิล, บริดจ์ และข้อสมมติฐานความน่าเชื่อถือภายนอกอื่นๆ
คำบรรยายภาพ: ตรวจสอบขอบเขตความเชื่อถือ ไม่ใช่แค่ไฟล์ Solidity เท่านั้น พร็อกซี ออราเคิล บริดจ์ และการพึ่งพาภายนอกต่างๆ สามารถเปลี่ยนแปลงความเสี่ยงที่แท้จริงได้
พร็อกซีที่สามารถอัปเกรดได้สามารถคงที่อยู่สาธารณะเดิมไว้ได้ ในขณะที่เปลี่ยนตรรกะการใช้งาน ออราเคิลสามารถป้อนราคาที่กำหนดการชำระบัญชีได้ บริดจ์สามารถแนะนำสมมติฐานการดูแลหรือการตรวจสอบความถูกต้องที่แยกต่างหากได้ ไลบรารีและโปรโตคอลภายนอกสามารถล้มเหลวได้อย่างอิสระ
ตรวจสอบแล้ว:เอกสารของ OpenZeppelin ระบุว่าระบบที่ใช้พร็อกซีจะแยกที่อยู่พร็อกซีที่เสถียรออกจากโค้ดการใช้งานที่เปลี่ยนแปลงได้ เอกสารดังกล่าวยังเตือนด้วยว่าการอัปเกรดต้องได้รับการอนุญาตอย่างระมัดระวัง คู่มือความปลอดภัยของ Ethereum อธิบายถึงความเสี่ยงจากการเปลี่ยนแปลงออราเคิลและระบุว่าการป้อนราคาที่ไม่ถูกต้องอาจทำให้สัญญาทำงานกับข้อมูลที่ไม่ถูกต้องได้
ความเข้าใจผิด:การตรวจสอบซอร์สโค้ดที่แอดเดรสพร็อกซีแล้วพิสูจน์ได้ว่าพฤติกรรมในอนาคตจะไม่เปลี่ยนแปลง สำหรับระบบที่สามารถอัปเกรดได้นั้น อาจไม่เป็นเช่นนั้นเสมอไป
ขั้นตอนการดำเนินการ:ตรวจสอบว่าสัญญาดังกล่าวสามารถอัปเกรดได้หรือไม่ ใครเป็นผู้มีอำนาจอนุมัติการอัปเกรด การอัปเกรดล่าช้าหรือไม่ และการใช้งานในปัจจุบันได้รับการตรวจสอบแล้วหรือไม่ จากนั้นให้ระบุระบบภายนอกทั้งหมดที่หากเกิดความล้มเหลวอาจส่งผลกระทบต่อเงินทุนของผู้ใช้
เอกสารอ้างอิงหลัก: เอกสารประกอบการใช้งานพร็อกซี OpenZeppelinและ คำ แนะนำด้านความปลอดภัยของสัญญาอัจฉริยะ Ethereum
ขั้นตอนที่ 8: ตัดสินใจว่าจะซื้อ/หลีกเลี่ยง/ตรวจสอบเพิ่มเติมจากความเสี่ยงที่เหลืออยู่
คำบรรยายภาพ: การตัดสินใจขั้นสุดท้ายควรสะท้อนถึงความเสี่ยงที่ยังคงอยู่หลังจากแก้ไขปัญหาแล้ว ไม่ใช่การมีตรารับรองการตรวจสอบ
แม้ว่าจะมีการแก้ไขแล้ว ความเสี่ยงก็ยังคงอยู่ OpenZeppelin ได้ระบุไว้อย่างชัดเจนในการตรวจสอบที่เผยแพร่แล้วว่า การตรวจสอบแบบจำกัดเวลาไม่สามารถรับประกันได้ว่าได้ค้นพบข้อบกพร่องหรือความเสี่ยงทั้งหมดแล้ว ตัวอย่างเช่น ในการตรวจสอบ Audius ผู้ตรวจสอบแนะนำให้ทำการทดสอบเบต้า การให้รางวัลสำหรับการค้นหาข้อบกพร่อง และการตรวจสอบซ้ำในอนาคตหลังจากพบข้อบกพร่องร้ายแรงจำนวนมาก ในการตรวจสอบ Panoptic พวกเขาแนะนำให้มีการตรวจสอบเพิ่มเติมและการตรวจสอบอีกครั้งหลังจากมีการเปลี่ยนแปลงโค้ดอย่างมีนัยสำคัญ
ความเข้าใจผิด:การตรวจสอบหลายครั้งจะช่วยลดความเสี่ยงของสัญญาอัจฉริยะให้เหลือศูนย์ ความจริงไม่ใช่เช่นนั้น การตรวจสอบช่วยเพิ่มความมั่นใจ แต่ความปลอดภัยยังขึ้นอยู่กับความถูกต้องในการใช้งาน การดำเนินงาน ความปลอดภัยของคีย์ผู้ดูแลระบบ การตรวจสอบ การตอบสนองต่อเหตุการณ์ สมมติฐานทางเศรษฐกิจ และการอัปเกรดในอนาคตด้วย
ขั้นตอน:จำแนกโครงการออกเป็น 3 ประเภทดังต่อไปนี้:
- ซื้อ/ดำเนินการวิจัยต่อ:โค้ดที่ใช้งานอยู่ในปัจจุบันตรงกับขอบเขตที่ตรวจสอบแล้ว; ข้อค้นพบที่สำคัญได้รับการแก้ไขและตรวจสอบซ้ำแล้ว; สิทธิ์การใช้งานเฉพาะด้านเป็นที่ยอมรับและโปร่งใส; เข้าใจถึงการพึ่งพาภายนอกแล้ว
- ตรวจสอบเพิ่มเติม:ข้อมูลสำคัญขาดหายไป การตรวจสอบเกิดขึ้นก่อนการอัปเกรดครั้งใหญ่ หรือปัญหาที่มีระดับความยากปานกลาง/สูงบางส่วนได้รับการแก้ไขหรือรับทราบเพียงบางส่วนเท่านั้น
- ควรหลีกเลี่ยงในขณะนี้:ปัญหาสำคัญ/ระดับสูงยังไม่ได้รับการแก้ไข การใช้งานไม่ตรงกับเวอร์ชันที่ตรวจสอบแล้ว สัญญาหลักอยู่นอกขอบเขต หรือผู้ดูแลระบบเปิดเผยการควบคุมเงินทุนของผู้ใช้ฝ่ายเดียวอย่างไม่ชัดเจน
วิธีตีความวลีที่ใช้กันทั่วไปในการตรวจสอบบัญชี
| วลี |
โดยปกติแล้วมันหมายความว่าอย่างไร |
ขั้นตอนต่อไปของคุณ |
| “ไม่พบปัญหาสำคัญใดๆ” |
การตรวจสอบไม่พบข้อบกพร่องที่สำคัญใดๆ ภายในขอบเขตและกรอบเวลาที่กำหนด |
ยังคงต้องอ่านรายละเอียดเกี่ยวกับระดับสูง ระดับกลาง ข้อสันนิษฐานเรื่องความไว้วางใจ ข้อยกเว้น และอำนาจของผู้ดูแลระบบอยู่เสมอ |
| “ตกลงแล้ว” |
โครงการได้แก้ไขโค้ด และผู้ตรวจสอบได้ยอมรับการแก้ไขในชุดแก้ไขที่ได้รับการตรวจสอบแล้ว |
ตรวจสอบว่าการแก้ไขดังกล่าวเป็นส่วนหนึ่งของโค้ดที่ใช้งานจริงแล้ว |
| “รับทราบ” |
ทีมยอมรับหรือรับรู้ถึงปัญหา แต่ยังไม่ได้แก้ไขโค้ด |
โปรดอ่านเหตุผล อย่าคิดว่านี่เป็นสิ่งที่กำหนดไว้ตายตัว |
| “แก้ไขได้บางส่วน” |
มาตรการบรรเทาช่วยลดความเสี่ยง แต่ไม่ได้ขจัดปัญหาดังกล่าวออกไปโดยสมบูรณ์ |
ทำความเข้าใจเส้นทางการโจมตีหรือข้อสมมติฐานที่เหลืออยู่ |
| “อยู่นอกขอบเขต” |
ผู้ตรวจสอบบัญชีไม่ได้ประเมินส่วนประกอบนั้น |
อย่าสรุปว่ารายงานนั้นแสดงถึงความปลอดภัยสำหรับส่วนประกอบนั้น |
| “ถือว่าได้รับความไว้วางใจ” |
แบบจำลองการตรวจสอบขึ้นอยู่กับว่าผู้กระทำหรือส่วนประกอบนั้นปฏิบัติตนอย่างถูกต้องหรือไม่ |
ตัดสินใจว่าคุณยินดีรับข้อสมมติฐานเรื่องความไว้วางใจนั้นหรือไม่ |
5 สัญญาณอันตรายที่ควรหยุดทันที
- โครงการนี้ไม่สามารถแสดงรายงานต้นฉบับที่ผู้ตรวจสอบบัญชีจัดทำไว้ได้ภาพหน้าจอหรือโลโก้เพียงอย่างเดียวไม่เพียงพอ
- รายงานฉบับนี้ขาดขอบเขตหรือเวอร์ชันที่สามารถทำซ้ำได้หากไม่มีการบันทึกการเปลี่ยนแปลง แท็ก หรือไฟล์ที่ระบุอย่างแน่ชัด ก็ยากที่จะทราบว่ามีการตรวจสอบอะไรบ้าง
- ประเด็นสำคัญหรือประเด็นระดับสูงยังคงเปิดอยู่โดยปราศจากเหตุผลที่ชัดเจนและมีเอกสารประกอบ
- โปรโตคอลนี้สามารถอัปเกรดได้ แต่รายงานแทบไม่ได้กล่าวถึงอำนาจในการอัปเกรดหรือบทบาทพิเศษใดๆ เลย
- การดำเนินการได้เปลี่ยนแปลงไปอย่างมากหลังจากการตรวจสอบ และไม่มีการตรวจสอบติดตามผลเพิ่มเติม
หากพบกรณีใดกรณีหนึ่งเหล่านี้ ขั้นตอนต่อไปที่ปลอดภัยที่สุดคืออย่าพยายามหาเหตุผลมาอธิบาย ให้หยุดการตัดสินใจลงทุนไว้ก่อน และขอหลักฐานล่าสุดมายืนยัน
ขั้นตอนการตรวจสอบและจัดทำรายงานก่อนการซื้อภายใน 10 นาที
- เปิดรายงานจากเว็บไซต์อย่างเป็นทางการของผู้ตรวจสอบบัญชี
- บันทึกวันที่ของรายงาน ที่เก็บข้อมูล ขอบเขต และแฮชของคอมมิต
- ตรวจสอบสัญญาที่ใช้งานอยู่และที่อยู่ในการดำเนินการ
- อ่านผลการตรวจสอบที่สำคัญและระดับสูงทั้งหมด
- ตรวจสอบสถานะสุดท้ายของปัญหาสำคัญทุกเรื่อง
- ค้นหาบทบาทพิเศษและอำนาจฉุกเฉิน
- ระบุการอัปเกรดพร็อกซีและผู้ที่ควบคุมการอัปเกรดเหล่านั้น
- ระบุออราเคิล สะพานเชื่อม ระบบการดูแลรักษา และการพึ่งพาภายนอก
- ตรวจสอบการเปลี่ยนแปลงที่เกิดขึ้นหลังจากการตรวจสอบการคอมมิต
- ก่อนซื้อ ควรตัดสินใจว่าคุณยอมรับความเสี่ยงที่เหลืออยู่ระดับใด
สรุป
การตรวจสอบสัญญาอัจฉริยะเป็นเพียงหลักฐานการตรวจสอบ ไม่ใช่หลักฐานยืนยันความปลอดภัย สัญญาณที่สำคัญที่สุดไม่ใช่โลโก้ของผู้ตรวจสอบ แต่เป็นหลักฐานที่เชื่อมโยงขอบเขตที่กำหนดไว้อย่างชัดเจน การแก้ไขโค้ดที่แน่นอน ข้อค้นพบที่สำคัญ การแก้ไขที่ได้รับการตรวจสอบแล้ว ไบต์โค้ดที่นำไปใช้งาน และการควบคุมการดำเนินงานที่โปร่งใส
ข้อผิดพลาดที่อันตรายที่สุดในการอ่านเอกสารคือการหยุดอยู่ที่คำว่า “ผ่านการตรวจสอบแล้ว” คำถามที่สำคัญกว่าคือ: อะไรบ้างที่ยังอาจผิดพลาดได้หลังจากผ่านการตรวจสอบแล้ว?หากคุณสามารถตอบคำถามนั้นได้อย่างชัดเจน และคุณสบายใจกับความเสี่ยงที่เหลืออยู่ คุณก็จะตัดสินใจได้อย่างชาญฉลาดมากขึ้น หากขอบเขต สถานะการแก้ไข อำนาจการดูแลระบบ หรือเวอร์ชันที่ใช้งานอยู่ไม่ชัดเจน การดำเนินการที่ถูกต้องคือการตรวจสอบก่อนซื้อ
แหล่งข้อมูลปฐมภูมิ
บทความนี้มีวัตถุประสงค์เพื่อให้ข้อมูลเท่านั้นและไม่ใช่คำแนะนำทางการเงิน การตรวจสอบบัญชีไม่สามารถขจัดความเสี่ยงด้านสัญญาอัจฉริยะ การกำกับดูแล ออราเคิล เศรษฐกิจ การดำเนินงาน หรือตลาดได้