Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tool support for smart contracts (inc. testing, debugging) #2

Open
monperrus opened this issue Sep 26, 2022 · 61 comments
Open

tool support for smart contracts (inc. testing, debugging) #2

monperrus opened this issue Sep 26, 2022 · 61 comments

Comments

@monperrus
Copy link
Member

monperrus commented Sep 26, 2022

https://ethereum.org/en/developers/docs/smart-contracts/testing/

lots of tools at https://github.com/bkrem/awesome-solidity

@monperrus
Copy link
Member Author

@monperrus
Copy link
Member Author

@monperrus
Copy link
Member Author

monperrus commented Sep 28, 2022

@monperrus
Copy link
Member Author

monperrus commented Oct 12, 2022

@monperrus
Copy link
Member Author

@monperrus
Copy link
Member Author

smock: The Solidity mocking library
https://github.com/defi-wonderland/smock

cc/ @Deee92

@monperrus
Copy link
Member Author

monperrus commented Nov 10, 2022

The foundry toolchain in Rust: https://github.com/foundry-rs/foundry/

Anvil is a local testnet node shipped with Foundry. https://book.getfoundry.sh/anvil/

@monperrus
Copy link
Member Author

Echidna: Ethereum smart contract fuzzer
https://github.com/crytic/echidna

@bbaudry
Copy link
Collaborator

bbaudry commented Nov 16, 2022

Challenges and Common Solutions in Smart Contract Development
http://ieeexplore.ieee.org/document/9555611

@bbaudry
Copy link
Collaborator

bbaudry commented Nov 16, 2022

Pluto: Exposing Vulnerabilities in Inter-Contract Scenarios
http://ieeexplore.ieee.org/document/9562567

@monperrus
Copy link
Member Author

@monperrus
Copy link
Member Author

Not so immutable: Upgradeability of Smart Contracts on Ethereum
https://arxiv.org/pdf/2206.00716.pdf

@monperrus
Copy link
Member Author

How contract migration works Alternative to upgradability mechanism - moving data to a new contract

@bbaudry
Copy link
Collaborator

bbaudry commented Dec 9, 2022

https://smartbugs.github.io/
A Framework for Analysing Ethereum Smart Contracts

@monperrus
Copy link
Member Author

for blockchain automation, Seth is a base for deploy scripts, integration tests, and bots.
https://github.com/crytic/dapptools/tree/master/src/seth

@bbaudry
Copy link
Collaborator

bbaudry commented Dec 15, 2022

Leveraging Architectural Approaches in Web3 Applications -- A DAO Perspective Focused.
http://arxiv.org/abs/2212.05314

@bbaudry
Copy link
Collaborator

bbaudry commented Jan 17, 2023

Inferring Needless Write Memory Accesses on Ethereum Bytecode
https://arxiv.org/pdf/2301.04757

1 similar comment
@monperrus
Copy link
Member Author

Inferring Needless Write Memory Accesses on Ethereum Bytecode
https://arxiv.org/pdf/2301.04757

@monperrus
Copy link
Member Author

@monperrus
Copy link
Member Author

SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in Seconds
https://arxiv.org/abs/2104.08638

@bbaudry
Copy link
Collaborator

bbaudry commented Feb 21, 2023

Large-Scale Empirical Study of Inline Assembly on 7.6 Million Ethereum Smart Contracts
http://ieeexplore.ieee.org/document/9745341

@monperrus
Copy link
Member Author

Security Threat Mitigation For Smart Contracts: A Survey
https://arxiv.org/pdf/2302.07347.pdf

@monperrus
Copy link
Member Author

Test-Case Generation for Data Flow Testing of Smart Contracts Based on Improved Genetic Algorithm
https://ieeexplore.ieee.org/document/9778269

@monperrus
Copy link
Member Author

Invariants in https://github.com/crytic/properties

ERC20 token: mintable, burnable, pausable and transferable invariants (25 properties).
ERC4626 vaults: strict specification and additional security invariants (37 properties).
ABDKMath64x64 fixed-point library invariants (106 properties).

@monperrus
Copy link
Member Author

@monperrus
Copy link
Member Author

Truffle / Ganache / Drizzle: https://github.com/trufflesuite/

@monperrus
Copy link
Member Author

gambit mutation generator for Solidity
https://github.com/Certora/gambit

see usage in https://medium.com/certora/gambit-23ef5cab02f5

cc/ @chandrakananandi

@chandrakananandi
Copy link

gambit mutation generator for Solidity https://github.com/Certora/gambit

see usage in https://medium.com/certora/gambit-23ef5cab02f5

cc/ @chandrakananandi

Thanks @monperrus for posting about gambit! We are really excited about it and actively working on adding more features and improvements too :)

@monperrus
Copy link
Member Author

Brownie: A Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.
https://github.com/eth-brownie/brownie

@monperrus
Copy link
Member Author

Hardhat is a development environment to compile, deploy, test, and debug your Ethereum software (aka buidler)
https://github.com/NomicFoundation/hardhat.

@monperrus
Copy link
Member Author

Embark: Framework for serverless Decentralized Applications using Ethereum, IPFS and other platforms
https://github.com/embarklabs/embark

@monperrus
Copy link
Member Author

Waffle advanced framework for testing smart contracts in Typescript
https://github.com/TrueFiEng/Waffle

@bbaudry
Copy link
Collaborator

bbaudry commented Apr 3, 2023

Super-optimization of Smart Contracts
https://dl.acm.org/doi/full/10.1145/3506800

@monperrus
Copy link
Member Author

Solhint linting utility for Solidity code
https://github.com/protofire/solhint

@bbaudry
Copy link
Collaborator

bbaudry commented Apr 11, 2023

@bbaudry
Copy link
Collaborator

bbaudry commented Apr 18, 2023

injecting faults in the ethereum blockchain
https://ieeexplore.ieee.org/iel7/6287639/8948470/09229414.pdf

@bbaudry
Copy link
Collaborator

bbaudry commented Apr 21, 2023

Towards Saving Blockchain Fees via Secure and Cost-Effective Batching of Smart-Contract Invocations
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10018598

@monperrus
Copy link
Member Author

Surya is an utility tool for smart contract systems. It provides a number of visual outputs and information about the contracts' structure.

https://github.com/ConsenSys/surya

@monperrus
Copy link
Member Author

More mocking
Solidity mocking provider for testing https://github.com/cleanunicorn/mockprovider

@bbaudry
Copy link
Collaborator

bbaudry commented May 16, 2023

SigRec: Automatic Recovery of Function Signatures in Smart Contracts.
http://arxiv.org/abs/2305.07067

@bbaudry
Copy link
Collaborator

bbaudry commented May 24, 2023

Rust WebAssembly smart contract for NEAR with Javascript runtime
https://github.com/petersalomonsen/quickjs-rust-near

@monperrus
Copy link
Member Author

SmartMark: Software Watermarking Scheme for Smart Contracts
https://arxiv.org/abs/2303.13733

@bbaudry
Copy link
Collaborator

bbaudry commented Jun 22, 2023

ReSuMo: a regression strategy and tool for mutation testing of solidity smart contracts
M Barboni, A Morichetta, A Polini, F Casoni. Software Quality Journal

@bbaudry
Copy link
Collaborator

bbaudry commented Jul 11, 2023

Correct-by-Design Interacting Smart Contracts and a Systematic Approach for Verifying ERC20 and ERC721 Contracts With VeriSolid
http://ieeexplore.ieee.org/document/9864250
TDSC 2023

@bbaudry
Copy link
Collaborator

bbaudry commented Aug 21, 2023

Towards Web3 Applications: Easing the Access and Transition.
http://arxiv.org/abs/2210.05903

@bbaudry
Copy link
Collaborator

bbaudry commented Sep 8, 2023

Capturing Smart Contract Design with DCR Graphs.
http://arxiv.org/abs/2305.04581

@mojtaba-eshghie
Copy link
Collaborator

mojtaba-eshghie commented Sep 25, 2023

Solidity mock testing library
https://github.com/defi-wonderland/smock

@Jacarte
Copy link
Member

Jacarte commented Oct 2, 2023

@Jacarte
Copy link
Member

Jacarte commented Oct 2, 2023

@monperrus monperrus changed the title tool support for smart contracts (inc. testing, debugging, analysis) tool support for smart contracts (inc. testing, debugging) Oct 19, 2023
@monperrus
Copy link
Member Author

SolAR: Automated Test-Suite Generation for Solidity Smart Contracts
https://www.sciencedirect.com/science/article/pii/S0167642323001181?dgcid=rss_sd_all

@bbaudry
Copy link
Collaborator

bbaudry commented Nov 22, 2023

Automatic Smart Contract Comment Generation via Large Language Models and In-Context Learning.
http://arxiv.org/abs/2311.10388

@Jacarte
Copy link
Member

Jacarte commented Dec 5, 2023

Cloudflare Web3 gateways, https://www.cloudflare.com/application-services/products/web3/

@bbaudry
Copy link
Collaborator

bbaudry commented Dec 15, 2023

Gas Cost Analysis of Proxy and Diamond Patterns: Towards Trusted Smart Contract Engineering in EVM Blockchains.
http://arxiv.org/abs/2312.08945

@bbaudry
Copy link
Collaborator

bbaudry commented Dec 19, 2023

Syntax-Aware Mutation for Testing the Solidity Compiler
https://dimitro.gr/assets/papers/MSIM23.pdf

@bbaudry
Copy link
Collaborator

bbaudry commented Jan 5, 2024

Automated Invariant Generation for Solidity Smart Contracts.
http://arxiv.org/abs/2401.00650

@monperrus
Copy link
Member Author

A tool to automatically generate Foundry unit test cases from Echidna and Medusa failed properties
https://github.com/crytic/fuzz-utils

@bbaudry
Copy link
Collaborator

bbaudry commented May 9, 2024

Static Application Security Testing (SAST) Tools for Smart Contracts: How Far Are We?
https://arxiv.org/abs/2404.18186

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants