精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产日韩欧美综合久久| 一区二区三区蜜桃网| 国产精品日日做人人爱| 男人天堂资源网| 日本一区影院| 一本一道综合狠狠老| 五月天色一区| 刘玥91精选国产在线观看| 久久久久国产精品午夜一区| 久久成年人免费电影| 亚洲精品在线视频免费观看| 久久亚洲精品人成综合网| 亚洲成人av中文| 亚洲在线不卡| 秋霞av在线| 国产一区二区视频在线播放| 青草青草久热精品视频在线网站| 精品国产精品国产精品| 国产成人一区| 亚洲国产精品成人av| 亚洲妇熟xx妇色黄蜜桃| 超碰超碰人人人人精品| 一区二区三区91| 亚洲一区二区三区加勒比| 五月天婷婷激情网| 国产精品一区二区91| 国产精品久久久av久久久| 日韩福利片在线观看| 91精品电影| 日韩在线观看你懂的| 亚洲av片不卡无码久久| 成午夜精品一区二区三区软件| 欧美人狂配大交3d怪物一区| 欧美日韩一区二区在线免费观看| 久久99亚洲网美利坚合众国| 亚洲欧洲三级电影| 日本一区二区高清视频| 亚州视频一区二区三区| 福利电影一区二区| 成人免费在线网址| 亚洲天堂久久久久| 蜜桃一区二区三区四区| 日本高清视频一区| 国产99久久久| 国产精品久久久亚洲一区| 欧美激情一区二区三区成人 | 亚洲三级网址| 亚洲第五色综合网| 韩国av中国字幕| 亚洲精品一区国产| 日韩视频在线你懂得| 天天做天天干天天操| 91久久青草| 7777精品伊人久久久大香线蕉最新版| 国产又黄又猛又粗又爽的视频| 日韩成人动漫| 欧美自拍丝袜亚洲| 国产一区二区在线免费播放| 999国产精品亚洲77777| 欧美丝袜丝nylons| 永久免费的av网站| 精品国产乱码久久久久久樱花| 91精品国产aⅴ一区二区| 91亚洲一区二区| 日本在线视频一区二区三区| 日韩精品一区二区三区在线播放| 一级全黄裸体片| 国产成人精品亚洲线观看| 亚洲成色777777女色窝| 超碰97人人干| 成人免费av| 久久视频在线看| 久久国产精品波多野结衣| 亚洲调教视频在线观看| 国产91精品久久久| 国产免费www| 国产麻豆成人精品| 国产一区二区三区高清| 四虎影院在线播放| 国产精品免费观看视频| 久久久无码中文字幕久...| 俺来俺也去www色在线观看| 精品日本高清在线播放| 国产小视频精品| 色妞ww精品视频7777| 亚洲国产成人精品女人久久久| 国产熟妇搡bbbb搡bbbb| 手机在线电影一区| 欧美国产日韩中文字幕在线| 成年人视频在线免费看| 另类调教123区| 国产免费一区| 色综合久久久久综合一本到桃花网| 亚洲免费在线播放| 国产精品视频网站在线观看| 写真福利精品福利在线观看| 欧美一区二区黄| 亚洲人人夜夜澡人人爽| 天天做综合网| 欧美一级大片视频| 国产理论视频在线观看| av高清久久久| 在线视频欧美一区| 高潮在线视频| 制服丝袜亚洲色图| 丝袜美腿中文字幕| 欧美激情第8页| 国产成人综合精品在线| 懂色av一区二区三区四区 | 日本精品人妻无码77777| 亚洲一区国产| 91成人理论电影| chinese偷拍一区二区三区| 亚洲午夜免费视频| 免费涩涩18网站入口| 久本草在线中文字幕亚洲| 久久精彩免费视频| 无码人妻精品一区二区| 成人一区二区在线观看| 亚洲一区二区三区色| 性爽视频在线| 精品国产乱子伦一区| 久久人妻无码aⅴ毛片a片app | 国产成人黄色av| 亚洲免费成人网| 最好看的中文字幕久久| 日本熟妇人妻中出| 老司机精品视频在线播放| 久久艹在线视频| 国产精品九九九九| 中文文精品字幕一区二区| 日本网站免费在线观看| 国产精品毛片av| 欧美大荫蒂xxx| 国产成人精品一区二区无码呦 | 国产成人免费在线| 中文字幕99| 久久亚洲国产精品尤物| 中文字幕日韩欧美| 波多野结衣av无码| 久久久亚洲欧洲日产国码αv| 和岳每晚弄的高潮嗷嗷叫视频| 精品国产亚洲一区二区三区在线| 日韩亚洲在线观看| 亚洲视屏在线观看| 中文字幕第一页久久| 欧美成人黄色网址| 日韩精品久久| 国产综合香蕉五月婷在线| av免费在线一区二区三区| 91黄色免费看| 天堂av网手机版| 久久国产精品免费| 最新av在线免费观看| 国产精品一区二区三区四区在线观看| 日韩在线视频中文字幕| 一级二级三级视频| 亚洲欧美另类小说| 国产精品99精品无码视亚| 欧美日韩日本国产亚洲在线 | 亚洲一区二区三区四区在线免费观看 | 91蜜桃视频在线| 国产综合免费视频| 成人婷婷网色偷偷亚洲男人的天堂| 国产精品国产三级国产aⅴ浪潮| 成人福利在线| 7777精品伊人久久久大香线蕉| 成人做爰69片免网站| 久久草av在线| 国内少妇毛片视频| 天天躁日日躁狠狠躁欧美| 日本午夜人人精品| 午夜视频在线看| 欧美一级黄色大片| 久久露脸国语精品国产91| 久久久久九九视频| www.色偷偷.com| 91tv官网精品成人亚洲| 国产一区二区三区四区hd| 东京一区二区| 久久久精品在线| 日韩有码第一页| 色天使色偷偷av一区二区| 性色国产成人久久久精品| 国产高清久久久| 白嫩少妇丰满一区二区| 久久精品国内一区二区三区水蜜桃 | 国产精品久久久久久免费免熟| 亚洲色图制服诱惑| 成人手机在线免费视频| 精品在线播放免费| 欧美 日韩 国产在线观看| 91亚洲国产成人久久精品| 国产欧美欧洲| 欧美视频在线视频精品| 久久久亚洲影院| 一级日本在线| 亚洲国产欧美一区二区三区同亚洲 | 亚洲精品美女在线| 亚洲综合精品视频| 午夜精品一区在线观看| 国产亚洲精品久久久久久豆腐| 成人免费黄色在线| 自拍偷拍一区二区三区四区 | 亚洲欧美视频二区| 在线观看亚洲| 日本成人性视频| 丝袜美腿一区二区三区动态图| 91色p视频在线| 欧美日韩精品免费观看视完整| 欧美国产亚洲视频| 欧美日韩在线资源| 亚洲视频欧美视频| 欧美 日韩 综合| 91精品国产麻豆国产自产在线 | 久久久久久久久久网站| 国产亚洲综合色| 97精品人妻一区二区三区蜜桃| 极品少妇一区二区| 992kp快乐看片永久免费网址| 亚洲无毛电影| 日韩精品第1页| 色综合天天爱| 日韩精品国内| 美日韩中文字幕| 精品国产福利| youjizzjizz亚洲| 成人毛片网站| 136国产福利精品导航网址应用| 成人在线视频福利| 玖玖精品在线| 国产精品欧美日韩一区二区| 欧美大片免费观看网址| 欧美影院在线播放| 三级在线观看视频| 9.1国产丝袜在线观看| 激情网站在线| 久久久久五月天| 6699嫩草久久久精品影院| 久久99久久久久久久噜噜| 国产1区在线| 久久国产精品偷| 97caopron在线视频| 欧美成人午夜影院| 中中文字幕av在线| 欧美黄色性视频| av最新在线| 57pao精品| 午夜欧美巨大性欧美巨大| 国产精品678| 99久久亚洲国产日韩美女| 国产精品免费久久久久影院| 99精品国自产在线| 91最新在线免费观看| 久久综合给合| 国产传媒欧美日韩| 天堂在线精品| 日韩免费毛片| 希岛爱理av一区二区三区| 欧美a级黄色大片| 亚洲精品影视| mm1313亚洲国产精品无码试看| 蜜臀av一区二区在线观看| 99日在线视频| 顶级嫩模精品视频在线看| 特级西西人体wwwww| 国产午夜精品一区二区三区视频 | 亚洲精品久久久久久国产精华液| 超碰手机在线观看| 午夜激情久久久| 久久久久久无码精品大片| 7878成人国产在线观看| 好男人www在线视频| 日韩精品视频免费专区在线播放| 国产中文字幕在线| 久久资源免费视频| 国产福利片在线观看| 国产精品国语对白| 欧美午夜网站| 日韩av电影免费在线| 91精品99| 青青草原av在线播放| 国内成人免费视频| 麻豆国产精品一区| 亚洲欧洲国产日本综合| 日本熟妇毛耸耸xxxxxx| 日韩欧美成人精品| 国产三级精品在线观看| 精品无码久久久久久国产| 色网站免费在线观看| 午夜精品久久久久久99热软件| 97久久网站| 国产视频99| 亚洲国产一成人久久精品| 91猫先生在线| 国产在线国偷精品产拍免费yy | 国产精品一区二区99| 国产一二三四五| 日韩电影在线一区| 白嫩情侣偷拍呻吟刺激| 亚洲婷婷国产精品电影人久久| 国产成人免费观看视频| 欧美一区二区三区免费观看视频| 可以免费看污视频的网站在线| 欧美丰满片xxx777| 久久精品97| 欧美在线一二三区| 伊人天天综合| 日韩欧美中文视频| 欧美国产精品一区二区| 久草视频在线观| 欧美成人性福生活免费看| 日本中文字幕电影在线免费观看| 欧美亚洲成人免费| 北条麻妃在线一区二区免费播放| 一区二区三区在线视频111| 久久精品官网| 中文字幕乱码在线| 亚洲美女屁股眼交3| 亚洲综合精品在线| 一色桃子一区二区| 高清不卡亚洲| 久久资源亚洲| 99综合精品| 欧产日产国产精品98| 一区二区三区欧美| 国产成人精品a视频| 久久九九亚洲综合| 欧美亚洲综合视频| 亚洲一区二区不卡视频| 日本三级亚洲精品| 微拍福利一区二区| 91激情在线视频| 国产人成在线观看| 国产精品久久久久久久久久久久久| 亚洲欧洲免费| 国产亚洲天堂网| 久久久一区二区三区捆绑**| 中文字幕在线欧美| 精品无人区太爽高潮在线播放| аⅴ资源天堂资源库在线| 国产精品一区二区三区在线观| 好看的亚洲午夜视频在线| www日本在线观看| 亚洲国产精品久久人人爱蜜臀| 亚洲黄色在线播放| 欧美激情在线观看| 欧美福利在线播放网址导航| 日本a视频在线观看| 92国产精品观看| 无码人妻av一区二区三区波多野| 国产一区二区动漫| 久久精品97| 成人短视频在线观看免费| 国产成人99久久亚洲综合精品| 久久精品99国产精| 亚洲激情中文字幕| 黄色成人免费网| 亚洲激情电影在线| 国产在线不卡一区| 国产小视频在线看| 亚洲精品一区久久久久久| 国产经典一区| 艳母动漫在线观看| 成人毛片老司机大片| 久久久久亚洲av成人毛片韩| 中文字幕日韩精品有码视频| 欧美h版在线观看| 成人毛片一区二区| 国产色产综合色产在线视频| 亚洲天堂男人网| 精品中文字幕在线2019| 欧美大片网址| 久热精品在线播放| 亚洲午夜av在线| аⅴ资源新版在线天堂| 成人写真福利网| 夜夜嗨一区二区三区| 欧美极品jizzhd欧美18| 欧美mv日韩mv国产网站| 欧美www.| 欧美图片激情小说| 亚洲国产精品黑人久久久| 精品人妻一区二区三区三区四区 | 久久久久久av无码免费看大片| 久久深夜福利免费观看| 欧美大胆a级| 亚洲天堂网站在线| 色天使久久综合网天天| 综合图区亚洲| 亚洲 国产 日韩 综合一区| 国产99久久精品| 伊人网站在线观看| 国内精品久久久久久中文字幕| 成人综合一区| 午夜男人的天堂| 91精品婷婷国产综合久久竹菊| 国产拍在线视频| 男女激烈动态图| 久久久久久久久久久黄色|