March 31 - Account Minimum Balance in Effect for Flow

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 the FlowToken.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.
  • How will these fees be enforced and updated?

    • Fees are enforced and updated via the FlowStorageFees contract on the FlowServiceAccount. 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.
  • 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.
  • 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 least 0.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.
  • 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
  • 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.

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)

As previously noted, the spork planned for March 31 was to contain and enable the storage balance requirements and transaction fees. A few updates on this are below:

  1. We have decided to adjust this MainNet spork date to now be on Wednesday April 7th, 2021 (1 week later than originally planned).
  2. This spork will ONLY include storage balance requirements and will NOT include the enabling of transaction fees. We will advise when these are being turned on at a later date.
  3. You should expect to receive the funds paying this min. account balance from account: 47fd53250cc3982f
  4. The funds are being sent via regular transactions on Wednesday April 7th during the spork, so the events will all be queryable by your existing infrastructure.

Also, an amendment to an earlier FAQ for clarity:

  • What happens if an account isn’t funded after the spork?
    • If the account is not funded after the spork, it will not be able to participate in any transactions, except transactions that add sufficient FLOW to the account.
    • An account needs at least 0.001 FLOW or at least 0.1 FLOW / MB times its storage used. Whichever is larger.

Please let us know if you have any questions on this.

When will the upgrade be completed? Deposits and withdrawals are suspended on huobi and the others until the upgrade is completed.

@uraniumtech The upgrade has been completed, but Huobi is behind on integrating it with their software. Please reach out to huobi with any issues.