3.2.2 Code Simplicity and Clarity
In smart contract development, clarity and simplicity are paramount. Here’s how you can achieve this:
- Minimize On-Chain Code: If it can be done off-chain, do it. Keep the on-chain code minimal to reduce the attack surface.
- Funnel External Access: Limit the number of externally accessible functions. Bare minimum is the right amount.
- Don’t Inherit if you don’t have to: Inheritance can make code harder to follow and ex. Only use it when necessary.
- Reduce the number of Storage Variables: The more storage variables you have the greater the chance for exploitation.
- For Loops increase risk: For loops can be dangerous in Smart Contracts. They can be used to drain gas, Memory variables can lead to quadratic cost increases and hit gas limits, and can be for DOS attacks.
- Write Readable Code: If you can read it than it is less likely to hide vulnerabilities. Don’t make it a puzzle for others to solve.
- Document Thoroughly: Good documentation isn’t just for others; it helps you understand your own code better, especially when revisiting it after some time.
- Refactor When Necessary: Don’t hesitate to refactor code for clarity. This can often reveal overlooked issues.
Remember, simple code is more secure, easier to audit, and maintainable in the long run.