/
onflow.org
Flow Playground

Locked Tokens Contract Reference


Contracts

LockedTokens

The LockedTokens contract defines the resources and interfaces used to store locked FLOW tokens owned by a token holder.

Source: LockedTokens.cdc

NetworkContract Address
Testnet0x95e019a17d0e23d7
Mainnet0x8d0e87b65159ae63

StakingProxy

The StakingProxy contract defines the interfaces through which token holder and node operators perform staking operations with locked FLOW.

Source: StakingProxy.cdc

NetworkContract Address
Testnet0x7aad92e5a0715d21
Mainnet0x62430cf28c26d095

Transactions

Token Admin

The token admin is the administrator responsible for distributing and releasing locked FLOW tokens. The token admin has possession of a single account that is used to control the lockups for all locked FLOW.

The token admin creates a shared account for each token holder that is co-owned by the token admin and the token holder. The shared account is used to store all locked FLOW owned by a token holder.

The token admin public key is used by account creators to configure token holder accounts to hold locked FLOW.

Note: these keys have a weight of 100.

NetworkToken Admin Public Key
Testnetf845b840fd8c6a3078ea6b7ecb96d914832ee3b62323d4d42860235b4a175d75544f476aeb800e3a4bad2cc5375e47fc5e13356167a4512b6ad03e660c04b6db26246cba020364
Mainnetf845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164

Custodian

The custodian is an agent who acts on behalf of the token holder for the purpose of securing FLOW tokens.

Token Holder

The token holder is a user who holds possession of locked and unlocked FLOW tokens.

The token holder can stake and delegate locked or unlocked FLOW through the StakingProxy contract.

The token holder can withdraw unlocked FLOW from the shared account created by the token admin.

IDNameSource
TH.01Withdraw Unlocked FLOWlockedTokens/user/withdraw_tokens.cdc
TH.02Deposit Unlocked FLOWlockedTokens/user/deposit_tokens.cdc
TH.03Get Unlock LimitlockedTokens/user/get_unlock_limit.cdc
TH.04Get Locked Account BalancelockedTokens/user/get_locked_account_balance.cdc
TH.05Get Locked Account AddresslockedTokens/user/get_locked_account_address.cdc

Staking

These transactions operate through the StakingProxy.NodeStakerProxy interface.

Register an Operator Node

IDNameSource
TH.15Get Operator Node InfostakingProxy/get_node_info.cdc
TH.16Register Operator NodestakingProxy/register_node.cdc

Delegating

These transactions operate through the StakingProxy.NodeDelegatorProxy interface.

IDNameSource
TH.17Register DelegatorlockedTokens/delegator/register_delegator.cdc
TH.18Get Delegator IDlockedTokens/delegator/get_delegator_id.cdc
TH.19Delegate New Locked FLOWlockedTokens/delegator/delegate_new_tokens.cdc
TH.20Re-delegate Unstaked FLOWlockedTokens/delegator/delegate_unstaked_tokens.cdc
TH.21Re-delegate Rewarded FLOWlockedTokens/delegator/delegate_rewarded_tokens.cdc
TH.22Request Unstake of Delegated FLOWlockedTokens/delegator/request_unstaking.cdc
TH.23Withdraw Unstaked Delegated FLOWlockedTokens/delegator/withdraw_unstaked_tokens.cdc
TH.24Withdraw Rewarded Delegated FLOWlockedTokens/delegator/withdraw_rewarded_tokens.cdc

Node Operator

The node operator is an independent user who operators a Flow node on behalf of a token holder.

IDNameSource
NO.01Set Up Operator AccountstakingProxy/setup_node_account.cdc

Staking

These transactions operate through the StakingProxy.NodeStakerProxy interface.

The node operator can perform the following staking actions using locked or unlocked FLOW owned by the token holder.

Note: The node operator can perform these actions on behalf of the token holder, but only with explicit permission. This permission can be revoked by the token holder.

IDNameSource
NO.02Add Node InfostakingProxy/add_node_info.cdc
NO.03Remove Node InfostakingProxy/remove_node_info.cdc
NO.04Remove Staking ProxystakingProxy/remove_staking_proxy.cdc
NO.05Stake New Locked FLOWstakingProxy/stake_new_tokens.cdc
NO.06Re-stake Unstaked FLOWstakingProxy/stake_unstaked_tokens.cdc
NO.07Unstake FLOWstakingProxy/unstake_all.cdc
NO.08Withdraw Unstaked FLOWstakingProxy/withdraw_unstaked.cdc
NO.09Withdraw Rewarded FLOWstakingProxy/withdraw_rewards.cdc

Events

The LockedTokens contract defines events that can be monitored for important actions.

SharedAccountRegistered

Emitted when a new shared (locked) account is registered.

SharedAccountRegistered
pub event SharedAccountRegistered(address: Address)

UnlockedAccountRegistered

Emitted when a new user (unlocked) account is registered. This and SharedAccountRegistered are always emitted at the same time.

UnlockedAccountRegistered
pub event UnlockedAccountRegistered(address: Address)

UnlockLimitIncreased

Emitted when the token admin increases the unlock limit for a locked account. This will usually happen when a milestone is reached in the vesting of the locked tokens.

UnlockLimitIncreased
pub event UnlockLimitIncreased(address: Address, increaseAmount: UFix64, newLimit: UFix64)

LockedAccountRegisteredAsNode

Emitted when a user registers their locked account as a node operator.

LockedAccountRegisteredAsNode
pub event LockedAccountRegisteredAsNode(address: Address, nodeID: String)

LockedAccountRegisteredAsDelegator

Emitted when a user registers their locked account as a delegator.

LockedAccountRegisteredAsDelegator
pub event LockedAccountRegisteredAsDelegator(address: Address, nodeID: String)

LockedTokensDeposited

Emitted when the token admin deposits locked tokens from the token sale.

LockedTokensDeposited
pub event LockedTokensDeposited(address: Address, amount: UFix64)
Edit on GitHub