On the Wednesday March 31 Flow MainNet Spork, storage minimum balance requirements and transaction fees will come into effect.
The following outlines what you need to know for this release:
-
What is the FLOW storage minimum?
- After March 31, all Flow accounts will need AT LEAST
0.001
FLOW (10KB) in their account (specifically in theFlowToken.Vault
on/storage/flowTokenVault
) and a balance (&FlowToken.Vault{FungibleToken.Balance}
on/public/flowTokenBalance
) capability. Both of which are already on accounts unless they were explicitly removed.
- After March 31, all Flow accounts will need AT LEAST
-
How will these fees be enforced and updated?
- Fees are enforced and updated via the
FlowStorageFees
contract on theFlowServiceAccount
. This contract may be updated as often as needed to keep the requirements to instantiate and maintain accounts within a reasonable range. You will be notified before any such change is made.
- Fees are enforced and updated via the
-
Why is this necessary?
- Flow charges for storage to manage the growth of state on the network. This is an important component to managing the performance of decentralized networks.
-
Does the minimum balance needed for an account possibly change over time?
- Yes, the minimum balance starts at 10KB (currently 0.001 FLOW) and can be added in increments at that same rate. The minimum balance is set based on the amount of storage the account is using - the more storage the account uses, the higher the minimum balance required.
- For example, an account that has a balance of 3.5 FLOW can store up to 35 MB. This also means an account storing 23 MB cannot have less than 2.3 FLOW locked in their account, while the rest of balance is freely withdrawable. The minimum account balance is 0.001 FLOW equivalent to 10kb of storage capacity which means an account storing less then 10kb cannot withdraw the last 0.001 FLOW from its account.
-
What do I need to do about this?
- To ensure all existing accounts have enough FLOW to stay open, as core contributors to the Flow ecosystem, we will be funding existing accounts as part of the sporking process on April 7 with the min. balance of FLOW required to keep that account open and usable for the foreseeable future.
- Dapper, NBA Top Shot, and all other accounts on the network will receive 0.001 FLOW (1MB) for storage during the spork.
- There are a number of accounts larger than 1MB that currently exist and these accounts will be special cased to ensure they are usable after the spork.
- To ensure all existing accounts have enough FLOW to stay open, as core contributors to the Flow ecosystem, we will be funding existing accounts as part of the sporking process on April 7 with the min. balance of FLOW required to keep that account open and usable for the foreseeable future.
-
What happens if an account isn’t funded after the spork?
- If the account is not funded after the spork, it will be frozen until manually funded by submitting a transaction via an account with sufficient FLOW to sign as the payer and top up the account to meet the minimum balance. No account will be purged by not meeting the minimum balance requirement for the foreseeable future. We will give ample notice for any major changes.
- An account needs at least
0.001 FLOW
or at least0.1 FLOW / MB
times its storage used. Whichever is larger.
-
After the spork, what do we, as service providers and dapps, do differently?
- Following the April 7 spork, all accounts will need at least 0.001 FLOW at time of instantiation. Please email to
hello[at]onflow.org
and let us know if you’ll need support covering these costs. A number of options are available and we’ll ensure you’re setup to serve your users before pushing any breaking changes.
- Following the April 7 spork, all accounts will need at least 0.001 FLOW at time of instantiation. Please email to
-
After the spork, what do users do differently?
- Ideally, nothing changes for users following this spork. When creating user accounts you should instantiate them with the min. required FLOW (0.001 FLOW) to get started.
- Additional storage is added to an account by depositing more FLOW to its default FLOW vault at the rate of 0.001 FLOW per 10KB of storage capacity.
-
How do I track the storage in a user’s account? How can I top it up?
-
The values storage capacity and storage used of an account can be accessed through cadence. Both PublicAccount and AuthAccount have the fields storageUsed and storageCapacity in the unit of bytes. This document provides details on checking storage
-
This script returns storage used/capacity:
pub fun main(address: Address): {String: UInt64} { let account = getAccount(address) return { "storageUsed": account.storageUsed, "storageCapacity": account.storageCapacity } }
-
To increase an account storage capacity deposit more FLOW to the account. Having more FLOW on the account means the account can use more storage. The conversion rate is
0.1 FLOW / MB
-
-
How large is a FT? A NFT? How large is the current average account?
- It depends on the complexity of the FT/NFT but as a reference, one Moment from TopShot is about 325 bytes.
- It’s worth noting that while every single NFT contributes to storage used, for FTs only the Vault contributes to storage used (the same storage is used if you have 1 FLOW or 1 000 FLOW)
-
What is the exact error that will be returned if an account falls below its minimum balance?
- The error will look like this:
execution error code 11: address 00aa487c16e76ef6 storage 107658 is over capacity 100000
- If the account is put under the minimum account balance its storage capacity becomes 0 so the error will look like this:
execution error code 11: address fb792aad21b8decd storage 680 is over capacity 0
- The error will look like this:
-
What happens if an account falls below the minimum balance?
- The account will be put in frozen state, need to be topped up, before it could validly sign transactions again.
-
What should I do if the user’s account falls below the minimum balance?
- Submit a transaction via an account with sufficient FLOW to sign as the payer and top up the account to meet the balance.
-
How does this impact contract deployment on MainNet?
- Adding a contract to an account incurs significant storage, and a deposit above the minimum would likely be required. Please reach out to us directly if you have any concerns about funding this operation.
-
What will transaction fees be? When are transaction fees being turned on?
- We are currently targeting fees of 0.0001 FLOW but this is still subject to change.
- We are targeting rollout of transaction fees on March 31 and you should be prepared for them at this time. We may roll them out separately at a later date but will advise closer to the date.
NOTE
These changes will be in effect on CanaryNet as of March 17 ~12pm PT if you’d like to test how they impact your service.
- The CanaryNet is where changes are deployed before they are rolled out on TestNet and MainNet - you can access here https://docs.onflow.org/access-api
Please test your services prior to the MainNet spork on April 7.
Your partners in crossing the chasm - the Flow team
(Updated April 7, 2021 by LL to match new spork dates and new min. balance deposit amount)