Skip to main content
Version: 1.0

Protocol Smart Contracts 1.0 Changes Guide

Protocol Smart Contracts in Cadence 1.0

In 2024, the network will be upgrading to Cadence 1.0. In addition to many changes to the Cadence programming language and the Cadence token standards, the Flow Protocol smart contracts are also being updated to be compatible with the changes.

All applications and smart contracts that interact with these contracts will need to update their transactions and scripts in order to be compatible with the changes.

Important Info

This document assumes you have a basic understanding of the Cadence 1.0 updates and modifications to the Fungible Token Standard. We encourage you to consult those guides for more details on these changes if you are interested.

The updated code for the Cadence 1.0 versions of the protocol smart contracts is located in the stable-cadence branch of the flow-core-contracts repo. Please look at the changes there to understand how the contracts have changed. Every contract in the repo is changing.

Please see the latest post in this forum thread to find the latest version of the CLI and emulator that you should be testing with.

It is also important to remember that after you've made your changes to your contracts, you will have to stage the upgrades on testnet and mainnet in order for them to be upgraded and migrated properly. You can find informaion about how to do that here: https://github.com/onflow/contract-updater

Additionally, here are the import addresses for all of the important contracts related to the protocol:

ContractEmulator Import AddressTesting Framework
FungibleToken0xee82856bf20e2aa60x0000000000000002
ViewResolver0xf8d6e0586b0a20c70x0000000000000001
Burner0xf8d6e0586b0a20c70x0000000000000001
MetadataViews0xf8d6e0586b0a20c70x0000000000000001
FungibleTokenMetadataViews0xee82856bf20e2aa60x0000000000000002
FlowToken0x0ae53cb6e3f42a790x0000000000000003
FlowFees0xe5a8b7f23e8b548f0x0000000000000004
FlowStorageFees0xf8d6e0586b0a20c70x0000000000000001
FlowServiceAccount0xf8d6e0586b0a20c70x0000000000000001
NodeVersionBeacon0xf8d6e0586b0a20c70x0000000000000001
RandomBeaconHistory0xf8d6e0586b0a20c70x0000000000000001
LockedTokens0xf8d6e0586b0a20c70x0000000000000001
StakingProxy0xf8d6e0586b0a20c70x0000000000000001
FlowIDTableStaking0xf8d6e0586b0a20c70x0000000000000001
FlowClusterQC0xf8d6e0586b0a20c70x0000000000000001
FlowDKG0xf8d6e0586b0a20c70x0000000000000001
FlowEpoch0xf8d6e0586b0a20c70x0000000000000001
FlowStakingCollection0xf8d6e0586b0a20c70x0000000000000001

See the other guides in this section of the docs for the import addresses of other important contracts in the emulator.

Upgrade Guide

The NFT guide covers a lot of common changes that are required for NFT contracts, but many of these changes will also apply to any contract on Flow, so it is still useful to read even if you don't have an NFT contract.

The core contracts do not have any meaningful changes outside of what is required to be compatible with Cadence 1.0 and the token standard changes. If you have questions about the core contracts changes for Cadence 1.0, please reach out to the flow team in discord and we will be happy to help.