π© Quickstart 0: Hello World
π« Deploy a simple HelloWorld contract to learn the basics of the Flow blockchain and Cadence. Youβll use:
- The local Flow emulator to deploy smart contracts.
- The local Flow dev wallet to log into test accounts.
- A template Next.js app with sample scripts and transactions to interact with your contract.
π The final deliverable is a DApp that lets users read and change a greeting field on Flow testnet.
π¬ Meet other builders working on this challenge and get help in the Emerald City Discord!
πΉ Video Walkthrough
Want a video walkthrough? Check out Jacob Tuckerβs walkthrough here:
π¦ Checkpoint 0: Install
Required:
- Git
- Node (𧨠Use Node v16 or a previous version as v17 may cause errors π§¨). You know you have installed it if you type
node -v
in your terminal and it prints a version. - Flow CLI (𧨠Make sure to install the correct link for your system π§¨). You know you have installed it if you type
flow version
in your terminal and it prints a version.
git clone https://github.com/emerald-dao/0-hello-world.git
in a terminal window, π± install the dependencies start your frontend:
cd 0-hello-world
npm install
npm run dev
in a second terminal window, start your π·β local emulator:
cd 0-hello-world
flow emulator start -v
Note: the -v
flag means to print transaction and script output to your local emulator
in a third terminal window, πΎ deploy your contract and πΈ start your local wallet:
cd 0-hello-world
flow project deploy
flow dev-wallet
You can
flow project deploy --update
to deploy a new contract any time.
π± Open http://localhost:3000 to see the app
π Checkpoint 1: Wallets
Weβll be using the local Flow dev wallet.
Click the βLog Inβ button and notice a window appears with different accounts to select, each with their own Flow Token balance. Select the first account to log in to it.
π Checkpoint 2: Reading the Greeting
π Click the
Get Greeting
button to see your greeting:
βοΈ Checkpoint 3: Changing the Greeting
βοΈ Change the greeting! Type a new greeting into the input and click the
Change Greeting
button. You should see a transaction pop up:
π Click βAPPROVEβ and then click the
Get Greeting
button again. You should now see your new greeting:
πΎ Checkpoint 4: Deploy it to testnet!
π Ready to deploy to a public testnet?!?
π Generate a deployer address by typing
flow keys generate --network=testnet
into a terminal. Make sure to save your public key and private key somewhere, you will need them soon.
π Create your deployer account by going to https://testnet-faucet.onflow.org/, pasting in your public key from above, and clicking
CREATE ACCOUNT
:
After it finishes, click
COPY ADDRESS
and make sure to save that address somewhere. You will need it!
β½οΈ Add your new testnet account to your
flow.json
by modifying the following lines of code. Paste your address you copied above to where it says βYOUR GENERATED ADDRESSβ, and paste your private key where it says βYOUR PRIVATE KEYβ.
"accounts": {
"emulator-account": {
"address": "f8d6e0586b0a20c7",
"key": "5112883de06b9576af62b9aafa7ead685fb7fb46c495039b1a83649d61bff97c"
},
"testnet-account": {
"address": "YOUR GENERATED ADDRESS",
"key": {
"type": "hex",
"index": 0,
"signatureAlgorithm": "ECDSA_P256",
"hashAlgorithm": "SHA3_256",
"privateKey": "YOUR PRIVATE KEY"
}
}
},
"deployments": {
"emulator": {
"emulator-account": [
"HelloWorld"
]
},
"testnet": {
"testnet-account": [
"HelloWorld"
]
}
}
π Deploy your HelloWorld smart contract:
flow project deploy --network=testnet
Lastly, configure your .env file to point to Flow TestNet so we can interact with your new contract.
In your .env file, change the following:
NEXT_PUBLIC_CONTRACT_ADDRESS
to your generated testnet addressNEXT_PUBLIC_ACCESS_NODE
tohttps://rest-testnet.onflow.org
NEXT_PUBLIC_WALLET
tohttps://fcl-discovery.onflow.org/testnet/authn
You can now terminate all your terminals since we no longer need to run our own local blockchain or wallet. Everything lives on testnet!
Run
npm run dev
to start your application in a terminal, and have a blast with your DApp!
π Make Edits!
π You can also check out your smart contract HelloWorld.cdc
in flow/cadence/HelloWorld.cdc
.
πΌ Take a quick look at how your contract get deployed in flow.json
.
π If you want to make frontend edits, open index.js
in pages/index.js
.
βοΈ Side Quests
π Head to your next challenge here.
π¬ Meet other builders working on this challenge and get help in the π Emerald City Discord!
π Problems, questions, comments on the stack? Post them to the π Emerald City Discord.