รายงานการเปรียบเทียบการตรวจสอบอย่างเป็นทางการของสองเครื่องมือ (VaaS & Mythril)
เนื่องจากยุคของบล็อกเชน 2.0 ที่มุ่งเน้นไปที่สัญญาอัจฉริยะ (Smart Contract) และแอปพลิเคชันบล็อกเชน (DApps) ค่อยๆ กลายเป็นกระแสหลัก ความปลอดภัยของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนจึงกลายเป็นจุดสนใจในอุตสาหกรรมมากขึ้น
โดยเฉพาะอย่างยิ่ง หลังจากประสบกับเหตุการณ์ต่างๆ เช่น THE DAO และการขโมย Binance วิธีการตรวจสอบและรับประกันความปลอดภัยของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนได้กลายเป็นปัญหาเร่งด่วนในอุตสาหกรรมบล็อกเชนในปัจจุบัน
ผู้เขียนได้จัดทำสถิติง่ายๆ ขึ้น ตั้งแต่เดือนกันยายน 2017 ถึงกันยายน 2018 ช่องโหว่ที่เกี่ยวข้องของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนแสดงให้เห็นรูปแบบการระบาดบ่อยครั้งและผลที่ตามมานั้นกว้างไกล ไม่เพียงแต่ทำให้สูญเสียเงินจำนวนมากโดยตรงเท่านั้น จากมุมมองของการพัฒนาในระยะยาว มันยังส่งผลต่อการพัฒนาที่ยั่งยืนของเทคโนโลยีเกิดใหม่อย่างบล็อกเชนในอนาคตอีกด้วย
นอกจากนี้ แม้ว่าช่องโหว่ที่อาจเกิดขึ้นของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนในปัจจุบันยังไม่ได้รับการแก้ไขอย่างเหมาะสม แต่สถานะที่เป็นอยู่คือจำนวนของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนยังคงเพิ่มขึ้นอย่างรวดเร็วด้วยอัตราการเติบโตเฉลี่ยหลายหมื่นรายการทุกวัน
ไม่ยากที่จะเห็นว่าอัตราการเติบโตและความปลอดภัยของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนนั้นอยู่ร่วมกันในความสัมพันธ์ที่ไม่แข็งแรง หากเราใช้การเปรียบเทียบอุปสงค์และอุปทาน (อัตราการเติบโตคือ "อุปทาน" ความปลอดภัยคือ "อุปสงค์") สถานะทั่วไปในปัจจุบันของสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชนคือสถานะ "อุปทานเกินอุปสงค์"
จากสิ่งนี้ วิธีการรับประกันความปลอดภัยของสัญญาอัจฉริยะขนาดใหญ่และแอปพลิเคชันบล็อกเชนได้กลายเป็นประเด็นหลักสำหรับองค์กรที่มองไปข้างหน้าและบุคคลในอุตสาหกรรมบล็อกเชน ในความเป็นจริง ปัจจุบันมีวิธีการพิเศษในอุตสาหกรรมเพื่อเอาชนะจุดบกพร่องนี้ เช่น การจับคู่รหัสคุณลักษณะ การตรวจสอบอัตโนมัติตามการดำเนินการเชิงสัญลักษณ์และนามธรรมเชิงสัญลักษณ์ และการตรวจสอบอัตโนมัติตามการตรวจสอบอย่างเป็นทางการ ในหมู่พวกเขา หลังจากสำรวจและฝึกฝนอย่างกว้างขวางในอุตสาหกรรม "การตรวจสอบอัตโนมัติตามการตรวจสอบอย่างเป็นทางการ" ได้กลายเป็นวิธีการที่ค่อนข้างสมบูรณ์และเป็นที่นิยมในอุตสาหกรรม
ดังนั้น ผู้เขียนจึงเน้นเป็นพิเศษไปที่ "การตรวจสอบอย่างเป็นทางการ" เลือกเครื่องมือตรวจสอบอย่างเป็นทางการที่สำคัญ 2 เครื่องมือ (VaaS & Mythril) ในอุตสาหกรรมปัจจุบัน และทำการเปรียบเทียบการทดสอบอย่างง่าย โดยเฉพาะอย่างยิ่ง เวอร์ชันของเครื่องมือมิธริลที่ใช้สำหรับการทดสอบคือ "0.21.12"
ชื่อเรื่องรอง
ข้อมูลเบื้องต้นเกี่ยวกับเครื่องมือ VaaS และ Mythril
01. รู้เบื้องต้นเกี่ยวกับเครื่องมือ VaaS
เครื่องมือ VaaS เป็นเครื่องมือตรวจสอบอย่างเป็นทางการอัตโนมัติที่พัฒนาโดย Beosin Chengdu Lianan โดยใช้สิทธิ์ในทรัพย์สินทางปัญญาของตนเอง โดยสามารถให้บริการตรวจสอบอย่างเป็นทางการ "ระดับกองทัพ" สำหรับสัญญาอัจฉริยะและแอปพลิเคชันบล็อกเชน และสามารถระบุตำแหน่งรหัสที่มีความเสี่ยงได้อย่างแม่นยำ ตำแหน่งและ มีการชี้ให้เห็นถึงสาเหตุของความเสี่ยง และช่องโหว่ด้านความปลอดภัยทั่วไป คุณลักษณะด้านความปลอดภัย และความถูกต้องในการทำงานของสัญญาอัจฉริยะได้รับการตรวจพบอย่างมีประสิทธิภาพด้วยความแม่นยำมากกว่า 95%
02. รู้เบื้องต้นเกี่ยวกับเครื่องมือ Mythril
ชื่อเรื่องรอง
องค์ประกอบของกรณีทดสอบ
กรณีทดสอบสัญญาประกอบด้วยสัญญาโทเค็น 260 สัญญาและสัญญาธุรกิจ 20 สัญญา
สัญญาโทเค็นรวมถึงสัญญาโทเค็น Top200 และสัญญาโทเค็นทั่วไป 60 รายการสำหรับการตรวจสอบ ครอบคลุมการทำงานต่างๆ เช่น ICO การล็อค การขุด และการเบิร์น
ชื่อเรื่องรอง
ภาพรวมของผลการทดสอบ
เครื่องมือ VaaS สามารถตรวจจับกรณีการทดสอบสัญญาทั้งหมดของโทเค็นและคลาสธุรกิจได้ อย่างไรก็ตาม เครื่องมือ Mythril สามารถตรวจจับได้เฉพาะสัญญาโทเค็นเท่านั้นแต่ไม่สามารถตรวจจับสัญญาธุรกิจได้ ดังนั้น ควรสังเกตว่าภาพรวมของผลการทดสอบนี้เป็นเพียงการวิเคราะห์เปรียบเทียบรายการสัญญาโทเค็นเท่านั้น
เครื่องมือ VaaS มีการตรวจสอบช่องโหว่ทั้งหมด 28 รายการ แต่เครื่องมือ Mythril มีการตรวจสอบช่องโหว่เพียง 9 รายการเมื่อเทียบกับเครื่องมือ VaaS ดังนั้น รายการตรวจจับของเครื่องมือ VaaS จึงมากกว่าของเครื่องมือ Mythril รายการตรวจจับเฉพาะจะถูกเปรียบเทียบดังนี้:
การเปรียบเทียบรายการตรวจจับ VaaS และ Mythril


01. ผลการทดสอบสำหรับรายการทดสอบเดียวกัน
สำหรับกรณีทดสอบโทเค็น 260 รายการที่เลือก เครื่องมือ Mythril สามารถเรียกใช้ผลลัพธ์ของสัญญาได้ 184 รายการภายใน 15 นาที และ 76 รายการไม่มีผลการตรวจพบ ในขณะที่เครื่องมือ VaaS สามารถรันผลลัพธ์ทั้งหมดได้ นำผลลัพธ์ 184 รายการที่ทั้งเครื่องมือ Mythril และเครื่องมือ VaaS สามารถเรียกใช้เพื่อเปรียบเทียบ และผลลัพธ์มีดังนี้
อัตราการเข้าชมและอัตราการบวกเท็จ
จากการเปรียบเทียบผลการตรวจจับ เปรียบเทียบกับรายการตรวจจับเดียวกัน ความสามารถในการตรวจจับของเครื่องมือ VaaS นั้นสูงกว่าของเครื่องมือ Mythril มาก จากการคำนวณ ความแม่นยำในการตรวจจับของเครื่องมือ VaaS คือ 96.9% ความแม่นยำในการตรวจจับของเครื่องมือ Mythril คือ 36.6% อัตราการตรวจพบที่ผิดพลาดของเครื่องมือ VaaS คือ 15.3% อัตราการตรวจพบที่ผิดพลาดของเครื่องมือ Mythril คือ 48.5% ดูภาพด้านล่างสำหรับรายละเอียด

ควรสังเกตว่าสูตรการคำนวณของอัตราการเข้าชมและอัตราการเตือนที่ผิดพลาดคือ:
อัตราการเข้าชม = จำนวนครั้งที่เข้าชม/จำนวนคำถามทั้งหมด
อัตราผลบวกปลอม = จำนวนผลบวกปลอม/(จำนวนผลบวกปลอม + จำนวนครั้ง)
ตามสถิติของผู้เขียน รายการตรวจจับที่ดำเนินการโดยทั้งเครื่องมือ VaaS และเครื่องมือ Mythril มีคำถามทั้งหมด 655 คำถาม:
เครื่องมือ VaaS ตรวจพบปัญหาทั้งหมด 635 รายการ โดยมีอัตราการพบปัญหา 96.9% ตรวจพบข้อผิดพลาดทั้งหมด 115 รายการ โดยมีอัตราการตรวจพบเท็จ 15.3%
เครื่องมือ Mythril ตรวจพบปัญหาทั้งหมด 240 รายการ โดยมีอัตราการพบปัญหา 36.6% พบผลบวกปลอมทั้งหมด 226 รายการ โดยมีอัตราผลบวกลวง 48.5% ในหมู่พวกเขา การโจมตีกลับเข้าระบบของเครื่องมือ Mythril และการปฏิเสธบริการ อัตราการเตือนที่ผิดพลาดนั้นค่อนข้างสูง คิดเป็น 93.3% ของทั้งหมด
มูลค่ารวมของการตรวจจับถูกเปรียบเทียบในตารางต่อไปนี้:

จำกัด เวลาทดสอบ
เวลาทดสอบเฉลี่ยของเครื่องมือ Mythril คือ 226.2 วินาที ในขณะที่เวลาทดสอบเฉลี่ยของเครื่องมือ VaaS คือ 164.4 วินาที แสดงให้เห็นว่าประสิทธิภาพการทำงานของเครื่องมือ VaaS ดีกว่าเครื่องมือ Mythril
02. ผลการตรวจจับของรายการตรวจจับเฉพาะสำหรับเครื่องมือ VaaS
ดูตารางด้านล่างสำหรับรายละเอียด:
ชื่อเรื่องรอง

การนำเสนอกรณี
01. กรณีของรายการตรวจจับเดียวกัน
รีเอนทรานซ์
กรณี:

interface TEST {
function test123() external view returns (uint256);
function getBlocknumber() external view returns (uint256);
}
contract test2 {
function testCalling(address _testAdddress) public {
TEST t = TEST(_testAdddress);
t.test123();//mythril ผลบวกลวง
}
function testFormal(address _testAdddress) public view returns(uint256 time){
TEST t = TEST(_testAdddress);
t.getBlocknumber();//mythril บวกเท็จ
return time;
}
}
contract Reentrancy {
mapping(address => uint256) public balances;
event WithdrawFunds(address _to,uint256 _value);
function depositFunds() public payable {
balances[msg.sender] += msg.value;
}
function showbalance() public view returns (uint256 ){
return address(this).balance;
}
function withdrawFunds (uint256 _weiToWithdraw) public {
require(balances[msg.sender] >= _weiToWithdraw);
require(msg.sender.call.value(_weiToWithdraw)());
ยอดคงเหลือ[msg.sender] -= _weiToWithdraw;//mythril ผลบวกลวงที่เห็นได้ชัด
emit WithdrawFunds(msg.sender,_weiToWithdraw);
}
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:


▷ จากการวิเคราะห์ของผู้เขียน เครื่องมือ VaaS รายงานตำแหน่งของการโจมตีการกลับเข้ามาใหม่ ในขณะที่เครื่องมือ Mythril ส่งสัญญาณแจ้งเตือนสำหรับการโทรจากภายนอก มีการเตือนทั้งหมด 4 รายการ โดย 2 รายการเป็นการโทรจากภายนอกปกติ และอีกรายการคือ การแจ้งเตือนที่ผิดพลาดที่เห็นได้ชัด โดยมีอัตราการตรวจพบที่ผิดพลาดสูง
TXOriginAuthentication (ข้อผิดพลาดในการใช้งาน tx.origin)
กรณี:

contract TxUserWallet {
address owner;
constructor() public {
owner = msg.sender;
}
function transferTo(address dest, uint amount) public {
require(tx.origin == owner);
dest.transfer(amount);
}
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:

▷ จากการวิเคราะห์ของผู้เขียน ทั้งเครื่องมือ VaaS และเครื่องมือ Mythril สามารถตรวจจับและแจ้งเตือนคีย์เวิร์ด tx.origin ได้
เรียกใช้การโทรระดับต่ำ (การโทร, การโทรจากผู้รับมอบสิทธิ์, การโทรฟังก์ชันฆ่าตัวตาย)
กรณี:

contract Delegatecall{
uint public q;
bool public b;
address addr = 0xde6a66562c299052b1cfd24abc1dc639d429e1d6;
function Delegatecall() public payable {
}
function call1() public returns(bool) {
b = addr.delegatecall
(bytes4(keccak256("fun(uint256,uint256)")),2,3);
return b;
}
function call2(address add) public returns(bool){
b=add.delegatecall
(bytes4(keccak256("fun(uint256,uint256)")),2,3);
return b;
}
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:

▷ จากการวิเคราะห์ของผู้เขียน มีการเรียก delegetacall สองครั้งในกรณีนี้ ในขณะที่เครื่องมือ Mythril รายงานเพียงครั้งเดียว ดังนั้นจึงมีความเสี่ยงที่จะรายงานน้อยเกินไป
การจัดการ BlockMembers (การพึ่งพาพารามิเตอร์บล็อก)
กรณี:

function createTokens() payable external {
if (isFinalized) throw;
if (block.number < fundingStartBlock) throw;
if (block.number > fundingEndBlock) throw;
if (msg.value == 0) throw;
uint256 tokens = safeMult(msg.value, tokenExchangeRate);
uint256 checkedSupply = safeAdd(totalSupply, tokens);
if (tokenCreationCap < checkedSupply) throw;
totalSupply = checkedSupply;
balances[msg.sender] += tokens;
CreateBAT(msg.sender, tokens);
}
function finalize() external {
if (isFinalized) throw;
if (msg.sender != ethFundDeposit) throw;
if(totalSupply < tokenCreationMin) throw;
if(block.number <= fundingEndBlock && totalSupply != tokenCreationCap) throw;
// move to operational
isFinalized = true;
if(!ethFundDeposit.send(this.balance)) throw;
}
function refund() external {
if(isFinalized) throw;
if (block.number <= fundingEndBlock) throw;
if(totalSupply >= tokenCreationMin) throw;
if(msg.sender == batFundDeposit) throw;
uint256 batVal = balances[msg.sender];
if (batVal == 0) throw;
balances[msg.sender] = 0;
totalSupply = safeSubtract(totalSupply, batVal);
uint256 ethVal = batVal / tokenExchangeRate;
LogRefund(msg.sender, ethVal);
if (!msg.sender.send(ethVal)) throw;
}
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:

▷ จากการวิเคราะห์ของผู้เขียน ทั้งเครื่องมือ VaaS และเครื่องมือ Mythril สามารถตรวจจับการพึ่งพาพารามิเตอร์ของบล็อกได้ อย่างไรก็ตาม เครื่องมือ Mythril มีความเสี่ยงที่จะเกิดผลบวกลวง
การปฏิเสธการให้บริการ
กรณี:

contract Auction {
address public highestBidder = 0x0;
uint256 public highestBid;
function Auction(uint256 _highestBid) {
require(_highestBid > 0);
highestBid = _highestBid;
highestBidder = msg.sender;
}
function bid() payable {
require(msg.value > highestBid);
highestBidder.transfer(highestBid);
highestBidder = msg.sender;
highestBid = msg.value;
}
function auction_end() {
}
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:

▷ จากการวิเคราะห์ของผู้เขียน ทั้งเครื่องมือ VaaS และเครื่องมือ Mythril สามารถดำเนินการตรวจจับความเสี่ยงสำหรับการปฏิเสธบริการ อย่างไรก็ตาม ในกรณีนี้ ผู้เสนอราคาสูงสุดอาจโจมตีสัญญาอย่างมุ่งร้ายส่งผลให้การถ่ายโอนล้มเหลวอย่างต่อเนื่องส่งผลให้สัญญาปฏิเสธที่จะรับบริการ ในกรณีนี้ เครื่องมือ VaaS สามารถตรวจจับความเสี่ยงของการปฏิเสธบริการ แต่เครื่องมือมิธริลตรวจไม่พบ
ยกเลิกการเลือกการโทรหรือส่งค่าส่งคืน (การโทรและส่งการตรวจจับค่าส่งคืน)
กรณี:

if (lastTimeOfNewCredit + TWELVE_HOURS < block.timestamp) {
msg.sender.send(amount);
creditorAddresses[creditorAddresses.length - 1].send(profitFromCrash);
corruptElite.send(this.balance);
...
return true;
}
else {
msg.sender.send(amount);
return false;
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:

▷ จากการวิเคราะห์ของผู้เขียน ทั้งเครื่องมือ VaaS และเครื่องมือ Mythril สามารถตรวจจับค่าที่ส่งคืนของการโทรที่ไม่ได้ตรวจสอบได้ อย่างไรก็ตาม เครื่องมือ Mythril มีความเสี่ยงที่จะเกิดผลบวกลวง
จำนวนเต็มล้น
กรณีที่ 1:

function distributeBTR(address[] addresses) onlyOwner {
for (uint i = 0; i < addresses.length; i++) {
balances[owner] -= 2000 * 10**8;
alances[addresses[i]] += 2000 * 10**8;
Transfer(owner, addresses[i], 2000 * 10**8);
}
}

▷ จากการวิเคราะห์ของผู้เขียน ค่าของยอดคงเหลือ [เจ้าของ] ไม่ได้รับการตรวจสอบในกรณีข้างต้น ซึ่งอาจทำให้เกิดการโอเวอร์โฟลว์ แต่เครื่องมือ Mythrill จะไม่รายงานข้อผิดพลาด ซึ่งหมายความว่าเครื่องมือ Mythrill จะไม่ตรวจสอบการทำงานอย่างต่อเนื่อง
กรณีที่ 2:

contract A {
uint c;
function add(uint8 a,uint8 b){
uint8 sum = a+b;
c=sum;
}
}

ผลการทดสอบเครื่องมือ VaaS:

ผลการทดสอบเครื่องมือ Mythril:

▷ จากการวิเคราะห์ของผู้เขียน การตรวจจับการล้นของเครื่องมือ Mythrill สำหรับประเภทข้อมูลที่ไม่ใช่ uint256 นั้นไม่ถูกต้อง
กรณีที่ 3:
ผลการตรวจจับบางอย่างของเครื่องมือมิธริล:


▷ จากการวิเคราะห์ของผู้เขียน เครื่องมือ Mythrill ไม่ได้ประมวลผลตัวแปรเฉพาะบางตัว ส่งผลให้เกิดผลบวกปลอม เช่น อาร์เรย์ msg.value เดี๋ยวนี้ เป็นต้น
02. กรณีของรายการตรวจจับเฉพาะสำหรับเครื่องมือ VaaS
กรณีที่ 1:

...
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) constant returns (uint);
function transferFrom(address from, address to, uint value);
function approve(address spender, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
...
function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
}

ผลการทดสอบ:


กรณีที่ 2:

contract A {
B b;
uint c;
function test(uint a){
b = new B(a);
c = b.get(200);
}
}
contract B {
uint b;
function B(uint e){
b=100;
}
function get(uint a)returns(uint){
require(a<100);
return a;
}
}

ผลการทดสอบ:

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

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


