You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi developers! I have been working on developing a random Solidity program generator, named Erwin, for a while, and it's almost done. This work is inspired by both a Solidity compiler bug study and the community's previous effort on using libprotobuf-mutator to generate test cases.
Erwin complies with Solidity's grammar and can thus generate valid test programs. Besides, Erwin can generate diverse test programs by tuning exposed flags to adjust the probability table. With these two features, Erwin's generated programs can pass the front-end parsing and go deep into the optimization and codegen components and uncover hidden bugs.
Erwin has found more than 20 bugs in both Solidity compilers and Slither, and it's still on the way to find more!
Until now, Erwin can generate complicated Solidity programs, including basic types, arrays, mappings, structs, and functions, and it can explore the interplay of various types, visibilities, and state mutabilities. It's still under development, and I plan to add contract inheritance and bytes to it. Supporting inline assembly is also on the schedule.
You can find the doc here, and the published npm package here
Just let me know if you are interested in this project and I'd like to help to enable Erwin in CI/CD.
Below is an example generated by Erwin. Welcome to play with Erwin!
Hi developers! I have been working on developing a random Solidity program generator, named Erwin, for a while, and it's almost done. This work is inspired by both a Solidity compiler bug study and the community's previous effort on using libprotobuf-mutator to generate test cases.
Erwin complies with Solidity's grammar and can thus generate valid test programs. Besides, Erwin can generate diverse test programs by tuning exposed flags to adjust the probability table. With these two features, Erwin's generated programs can pass the front-end parsing and go deep into the optimization and codegen components and uncover hidden bugs.
Erwin has found more than 20 bugs in both Solidity compilers and Slither, and it's still on the way to find more!
Until now, Erwin can generate complicated Solidity programs, including basic types, arrays, mappings, structs, and functions, and it can explore the interplay of various types, visibilities, and state mutabilities. It's still under development, and I plan to add contract inheritance and bytes to it. Supporting inline assembly is also on the schedule.
You can find the doc here, and the published npm package here
Just let me know if you are interested in this project and I'd like to help to enable Erwin in CI/CD.
Below is an example generated by Erwin. Welcome to play with Erwin!
The text was updated successfully, but these errors were encountered: