FLOW for Wallets & Custodians
Creating an Account
A user needs a Flow account in order to receive, hold and send FLOW tokens. The accounts & keys documentation provides a detailed overview of how accounts work on Flow.
You can create an account using templates and helper code from one of the Flow SDKs:
Receiving FLOW Deposits
Every Flow account supports the FLOW token by default. Once an account is created, it is already provisioned to receive FLOW deposits from other users.
FLOW, like any other FungibleToken
on Flow, is stored in a special resource called a FungibleToken.Vault
.
Every new account is created with an empty FLOW vault stored at the /storage/flowTokenVault
storage path.
Conceptually, a vault is like a mailbox with a lock. Anybody can deposit tokens
but only the account holder can withdraw them. This functionality is made possible by
resource capabilities in Cadence. Each account publishes a FungibleToken.Receiver
interface
that points to its FLOW vault. The receiver is the mail slot; it allows others to
deposit FLOW into a vault without stealing what's inside.
Here's how you deposit FLOW into an account:
Detecting Deposits
The FlowToken
contract emits a FlowToken.TokensDeposited
event whenever tokens
move between accounts.
You can query for this event to detect when tokens are deposited into a user's account.
Getting the Balance of an Account
Detailed below is an example of how to query the balance of a FlowToken.Vault
instance.
From Cadence
Similar to the token receiver, each account publishes a FungibleToken.Balance
capability
that allows anybody to read the balance of an account. This allows Cadence programs
to fetch the balance of an account directly in code.
The above code can be executed as part of a read-only Cadence script.
From the Access API
The FLOW Access API makes it easy to query an account's balance without writing any Cadence code.
The GetAccount RPC method includes a balance
field, which holds the FLOW token balance
for the requested account.
Sending FLOW
Below is an example of a transaction that transfers FLOW from one account to another.
This transaction template is available for use in our SDKs:
- Transfer Tokens with the FCL (Flow Client Library)
- Coming soon: Transfer Tokens with the Go SDK
Staking FLOW
The FLOW staking documentation outlines the steps a custodian can take to support staking through a trusted node operator.