精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

安全智能合約工具:端到端開發人員指南

譯文
安全 應用安全
本文將介紹智能合約開發的每個階段可用的一些安全工具,并對采用這些工具提供一些建議。

?譯者 | 李睿

審校 | 孫淑娟

對一些人來說,編寫安全智能合約很難。本文將介紹Web3中的一些安全工具,以提高智能合約的安全性。

毫無疑問,編寫安全智能合約比較困難,即使是高級開發人員編寫的智能合約也可能被黑客攻擊。由于這些智能合約通常具有很高的經濟價值,因此黑客攻擊和破解它們的動機也很高。再加上Web3的不變性,安全性變得更加重要。安全性因此成為了智能合約開發人員的首要任務。

本文將介紹智能合約開發的每個階段可用的一些安全工具,并對采用這些工具提供一些建議。

1、為開發做好準備

當開始開發智能合約時,安全性應該是開發人員首要考慮的問題,而一些工具可以在準備編寫代碼時提供幫助,這其中包括文檔、檢測和編寫可重用代碼。

首先,文檔是任何開發項目的關鍵,智能合約開發也不例外。以太坊自然規范格式(NatSpec)是一種記錄智能合約的好方法。

NatSpec是一種特殊形式的注釋,用于為合約、接口、庫、函數和事件提供豐富的文檔。例如以下Tree Contract的穩定性代碼片段:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 < 0.9.0;
/// @title A simulator for trees
/// @author Larry A. Gardner
/// @notice You can use this contract for only the most basic simulation
contract Tree {
/// @notice Calculate tree age in years, rounded up, for live trees
/// @dev The Alexandr N. Tetearing algorithm could increase precision
/// @param rings The number of rings from dendrochronological sample
/// @return Age in years, rounded up for partial years
function age(uint256 rings) external virtual pure returns (uint256) {
return rings + 1;
}
}

NatSpec 對Solidity Contract的注釋

通過使用NatSpec注釋,可以很容易地向其他開發人員、審核人員或只想與合約交互的人解釋代碼。簡單地說,它是干凈的、可讀的、容易理解的。

其次,重用經過實戰測試的代碼是降低智能合約中漏洞風險的另一種經過驗證的方法。目前有許多廣泛使用的開源智能合約庫,例如OpenZeppelin,其中包含用于實現訪問控制、暫停功能、升級等的預先編寫的邏輯,以及用于優化使用的Solmate合約。

最后,檢測是在智能合約代碼中發現潛在問題的具有價值的工具。它可以在代碼中發現風格錯誤、違反編程約定和不安全的結構。有很多很好的檢測工具可用,例如ETHLint(以前的Solium)。檢測可以幫助發現潛在的問題(例如重入漏洞這樣的安全問題),甚至在它們成為代價高昂的錯誤之前。

通過在智能合約開發過程中考慮文檔、檢測和可重用代碼,可以提高合約的安全性。從長遠來看,花時間正確地設置這些將會在安全性和效率方面得到回報。

2、開發

現在了解可以在編碼時提供幫助的兩類工具——單元測試和基于屬性的測試。

單元測試顯然是創建安全可靠代碼的重要組成部分。通過測試代碼的單個單元,可以確保合約按照預期的方式運行,并希望在生產中出現問題之前發現任何潛在問題。

有幾種不同的工具可用于為智能合約編寫單元測試。Foundry、Truffle和Brownie都是支持各種編程語言的流行框架。

Foundry(用Rust編寫)是一個用于編寫智能合約的框架,其中包括測試框架Forge。偽造單元測試可以直接在Solidity中編寫,包括許多欺騙代碼,這些代碼可以提供斷言、改變EVM狀態的能力、模擬數據等等。Foundry還帶有內置的Fuzzing(將在后面的文章中詳細討論)。

// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.10;
import "ds-test/test.sol";
import "../StakeContract.sol";
import "./mocks/MockERC20.sol";

contract StakeContractTest is DSTest {
StakeContract public stakeContract;
MockERC20 public mockToken;
function setUp() public {
stakeContract = new StakeContract();
mockToken = new MockERC20();
}
/// @notice Test token staking with different amount
function test_staking_tokens() public {
uint256 amount = 10e18;
mockToken.approve(address(stakeContract), amount);
bool stakePassed = stakeContract.stake(amount, address(mockToken));
assertTrue(stakePassed);
}
}

在Foundry中的Solidity單元測試示例

Truffle也是構建智能合約的框架。Truffle中的單元測試可以用Solidity或JavaScript編寫。開發人員通常使用基于JavaScript的測試與合同進行外部交互,并使用Solidity測試評估合同在實際區塊鏈上的行為。Truffle使用Mocha進行異步測試,使用Chai進行斷言。

Brownie是一個基于python的框架,用于開發和測試智能合約。Brownie與pytest集成用于單元測試,并提供了一個堆棧跟蹤分析工具來測量代碼覆蓋率。

在編寫單元測試時,通過測試盡可能多的代碼不同部分來實現高測試覆蓋率,以確保所有功能都能按預期工作。Foundry不需要額外的插件來測量測試覆蓋率。對于其他框架,可能至少可以添加一個插件來衡量這一點。

雖然單元測試是確保智能合約正確性的可靠方法,但基于屬性的測試允許對智能合約進行更深入的驗證。這是一個相對較新的概念,與傳統的單元測試相比,它提供了一系列優勢。基于屬性的測試側重于測試智能合約的屬性,而不是單個組件。

在指南中,“屬性描述了智能合約的預期行為,并聲明了關于其執行的邏輯斷言。屬性必須始終為真。基于屬性的測試工具將智能合約的代碼和用戶定義的屬性集合作為輸入,并檢查執行是否在任何時間點違反了它們。”

基于屬性的測試基于模糊概念,這是一種通過引入隨機輸入來測試系統的技術。這意味著基于屬性的測試可以在更廣泛的層面上檢查智能合約,因為它不依賴于開發人員提供的特定輸入。正因為如此,它正成為一種越來越流行的測試智能合約的方法。

以之前的合約為例,使用基于屬性的方法來測試一個簡單的staking函數。為此,將使用Scribble,這是一種規范語言和運行時工具,它使這一切變得更加容易。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
error TransferFailed();
contract StakeContract {
mapping(address => uint256) public s_balances;
/// #if_succeeds {:msg "Stake created successfully"} $result == true;
function stake(uint256 amount, address token) external returns (bool){
s_balances[msg.sender] += amount;
bool success = IERC20(token).transferFrom(msg.sender, address(this), amount);
if (!success) revert TransferFailed();
return success;
}
}

使用Scribble Notation進行的樣品可靠性測試

圖片

不同的工具可以使用Scribble規范進行屬性測試

為了評估staking函數,必須檢查它是否在成功執行的情況下返回true。這可以通過向stake函數代碼添加注釋來完成,正如上面所表明的那樣,不需要單獨的測試文件。然后可以運行Scribble CLI工具將Scribble注釋轉換為斷言。接下來,這些斷言必須通過模糊器(如Diligence Fuzzing或Mythril)運行,以確定是否存在任何違反屬性的情況。

圖片

 來自Diligence Fuzzing活動示例的報告

還有一些其他工具可用于基于屬性的測試,例如Foundry。Scribble(以上使用的)、Diligence Fuzzing和Mythril是最值得推薦的幾種工具。Scribble和Diligence Fuzzing是由ConsenSys Diligence構建的免費開源工具。Mythril是一個旨在檢測以太坊智能合約中潛在漏洞的工具。

Scribble這種工具令人喜歡,因為把可這些測試放在一起就像添加函數注釋一樣簡單。

3、后期開發

最后一組工具是后期開發。具體來說,就是監控。

因為大多數區塊鏈上的智能合約代碼是不可變的,一旦代碼被推送到主網,就幾乎無法控制它。監控可以幫助開發人員了解代碼中的任何問題或更改,以便可以快速解決它們。這不僅可以幫助開發人員提高合約的安全性,還可以幫助優化和改進其功能。

OpenZepplin的Defender Sentinels和Tenderly的實時警報工具非常適合監控區塊鏈上合約和錢包。

Tenderly Alerts提供了一組自定義觸發器以供選擇,允許快速設置各種活動的警報,例如部署新合同時、發送或接收事務時以及特定地址時。

Defender Sentinel通過定義的一系列自定義參數提供實時安全監控和警報,例如,如果取款超過特定閾值,如果有人執行關鍵操作(例如調用轉賬所有權),或者如果黑名單地址試圖與合約交互的時候。

4、結論

智能合約安全工具非常重要。希望本文能夠幫助人們了解適合工具,以便編寫更安全的智能合約。

原文鏈接:https://dzone.com/articles/secure-smart-contract-tools-an-end-to-end-develope

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2009-08-27 12:00:40

ibmdwJava

2022-05-16 13:58:52

開發區塊鏈Web3

2009-04-03 10:00:56

2025-02-08 11:02:57

2022-04-20 10:56:06

JavaJVM參數

2021-10-27 10:43:24

開發技能代碼

2020-05-22 22:48:01

GUI Git開發命令行

2022-01-04 19:26:42

開發人員安全性網絡安全

2019-06-03 14:20:30

Java數據庫大數據工具

2020-06-09 07:57:47

前端開發代碼

2012-07-20 10:46:44

Web

2020-05-11 09:54:33

JavaScript開發技術

2018-11-26 09:55:07

MySQL誤刪數據數據庫

2024-10-30 08:19:07

2022-06-06 10:30:23

容器鏡像

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業開發人員提供商

2021-04-05 14:31:33

Java開發Kotlin

2009-11-23 20:07:51

ibmdw開發

2021-02-19 09:33:01

kubernetesJAVA服務
點贊
收藏

51CTO技術棧公眾號

一区精品在线| 国产精品欧美激情| 亚洲一级Av无码毛片久久精品| а√在线天堂官网| 国产天堂亚洲国产碰碰| 91在线直播亚洲| 国产成人无码精品亚洲| 欧美日韩性在线观看| 日韩一区二区三区免费观看| 国产l精品国产亚洲区久久| 天天在线视频色| 成人国产精品免费观看动漫| 国产精品免费小视频| 国产一级二级毛片| 93在线视频精品免费观看| 亚洲国产三级网| 国产精品嫩草影院8vv8| 欧美少妇精品| 亚洲精品免费电影| 亚洲精品成人自拍| 天堂a√中文在线| 国产精品一品视频| 国产精品久久久久久久久久东京| 久青草免费视频| 欧美电影三区| 国产一区二区三区欧美| 日韩www视频| av成人app永久免费| 欧美精品三级日韩久久| av免费中文字幕| 国产精品论坛| 一区二区三区免费网站| 日韩片电影在线免费观看| 天堂在线中文字幕| 成人黄色在线视频| av成人综合网| 国产又粗又猛又色又| 日韩中文字幕一区二区三区| 欧美性受xxxx白人性爽| 国产精品第九页| 国产一区二区中文| 久久中文字幕国产| 欧美大片xxxx| 天天揉久久久久亚洲精品| 亚洲新声在线观看| 国产精品密蕾丝袜| 国产一区二区三区四区大秀| 亚洲欧美制服第一页| 玖玖爱在线观看| 免费成人网www| 亚洲人成绝费网站色www| 亚洲第一成人网站| 九九视频精品全部免费播放| 亚洲美女激情视频| 无码人妻精品一区二区中文| 久久av综合| 国产午夜精品一区二区三区| 四虎永久免费在线观看| 国内亚洲精品| 日韩中文字幕av| 天堂а√在线中文在线鲁大师| 久久理论电影| 麻豆乱码国产一区二区三区| 欧美日韩免费一区二区| 欧美激情视频一区二区三区在线播放| 欧美另类极品videosbestfree| 黄色一级免费视频| 99国产精品| 国产aⅴ夜夜欢一区二区三区| 黄色一级视频免费看| 美国一区二区三区在线播放| 91亚洲永久免费精品| 亚洲成人一级片| 91污片在线观看| 日韩一本精品| 在线电影福利片| 午夜久久福利影院| 欧美激情精品久久久久久小说| 日本在线一区二区| 日韩精品一区二区三区四区视频| 国产又黄又粗又猛又爽的视频 | 日韩免费一区二区三区在线播放| 无码人妻丰满熟妇区毛片蜜桃精品 | 蜜臀av在线| 激情久久av一区av二区av三区| 亚洲精品中文字幕无码蜜桃| 日本精品国产| 精品视频—区二区三区免费| 午夜国产福利视频| 黄色在线一区| 国产成人精品久久二区二区| av老司机久久| 久久久久成人黄色影片| aaa免费在线观看| 中文字幕色婷婷在线视频 | 高h放荡受浪受bl| 国产亚洲视频系列| 久久男人资源站| 青青热久免费精品视频在线18| 日韩久久精品一区| 谁有免费的黄色网址| 红桃视频亚洲| 国产精品亚洲第一区| 欧美自拍第一页| 国产精品成人一区二区艾草| 黄色一级视频片| 亚洲超碰在线观看| 在线观看精品自拍私拍| 日韩激情在线播放| 久久97超碰国产精品超碰| 久久久7777| 亚洲国产精品精华素| 欧美色成人综合| 手机在线成人av| 在线精品小视频| 国产精品第二页| 韩国中文字幕hd久久精品| 国产精品麻豆久久久| 116极品美女午夜一级| 91夜夜蜜桃臀一区二区三区| 爱福利视频一区| 最近日韩免费视频| 久久久亚洲高清| 亚洲国产成人精品无码区99| 一区二区三区视频播放| 久久精品一本久久99精品| 91丨九色丨海角社区| 91亚洲国产成人精品一区二区三 | 日韩精品一区二区亚洲av性色| 日本中文一区二区三区| 看欧美日韩国产| 成人在线黄色电影| 精品剧情v国产在线观看在线| 黄色录像免费观看| 久久超级碰视频| 亚洲美女搞黄| 成人福利片在线| 国产亚洲精品va在线观看| 在线视频一区二区三区四区| 91麻豆免费视频| 亚洲熟女乱色一区二区三区| 噜噜噜狠狠夜夜躁精品仙踪林| 欧美国产亚洲精品久久久8v| av免费在线不卡| 亚洲精品视频在线| 91丨porny丨九色| 一区二区三区国产精华| 新片速递亚洲合集欧美合集| 日韩人在线观看| 国产成人无码一区二区在线观看| 亚洲最黄网站| 久久偷看各类wc女厕嘘嘘偷窃 | 国产精品91久久久久久| 都市激情一区| 欧美日韩国产综合一区二区三区| 精品女人久久久| 国精产品一区一区三区mba视频| 正在播放久久| 亚洲国产精品免费视频| 欧美交受高潮1| 五月婷婷在线播放| 一本一道久久a久久精品| 日本理论中文字幕| 麻豆国产精品官网| 日本xxx免费| 911亚洲精品| 欧美制服第一页| 91福利在线视频| 日韩一区二区高清| 日韩免费av片| 国产视频视频一区| 极品粉嫩美女露脸啪啪| 海角社区69精品视频| 蜜桃麻豆www久久国产精品| 欧洲一区二区三区精品| 久久综合五月天| 日韩中文字幕免费观看| 日本二三区不卡| 日韩在线视频网址| 成人av手机在线观看| 熟妇人妻va精品中文字幕| 久久精品影视| 精品日韩欧美| 伊人久久综合网另类网站| 国语自产精品视频在线看一大j8 | 天天操天天操天天| 在线观看视频一区二区| 精品99久久久久成人网站免费| 久久综合色婷婷| 午夜不卡福利视频| 国产一区成人| 伊人色综合久久天天五月婷| 欧美jizz19性欧美| 国产欧美va欧美va香蕉在| 成人高潮aa毛片免费| 在线观看国产精品日韩av| 亚洲精品久久久蜜桃动漫| 日本韩国欧美一区| 精品在线视频免费| 国产精品免费人成网站| 日本国产在线视频| 麻豆免费精品视频| 欧美牲交a欧美牲交| 亚洲最大黄网| 日韩中文字幕一区| 牛牛影视一区二区三区免费看| 成人亲热视频网站| 日韩欧美一区二区三区在线观看| 欧美高清视频在线观看| av网站在线免费播放| 亚洲精品成人免费| www.亚洲黄色| 欧美人与性动xxxx| 337p粉嫩色噜噜噜大肥臀| 亚洲影视资源网| 欧洲美女女同性互添| 欧美高清在线精品一区| 精品久久久久久中文字幕人妻最新| 国产精品一区久久久久| 国产精品区在线| 久久久久久自在自线| 欧美一级视频免费看| 欧美日韩一区二区国产| 在线国产伦理一区| 成人aaaa| 午夜精品福利一区二区| 你懂的视频欧美| 久久久人人爽| 免费萌白酱国产一区二区三区| 不卡一区二区三区视频| 日韩精品一级| 亚洲自拍在线观看| 亚洲午夜剧场| 成人乱人伦精品视频在线观看| 青青草国产一区二区三区| 国产精品成人av在线| 日韩影片中文字幕| 欧美在线免费看| 午夜av不卡| 久久人人看视频| av在线私库| 欧美一级大胆视频| 波多野结衣亚洲| 日韩免费高清在线观看| 无人区在线高清完整免费版 一区二 | 日本午夜精品一区二区三区| 国产aⅴ精品一区二区三区久久| 蜜桃导航-精品导航| 一区二区三区视频免费观看| 日本一区二区三区www| 精品国产成人| 手机看片福利永久国产日韩| 久久国产电影| 国产人妻互换一区二区| 亚洲夜间福利| 久久久亚洲国产精品| 国产亚洲激情| 久久婷婷国产91天堂综合精品| 麻豆国产欧美日韩综合精品二区| 91日韩精品视频| 国产高清精品久久久久| 中文字幕在线视频播放| 久久综合色之久久综合| 欧美性受xxxx黑人| 亚洲精品国产一区二区精华液| 日韩精品――中文字幕| 色综合久久中文字幕综合网| 中文字幕在线观看1| 日韩午夜在线影院| 五月天婷婷在线播放| 有码中文亚洲精品| 黄色片网站在线| 久久乐国产精品| 欧美日韩激情电影| 亚洲综合av影视| 欧美日韩夜夜| 一卡二卡3卡四卡高清精品视频| 中文字幕午夜精品一区二区三区| 国产69精品久久久久999小说| 日韩国产精品久久| 国产男女无遮挡猛进猛出| 91在线高清观看| 精品国产国产综合精品| 欧美日韩国产色| 国产又大又黑又粗| 日韩精品在线影院| 国产原厂视频在线观看| 国外成人在线视频| 亚洲人成777| 久久99热只有频精品91密拍| 91精品电影| 黑人糟蹋人妻hd中文字幕| 精品亚洲porn| 中文字幕丰满孑伦无码专区| 综合欧美一区二区三区| av大全在线观看| 欧美一级黄色片| 国产色在线 com| 欧美极度另类性三渗透| 男人亚洲天堂| 欧美精品一区在线| 国产一区激情| 五月激情婷婷在线| 久久一区二区视频| 欧美黑吊大战白妞| 欧美日韩视频一区二区| 亚洲 欧美 激情 小说 另类| 久久伊人精品视频| 色综合一本到久久亚洲91| 国产欧美日韩综合一区在线观看 | 欧美 日韩 激情| 国产另类ts人妖一区二区| 国产91丝袜美女在线播放| 午夜婷婷国产麻豆精品| 成人激情四射网| 久久久精品视频成人| 亚洲精品555| 麻豆成人小视频| 亚洲性色视频| 久草免费资源站| 亚洲日本欧美天堂| 亚洲一级在线播放| 亚洲人在线视频| 日韩影院在线| 国产一级特黄a大片99| 欧美日韩调教| 美国黄色一级视频| 亚洲乱码国产乱码精品精的特点| 一区二区的视频| 日韩视频在线一区| av成人免费| 一道精品一区二区三区| 美国毛片一区二区| 亚洲激情图片网| 欧美日韩在线播放三区| 国产h在线观看| 国产精品免费视频久久久| 久久资源中文字幕| 亚洲图色中文字幕| 中文字幕一区不卡| 97人妻精品一区二区三区动漫| 中文字幕自拍vr一区二区三区| 国产精品久久久久久妇女| 日韩高清专区| 美国欧美日韩国产在线播放| 男人的午夜天堂| 日韩一区二区三区四区五区六区| av网站网址在线观看| 91在线短视频| 国产欧美另类| 在线观看国产精品一区| 欧美在线短视频| 欧美成人性生活视频| 亚洲一区久久久| 国内在线观看一区二区三区| 玖玖爱在线精品视频| 岛国av在线不卡| 成年人视频在线免费观看| 91精品国产自产在线| 欧美精品一级| 中文在线一区二区三区| 色婷婷综合激情| 91大神在线网站| av在线亚洲男人的天堂| av成人激情| 黄色片网站在线播放| 日韩一级黄色片| 亚洲天堂手机| 亚洲综合五月天| 床上的激情91.| 香蕉影院在线观看| 深夜福利亚洲导航| 国产香蕉精品| av在线无限看| 一区二区三区欧美亚洲| 色综合成人av| 成人亚洲欧美一区二区三区| 亚洲每日在线| 男人天堂资源网| 亚洲第一精品夜夜躁人人躁| 日韩一区二区三区免费| 色哟哟免费网站| 国产亚洲一区二区在线观看| 国产激情视频在线播放 | 中文字幕天堂在线| 九色精品美女在线| 九九免费精品视频在线观看| 丰满人妻一区二区三区53视频| 黑人巨大精品欧美一区二区| 菠萝蜜视频国产在线播放| 久久久久久国产精品一区| 国产原创一区二区| 国产精品久久久久久人| 欧美成人精品在线观看| 成人羞羞网站| 手机在线成人av| 日韩欧美你懂的| 99久久伊人| 91猫先生在线| 一区二区在线电影|