Smart Contracts Deep-dive
This page gives detailed explanation of FL Alliance's smart contracts.
Last updated
Was this helpful?
This page gives detailed explanation of FL Alliance's smart contracts.
Last updated
Was this helpful?
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.
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.