-
Notifications
You must be signed in to change notification settings - Fork 8
Libraries
This document provides a detailed overview of the internal and external libraries used in the Nexus Protocol. Each library is chosen for its specific advantages in terms of security, gas optimization, and functionality. Below are the descriptions and purposes of these libraries.
Purpose: This library provides utility functions to create and manage BootstrapConfig
structures, which are used to initialize and configure smart contracts.
Advantages:
- Efficient Initialization: Simplifies the process of setting up contracts with multiple modules.
- Structured Configurations: Ensures consistent initialization across various contracts.
Important
Ensures that all modules are correctly initialized, which is crucial for maintaining the integrity and functionality of the smart contracts.
Purpose: Handles operations related to bytes data, such as slicing.
Advantages:
- Precision: Allows precise manipulation of byte arrays, essential for low-level operations.
- Error Handling: Includes checks to prevent out-of-range errors, ensuring robustness.
Note
Essential for contracts that require fine-grained control over byte data.
Purpose: Helps in decoding and encoding execution calldata for smart contract operations.
Advantages:
- Gas Optimization: Uses assembly code to minimize gas costs.
- Versatility: Supports both single and batch execution formats.
Tip
Utilizing assembly for memory allocation is more gas-efficient compared to higher-level abstractions.
Purpose: Encodes and decodes execution modes for smart contracts, allowing for various execution behaviors.
Advantages:
- Flexible Execution: Supports different execution modes like single, batch, and delegate call.
- Custom Modes: Enables the development of custom execution behaviors without requiring changes to the base contract.
Warning
Implementing delegate calls must be done with extreme care to avoid security risks.
Purpose: Handles the encoding and checking of module types.
Advantages:
- Bit Encoding: Efficiently encodes module types into a single bitmask, optimizing storage and retrieval.
- Compatibility: Ensures module types are consistently handled across different contracts.
Caution
Ensure that module types are correctly encoded and checked to maintain contract integrity.
Purpose: Manages the installation and initialization of modules in Nexus smart accounts.
Advantages:
- Modular Initialization: Allows for flexible and modular setup of smart accounts with various validators, executors, hooks, and fallback handlers.
- Delegate Call Usage: Uses delegate calls to initialize modules, ensuring that the setup is done in the context of the calling contract.
Note
Provides detailed initialization options to cater to different use cases and requirements.
Usage in Nexus Protocol: We use OpenZeppelin Contracts for testing and creating mocks.
Advantages:
- Security: Extensively audited and widely trusted in the Ethereum community.
- Flexibility: Modular and reusable components for various functionalities.
Security: OpenZeppelin is renowned for its security practices, including regular audits and a comprehensive bug bounty program.
Links:
Important
Using OpenZeppelin ensures that our contracts adhere to the highest security standards.
Usage in Nexus Protocol: Enhances the modularity of our smart contract system, allowing for better organization and flexibility.
Advantages:
- Modularity: Facilitates the development and management of modular smart contracts.
Security: Designed for secure and modular smart contract development.
Links:
Note
ModuleKit is integral for maintaining a modular structure in our smart contract system.
Usage in Nexus Protocol: Supports account abstraction features, enabling flexible user operations and custom account logic.
Advantages:
- User Operations: Facilitates complex operations and custom account management.
- Integration: Seamlessly integrates with the Ethereum infrastructure.
Security: Maintains secure user operations and account management.
Links:
Warning
Proper implementation is critical to leverage account abstraction features securely.
Usage in Nexus Protocol: Utilized for its gas-optimized implementations of common operations and cryptographic functions.
Advantages:
- Gas Efficiency: Provides optimized code for lower gas consumption.
- Security: Secure implementations of cryptographic operations.
Security: Focuses on gas optimization while ensuring secure operations.
Links:
Important
Solady's gas-efficient solutions help us reduce transaction costs while maintaining security.
Usage in Nexus Protocol: Implements sentinel lists for efficient list operations, crucial for managing contract states.
Advantages:
- Efficiency: Provides an efficient data structure for managing lists.
Security: Designed for efficient and secure list management.
Links:
Note
SentinelList ensures efficient and secure management of list data in our contracts.
Usage in Nexus Protocol: Foundry is employed for testing smart contracts due to its speed and robust features for fuzz testing and unit testing.
Advantages:
- Speed: Enables rapid execution of tests.
- Comprehensive Testing: Supports various testing methodologies, ensuring contract reliability.
Security: Ensures robust smart contract behavior through advanced testing capabilities.
Links:
Tip
Foundry's comprehensive testing framework helps us maintain high code quality and security.
Usage in Nexus Protocol: A minimalistic testing framework used for its simplicity and effectiveness in testing Solidity contracts.
Advantages:
- Minimalist: Lightweight and easy to integrate.
- Focused: Specifically designed for Solidity, ensuring compatibility and ease of use.
Security: Ensures reliable testing of Solidity contracts.
Links:
Tip
DS-Test's simplicity makes it a valuable tool for testing Solidity contracts efficiently.
- Home
- Nexus Architecture
- Access Control
- Execution Framework
- Modules
- Factories
- Migration Guide
- Testing Documentation
- Configuration and Security
- Libraries
- FAQ
- Biconomy Solidity Style Guide
- Security Considerations
- Team
-
Contracts
- Nexus
- Base
- Common
- Factory
- AbstractNexusFactory
- BiconomyMetaFactory
- K1ValidatorFactory
- ModuleWhitelistFactory
- NexusAccountFactory
- Modules
- Utils