内容简介:TL;DR:We have improved Echidna with tons of new features and enhancements since it was released—and there’s more to come.Two years ago, we open-sourcedWe expanded the capabilities of Echidna with a large set of exciting new features. Some of the most impor
TL;DR:We have improved Echidna with tons of new features and enhancements since it was released—and there’s more to come.
Two years ago, we open-sourced Echidna , our property-based smart contract fuzzer. Echidna is one of the tools we use most in smart contract assessments. According toour records, Echidna was used in about 35% of our smart contract audits during the past two years. These include several high-profile audits such as MakerDAO , 0x , and Balancer . Since the first release of Echidna, we have been adding new features as well as fixing bugs. Here’s a quick look at what we’ve done.
New features
We expanded the capabilities of Echidna with a large set of exciting new features. Some of the most important ones are:
Support for several compilation frameworks using crytic-compile:Integration with crytic-compile allowed Echidna to test complex Truffle projects , and even smart contracts in other languages, such as Vyper , right out of the box. It is completely transparent for the user (if you are an Echidna user, you are already using it!) and it was one of the most important features we implemented in Echidna last year.
Assertion testing: Solidity’s assert can be used as an alternative to explicit Echidna properties, especially if the conditions you’re checking are directly related to the correct use of some complex code deep inside a function. Assertion testing also lets you check for implicit asserts inserted by the compiler, such as out-of-bounds array accesses without an explicit property. Add checkAsserts: true
in your Echidna configuration file and it will take care of the rest.
An assertion failure is discovered in Vera’s MakerDAO example
Restrict the functions to call during a fuzzing campaign:Not all functions in a smart contract are created equal. Some of them are not useful during property-based testing and will only slow down the campaign. That’s why Echidna can either blacklist or whitelist functions to call during a fuzzing campaign. Here’s an Echidna configuration that avoids “f1” and “f2” methods during a fuzzing campaign:
filterBlacklist: true # or use false for whitelisting filterFunctions: ["f1", "f2"]
Save and load the corpus collected during a fuzzing campaign:If coverage support is enabled, Echidna can load and save the complete corpus collected in JSON. If a corpus is available at the beginning of a fuzzing campaign, Echidna will use it immediately. This means that Echidna will not start from scratch, which is particularly useful during CI tests to speed up the verification of complex properties. Add coverage: true
and corpusDir: "corpus"
to your Echidna configuration and create a “corpus” directory to save the inputs generated by Echidna.
Pretty-printed example of a transaction from a corpus.
Detect transactions with high-gas consumption:Excessive gas usage can be a pain for developers and users of smart contracts. There are few tools available for detecting transactions with large gas consumption, especially if detecting the transaction requires reaching unusual states of the contract via other transactions. Recently Echidna added support to detect this kind of issue. Use estimateGas: true
in your Echidna configuration to report high-gas transactions to your console.
Discovery of a transaction consuming a large amount of gas
Extended testing of complex contracts:Echidna also improved the testing of complex contracts with two cool features. First, it allows initializing a fuzzing campaign with arbitrary transactions using Etheno . Second, it can test more than one contract at the same time, calling any public or external function of any tested contract. Use multi-abi: true
in your Echidna configuration to test more than one contract at the same time.
Keeping up to date with the latest research
We are following the latest developments in smart contract fuzzing papers to make sure Echidna is up to date. Our researchers compare open-source fuzzers to Echidna, and integrate any new approach that proves to be effective for finding faults or generating more interesting inputs. In fact, from time to time, we test examples presented in research papers to make sure Echidna can solve them very efficiently! We also regularly attend conferences to discuss novel fuzzing techniques , and even financially support new research papers that improve our tools .
Echidna solves the example presented in Harvey’s paper
Looking forward
And we’re not taking a break! In fact, we have a pipeline of improvements and new features coming to Echidna in the near future, including enhanced coverage feedback , array generation and corpus mutations , and Slither integration . We are also excited to share that we have added Echidna support to crytic.io , our continuous assurance platform for smart contracts.
Echidna integration for automatic assertion checking in crytic.io
In summary
In two years, Echidna has evolved from an experimental tool into an essential resource for fuzzing smart contracts and identifying correctness/security issues. We continue to push the limits of what is possible by fuzzing smart contracts, and keep our open-source tools updated for community use. Learn more about testing your smart contracts with Echidna in our Building Secure Contracts training.
Do you have smart contracts to test with Echidna? Are you interested in reviewing your Echidna scripts or training on how to use it effectively?Drop us a line! Trail of Bits has years of experience in performing smart contract security assessments, addressing everything from minimalistic tokens to complex staking and voting platforms.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Convergence Culture
Henry Jenkins / NYU Press / 2006-08-01 / USD 30.00
"Convergence Culture" maps a new territory: where old and new media intersect, where grassroots and corporate media collide, where the power of the media producer, and the power of the consumer intera......一起来看看 《Convergence Culture》 这本书的介绍吧!