Skip to main content
Version: 0.42

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 Address
FungibleToken0xee82856bf20e2aa6
ViewResolver0xf8d6e0586b0a20c7
Burner0xf8d6e0586b0a20c7
MetadataViews0xf8d6e0586b0a20c7
FungibleTokenMetadataViews0xee82856bf20e2aa6
FlowToken0x0ae53cb6e3f42a79
FlowFees0xe5a8b7f23e8b548f
FlowStorageFees0xf8d6e0586b0a20c7
FlowServiceAccount0xf8d6e0586b0a20c7
NodeVersionBeacon0xf8d6e0586b0a20c7
RandomBeaconHistory0xf8d6e0586b0a20c7
LockedTokens0xf8d6e0586b0a20c7
StakingProxy0xf8d6e0586b0a20c7
FlowIDTableStaking0xf8d6e0586b0a20c7
FlowClusterQC0xf8d6e0586b0a20c7
FlowDKG0xf8d6e0586b0a20c7
FlowEpoch0xf8d6e0586b0a20c7
FlowStakingCollection0xf8d6e0586b0a20c7

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.

More detailed information about how the core contracts are changing will come soon!