Compute Providers
Function Network allows compute providers to contribute AI inference power in a decentralized, scalable, and incentive-driven ecosystem. By staking FUNC tokens and providing computational resources, providers earn rewards while supporting AI model execution.
🔗 Provider Resources
🔗 Function Network Dapp – Register, stake, and manage your provider status.
🛠️ How It Works
Registration & Staking
Providers register on the network and stake FUNC tokens to participate.
Staking ensures accountability and aligns incentives within the ecosystem.
Compute & Task Execution
Providers run AI inference tasks, contributing compute power to the network.
Gateways dynamically route requests to active, high-performing providers.
Rewards & Unstaking
Providers earn FUNC based on contribution, availability, and performance.
After the required lock period, staked FUNC can be unstaked if desired.
🎯 How to Participate
Become a Provider & Start Earning
🔹 Register your provider ID and connect it to an AI model. 🔹 Stake FUNC tokens to activate your provider status.
Operate & Optimize Your Compute Node
🔹 Process AI inference tasks, ensuring high availability for requests. 🔹 Monitor performance, maximize uptime, and earn FUNC rewards.
Claim & Manage Rewards
🔹 Track rewards via the Function dashboard and claim based on epoch performance. 🔹 Unstake FUNC tokens once the minimum lock period has been met.
💰 Staking & Rewards
🔹 Function Network Dapp (Currently not live) – Connect your wallet to provide compute resources. Follow the steps to contribute to the network - Note that the ID should be your public peerID, and the URL should be your node URL. 🔹 Minimum Staking Period – FUNC tokens must remain staked for a set number of epochs before unstaking. 🔹 Epoch-Based Reward System – Providers earn rewards at the end of each epoch based on contributions. 🔹 FUNC Token Approvals – Always approve FUNC transfers before staking.
🔄 Provider Staking Workflows
1. Registering & Staking a Provider
Providers must be linked to a specific model and registered before staking. If auto-whitelist is enabled, follow steps 1B.
Steps 1A
Call
register
inProviderRegistry
:Provide a unique
id
(max 64 bytes),modelId
, and metadata.Metadata: The metadata field for a provider is intended to be the URL to access the provider's node, enabling connection to its services. The metadata must be in JSON format and must contain a 'url' field of the provider URL, and optionally a 'name' field.
Emit event:
ProviderRegistered
.
register("unique-provider-id", 1, "{}")
Call
stakeForProvider
inProviderStaking
(use the router address to locate the correct staking pool for a given model):Provide the registered unique
id
(max 64 bytes)
Emit event:
ProviderStaked
.
stakeForProvider("unique-provider-id")
Providers must meet the required stake amount defined by the model.
Steps 1B
Call
registerAndStake
inProviderRegistry
:Provide a unique
id
(max 64 bytes),modelId
, and metadata.Metadata: The metadata field for a provider is intended to be the URL to access the provider's node, enabling connection to its services. The metadata must be in JSON format and must contain a 'url' field of the provider URL, and optionally a 'name' field.
Emit event:
ProviderRegistered
.
registerAndStake("unique-provider-id", 1, "{}")
3. Unstaking a Provider
To retrieve staked FUNC tokens, providers must ensure all lock periods and requirements are met.
Steps
Ensure Minimum Lock Period Elapsed:
Providers must meet the
minEpochsLocked
requirement.
Call
unstakeProvider
inProviderStaking
:Provide the
id
of the provider to unstake FUNC.
FUNC Transfer:
The FUNC tokens are transferred back to the provider owner.
Emit event:
ProviderUnstaked
.
Example:
unstakeProvider("unique-provider-id")
4. Claiming Rewards
Providers earn FUNC rewards based on shard contributions and participation metrics. To claim rewards for all providers owned, check out 1A, to claim rewards for a specific provider, check 1B.
Steps 1A
Ensure Rewards Are Delayed:
Rewards can only be claimed for epochs up to
currentEpoch - epochRewardDelay
as defined inEpochController
.
Call
claimRewardsCluster
inProviderRegistry
:Provide the range of epochs to claim rewards for all providers owned by the caller.
Emit event:
RewardClaimedForCluster
.
Example:
claimRewardsCluster(10, 20)
This will attempt to claim rewards for the given epoch range for all providers, failed providers can be individually claimed with steps in step 1B.
Steps 1B
Ensure Rewards Are Delayed:
Rewards can only be claimed for epochs up to
currentEpoch - epochRewardDelay
as defined inEpochController
.
Call
claimRewards
inProviderStaking
:Provide the range of epochs to claim rewards for all providers owned by the caller.
Emit event:
ProviderClaimedRewards
.
Example:
claimRewards("id", 10, 20)
Common Notes
Minimum Epochs Locked: Applies to both Gateways and Providers. Check this value using
minEpochsLocked
inEpochController
.Reward Delay: Rewards can only be claimed for epochs up to
currentEpoch - epochRewardDelay
.Provider Metadata: The metadata for a provider is typically the URL to access its node, enabling external systems to connect and send inference requests.
FUNC Token Approvals: Always approve FUNC transfers before staking.
Provider and Gateway Active Status
Provider Active Status
A Provider is considered Active if the following conditions are met:
Registered: The provider has been registered in the Function Network.
Not Deactivated: The provider has not been explicitly deactivated.
Sufficiently Staked: The provider has staked an amount of FUNC tokens equal to or greater than the
modelStakeAmount
for the associated model.Whitelisted: The provider is whitelisted.
Model is Active: The model associated with the provider is enabled and functional.
Function Network enables compute providers to monetize their GPU resources, power decentralized AI inference, and contribute to an open AI economy. 🚀
Last updated