1. Introduction
  2. Summary
  3. Critical
    1. Use appropriate origin checks
    2. Avoid unbounded iteration
    3. Unchecked input parameters
    4. Avoid unwrap usage inside runtime
    5. Use benchmarking for accurate dynamic weights
    6. Prioritize reserve asset transfer over teleport
  4. High Severity
    1. Benchmark extrinsic worst-case scenario
    2. Keep dependencies up to date
    3. Avoid the usage of pseudo random numbers
    4. Use safe arithmetic operations
    5. Be careful with storage growth
    6. Prevent inconsistent state by distributing state commitment costs
    7. Use atomic operations to prevent state inconsistencies
    8. Avoid redundant storage access in mutations
    9. Prevent unnecessary reads and writes in storage access
    10. Implement try-state Hook
    11. Properly setup XCM Barrier
    12. Ensure consistent asset registration by adhering to host chain schema
    13. Make proper usage of XCM Junctions
  5. Medium Severity
    1. Remove deprecated storage getters
    2. Avoid hardcoded parameters and values
    3. Include tests for edge cases
    4. Include extrinsic documentation
    5. Include error documentation
    6. Provide event documentation
    7. Provide pallet configuration documentation
    8. Modularize large files
    9. Break down complex functions
    10. Enhance performance with efficient data structures
    11. Define constants to replace magic numbers
    12. Implement Proper Interface Segregation
    13. Make BoundedVec size configurable
    14. Enhance logging in migration scripts
    15. Avoid redundant data structures
    16. Implement tests for all error cases
    17. Avoid resource intensive execution inside hooks
    18. Transition away from Currency trait
    19. Avoid unrestricted XCM execution
    20. Implement proper XCM fee management
  6. Low Severity
    1. Use appropriate naming conventions
    2. Avoid unnecessary cloning
    3. Avoid hardcoded error messages
    4. Adopt enumerations for optional input
    5. Implement descriptive logging
    6. Remove unnecessary return values
    7. Avoid repetitive generic type instantiation
    8. Update benchmarks with latest syntax
    9. Expose runtime APIs for key functionalities
    10. Remove unused code
  7. Informational
    1. Maintain consistent documentation standards
    2. Avoid typographical errors
    3. Make backend logic Frontend-Agnostic
    4. Use proper naming criteria