Smart Contracts Deep-dive

This page gives detailed explanation of FL Alliance's smart contracts.

FL Alliance Smart Contract Interactions.

Core Contracts

FlockTaskManager.sol

Role: Factory and lifecycle controller for all FlockTask instances.

  • Task Creation: Deploys new FlockTask contracts, passing in initial parameters like _totalNumberOfRounds, _minStakeThreshold, _initialRewardPoolSize, etc.

  • Task Management: Maintains a list (via EnumerableSet) of active or unfinished FlockTask addresses.

  • Finish Task: The owner can mark a task as finished if necessary (finishTask(...)), removing it from the active set.

FlockTask.sol

Role: This contract implements a decentralized and scalable model for round-based federated learning (“FL tasks”).

  • Staking & Roles: Participants stake tokens to become eligible to join rounds, where they are randomly assigned roles (proposers, voters).

  • Proposal & Voting Rounds: Each round, selected proposers submit model updates, and voters commit/reveal votes that determine the most popular model via stake-weighted voting.

  • Rewards & Slashing: Well-behaved participants (correct contributions/votes) receive rewards; dishonest behaviors can be “slashed,” losing a percentage of their stake.

Libraries

LibABDKMathQuad.sol

Role: Quadruple-precision (128-bit) math operations.

  • Implements IEEE 754–style floating-point arithmetic for bytes16 values.

  • Provides precision far beyond typical fixed-point or 256-bit integer math.

  • Useful for advanced computations like logarithms, exponentials, or rational approximations.

LibFlockTask.sol

Role: Provides specialized numeric and utility functions for federated-learning tasks. Key Functions include:

  • mulDiv(uint256 x, uint256 y, uint256 z)

    • Combines multiplication and division with quadruple precision by leveraging LibABDKMathQuad.

  • rand()

    • Generates a pseudo-random number by hashing block and transaction properties.

Last updated