Technical Deep dive
contracts
Detailed Explanation of Aptos Smart Contracts
Overview
The Aptos smart contracts consist of three main modules: User Registration, Random Number Generation, and Aggregation. Each module is designed to support different functionalities in the federated learning architecture.
1. User Registration Module
Structure
The module imports necessary libraries and defines dependencies like signer management and string handling.
User Registry Resource
UserRegistry: A struct that holds user registration information, specifically a user ID, and is stored as a resource with a unique key.
Events
UserRegistrationEvent: An event that is emitted when a user registers or updates their information, containing the account address and the old and new user IDs.
Entry Functions
register_user: The primary function for user registration. It checks if a user is already registered and either creates a new entry or updates an existing one. It also emits a registration event upon updates.
View Functions
get_user_id: Allows querying of a registered user ID by address, asserting that a user is registered.
2. Random Number Generation Module
Structure
This module imports the randomness framework and other standard libraries.
Random Value Resource
RandomValueStore: Holds the generated random value for each user, linking it to the user's address.
Events
RandomValueGenerated: An event emitted when a new random value is generated, capturing the associated account and value.
Entry Functions
generate_random_value: Generates a random byte vector for a user, emits an event, and stores the value in a user-specific resource.
View Functions
get_random_value: Retrieves the random value generated for a user, ensuring that it exists in the store.
3. Aggregation Module
Structure
The module focuses on handling encrypted data and performing aggregation functions.
Parameter Initialization
Params: Stores the parameters needed for the aggregation and commitment process.
Encrypted Data Storage
EncryptedValueStore: Stores encrypted values submitted by users for aggregation.
Entry Functions
initialize: Sets up the necessary parameters for the aggregation process, enabling contract configuration.
add_encrypted_value: Accepts an encrypted value from a user, storing it in the
EncryptedValueStore
.
multiply_encrypted_values: Placeholder for multiplying encrypted values (specific implementation details need further development).
decrypt: Placeholder for the decryption process of aggregated encrypted values, requiring implementation of the decryption logic.
Last updated