- Introduction
- Summary
- 1. Critical
- 1.1. Use appropriate origin checks
- 1.2. Avoid unbounded iteration
- 1.3. Unchecked input parameters
- 1.4. Avoid unwrap usage inside runtime
- 1.5. Use benchmarking for accurate dynamic weights
- 1.6. Prioritize reserve asset transfer over teleport
- 2. High Severity
- 2.1. Benchmark extrinsic worst-case scenario
- 2.2. Keep dependencies up to date
- 2.3. Avoid the usage of pseudo random numbers
- 2.4. Use safe arithmetic operations
- 2.5. Be careful with storage growth
- 2.6. Prevent inconsistent state by distributing state commitment costs
- 2.7. Use atomic operations to prevent state inconsistencies
- 2.8. Avoid redundant storage access in mutations
- 2.9. Prevent unnecessary reads and writes in storage access
- 2.10. Implement try-state Hook
- 2.11. Properly setup XCM Barrier
- 2.12. Ensure consistent asset registration by adhering to host chain schema
- 2.13. Make proper usage of XCM Junctions
- 3. Medium Severity
- 3.1. Remove deprecated storage getters
- 3.2. Avoid hardcoded parameters and values
- 3.3. Include tests for edge cases
- 3.4. Include extrinsic documentation
- 3.5. Include error documentation
- 3.6. Provide event documentation
- 3.7. Provide pallet configuration documentation
- 3.8. Modularize large files
- 3.9. Break down complex functions
- 3.10. Enhance performance with efficient data structures
- 3.11. Define constants to replace magic numbers
- 3.12. Implement Proper Interface Segregation
- 3.13. Make BoundedVec size configurable
- 3.14. Enhance logging in migration scripts
- 3.15. Avoid redundant data structures
- 3.16. Implement tests for all error cases
- 3.17. Avoid resource intensive execution inside hooks
- 3.18. Transition away from Currency trait
- 3.19. Avoid unrestricted XCM execution
- 3.20. Implement proper XCM fee management
- 4. Low Severity
- 4.1. Use appropriate naming conventions
- 4.2. Avoid unnecessary cloning
- 4.3. Avoid hardcoded error messages
- 4.4. Adopt enumerations for optional input
- 4.5. Implement descriptive logging
- 4.6. Remove unnecessary return values
- 4.7. Avoid repetitive generic type instantiation
- 4.8. Update benchmarks with latest syntax
- 4.9. Expose runtime APIs for key functionalities
- 4.10. Remove unused code
- 5. Informational
- 5.1. Maintain consistent documentation standards
- 5.2. Avoid typographical errors
- 5.3. Make backend logic Frontend-Agnostic
- 5.4. Use proper naming criteria