Flow Developers

Flow is a fast, secure, and developer-friendly blockchain built to support the next generation of games, apps, and the digital assets that power them.

Start Here

Getting Started

In this tutorial, we will learn how to use smart contracts, switch accounts, and view account state.

What is Cadence?


Cadence is a new smart contract programming language for use on the Flow Blockchain. Cadence introduces new features to smart contract programming that help developers ensure that their code is safe, secure, clear, and approachable. Some of these features are:

  • Type safety and a strong static type system
  • Resource-oriented programming, a new paradigm that pairs linear types with object capabilities to create a secure and declarative model for digital ownership by ensuring that resources (and their associated assets) can only exist in one location at a time, cannot be copied, and cannot be accidentally lost or deleted
  • Built-in pre-conditions and post-conditions for functions and transactions
  • The utilization of capability-based security, which enforces access control by requiring that access to objects is restricted to only the owner and those who have a valid reference to the object

What is the Flow Developer Playground?


The Flow Playground includes an in-browser editor and emulator to experiment with Flow. Using the Flow Playground, you can write Cadence smart contracts, deploy them to a local Flow emulated blockchain, and submit transactions.

The Flow Playground should be compatible with any standard web browser, but we recommend that you use Google Chrome with it, because it has been tested and optimized for only the Chrome browser so far.

If you encounter issues using the Flow Developer Playground, see the Playground Manual or Debugging for help.

Getting to know the Playground

The playground contains everything you need to get familiar with deploying Cadence smart contracts and interacting with Transaction and Scripts.

The Playground comes pre-loaded with contract and transaction templates that correspond to each of the five tutorials in this documentation site (Hello World, Fungible Tokens, NFTs, Marketplace, and Composable Resources). To load the contracts from a specific tutorial, click the "Examples" link at the top of the Playground. This opens up a menu with each tutorial.

When you click on one of these links, the tutorial will open in a new tab and the contracts, transactions, and scripts will be loaded into the templates in the Playground for you to use.

Accounts and Contracts

The Accounts section on the left side of the screen is where the active accounts are listed and selected. You can click on an account tab to view the contract that is associated with that account in the main editor.

When you have a .cdc file open in the account editor that contains a contract, you can click the deploy button to deploy that contract to the currently selected account.

After a few seconds, you should see a message in the console confirming that the contract was deployed. You should also see the name of the contract show up in the tab for that account, indicating the account now has that contract deployed to it.

You can also select transactions and scripts from the left selection menu and submit them to interact with your deployed smart contracts.

This is just a small set of the things you can do with the Playground. If you would like a more detailed explanation of the different Playground features, look at the Playground Manual.

Resources

Each tutorial in this package uses several files containing transactions, contracts, and scripts. All the code you need will be provided in the text of the tutorials for you to copy and paste, or you can use the pre-generated tutorial setups in the Playground.

Say Hello, World!


Now that you have the Flow Developer Playground running, you can create a smart contract for Flow! Go to the Hello, World! page for step-by-step instructions on writing and deploying your first smart contract.

Updated 5 months ago



Getting Started


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.