Previous << User Signature
Next >> 2 - 基礎編Part2
TL;DR 何がセットアップに必要?
- VSCode(ご存知シェアNo.1コードエディター)
- VSCode Extention(Cadence)
- Flow CLI
flow init
- HelloWorld.cdc の作成
- flow.json でデプロイ用意
flow emulator
&flow project deploy
- Hello, World! の実行
FCL (flow client library) はブラウザからスマートコントラクトにアクセスする為のライブラリです。今回はターミナルでHello World! を表示するだけなのでFlow CLI (command line interface) だけが必要です。
Flow blockchainの特徴は"easy to build" です。スマートコントラクト言語をjQueryみたいにスラスラとブロックチェーンに繋がるコードを書けて、ウォレットとの繋がり方やコマンドラインツールも、一貫して一つの理念のもとに開発の手が止まらないように書きやすく作られています。一度コードを書いてみるとその美しい文法スタイルから何て書きやすいプログラミング言語なんだ、と感じるはずです。Swift言語に酷似していますが、JavaScript(TypeScript)エンジニアとも相性が良いスマートコントラクト言語です。
ウォレットで作成したアカウントには無料でストレージが割り振られており[1]、自由に保存できます。そこに保存されるのは、コインやNFTなどの資産、スマートコントラクト、そして鍵です。ストレージの持ち主にしかこれらを移動させることができませんが、その内容を変更するトランザクションというのがあり、これを安全にプログラミングしてシステムを構築することができます。そして実際に移動します。コピーは不可能です。スマートコントラクトのデプロイ者はこの仕組みを使って世界中で事業を行うことができます。
開発者紹介ビデオ(出資者パーティの様子): 8:30~ごろから開発メンバーの紹介があります。なんとこの中で出てくるCadence言語メイン開発者、Bastianは今もずっとDiscord上で開発の質問に答えてくれてます。時々元Appleエンジニア(Keynote開発者;16:40頃~)で現在チーフアーキテクトをしているDieter(Dete)も開発チャンネルでコメントをくれますのでとても開発フレンドリーなブロックチェーンです。
Why Flow
FLOW(または$FLOW)トークンは、Flowネットワークのネイティブ通貨です。開発者およびユーザーは、FLOWを使用してネットワーク上で取引(transact)を行うことができます。開発者は、ピアツーピア決済(他人同士の決済)、サービス料金徴収、または消費者向け特典(rewards)のために、FLOWを直接アプリに統合することができます。
ということでやっていきます、P2P(ピアツーピア)決済アプリ開発!
1. VSCodeをダウンロード
以下URLからVSCodeをダウンロードします。(Macの方は赤枠の中のボタンを押してください)
https://code.visualstudio.com/download
2. VSCodeを開く
自分がプロジェクトを開始したいフォルダを新規で作成しておいてください。作成が終わったらVS Codeを開いて以下の赤枠の中のリンクをクリックして、そのフォルダを開きます。
3. VSCode Extentionを開く
フォルダを開き終わったら以下のような画面になります。左端に四角が4つ繋がったようなアイコンが見えますのでそれをクリックします。
リストとして表示される検索結果から、一番上のCadenceを選択します。画面の中央に表示されるInstallボタンをクリックします。(画面の赤丸内に表示されます。ここではインストール済みのため表示されていません)
4. Cadence言語を書く前に
ここにCadence言語でプログラミングを書いていくわけですが、その前にFlow CLIをインストールします。このCLIはブロックチェーンとやり取りする上で不可欠なコマンドを提供してくれます。
Terminal
> New Terminal
を選択してTerminalウィンドウを表示します。(画面赤枠)
以下URLを参考にして、インストールコマンドをTerminal内で実施します。
brew install flow-cli
インストールが終わったらflow version
コマンドをTerminalウィンドウ内で実施します。
flow version
Output:
Version v1.9.2以降が出力されていれば、Cadence1.0に対応したバージョンです。
(flow help
コマンドを入力すると、Flow CLIで実行可能なコマンドをリスト表示してくれます。)
5. Flowプロジェクトを初期化
Flow プロジェクトを初期化するために以下のコマンドを実行します。
flow init
以下のような出力がされますのでHelloWorldと入力します。入力が終わったらEnterを押します。
(Would you like to install any core contracts and their dependencies?:
と表示された場合は、Noを選択します。)
Terminalウィンドウに🎉 Congrats! your project was created.
と表示され、画面の左側にHelloWorldフォルダと複数のファイルが表示されます。
6. スマートコントラクトを作成する
File
> New File
を選択して、プロジェクトに新しいファイルを作成します。「HelloWorld.cdc
」と入力してファイル作成を完了します。
ファイル名の左横にアイコンが表示されます。これはVSCodeが自動で.cdc
のファイル名から判断して表示してくれています。.cdc
はCadence言語のファイル拡張子です。
7. スマートコントラクトコードを入力
以下のようにCadence言語のコードを入力します。
access(all) contract HelloWorld {
}
この2行目に以下のコードを入力します。
access(all) let greeting: String
init() {
self.greeting = "Hello, World!"
}
コードは以下のことを示しています。
- HelloWorldというスマートコントラクトを宣言します
- コントラクトの中にgreetingという変数を宣言します。変数はデータを保存することができます。
String
はテキストデータを保存することができます。 - この変数に初期値として"Hello, World!"というデータをセットしました。
8. flow.json
にコントラクトを設定する
flow.json
を開いてcontracts
の下に"HelloWorld": "./HelloWorld.cdc"
を書きます。
contracts
と同じ階層にdeployments
のブラケットを作り、その下にemulator
のブラケットを作ります。この中にアカウントを指定するのですが、accounts
を見ると、"emulator-account"
がありますので、それを使ったブラケットを作り、その中にデプロイするコントラクト名を入れます。下図:
emulator
はネットワークの一種で、コントラクトをデプロイすることができます。
9. エミュレータ起動
以下のコマンドをTerminalウィンドウに入力して実行します。
flow emulator -v
以下のようにエミュレータネットワークが起動しますので、Terminalウィンドウの右上の+を
クリックして新しいTerminalウィンドウを開きます。
新しいウィンドウで以下を実行します。
flow project deploy
エミュレータはあなたのマシンの中だけで動くネットワークですので、すぐにデプロイが完了します。
Output:
HelloWorld -> 0xf8d6e0586b0a20c7
0xf8d6e0586b0a20c7
はデプロイされたアカウントのアドレスを示しています
10. スマートコントラクトのデータを読み込む
HelloWorld.cdc
ファイルと同じ階層にread_greeting.cdc
ファイルを作成します。
以下のコードをread_greeting.cdc
ファイル内に書きます。
import "HelloWorld"
access(all) fun main(): String {
return HelloWorld.greeting
}
💡スマートコントラクトのデータを取得する関数は全てmain
関数から始まります。: String
と後ろについているのはこの関数がString
(文字列)を返すことを示しています。
以下コマンドをTerminalウィンドウで実行します。
flow scripts execute ./read_greeting.cdc
以上で、スマートコントラクトを実際にエミュレータにデプロイして、そのスマートコントラクトの変数を読み出すことができました。
Day2
以降はこのDay1
の内容を既に知っているものとして進めていきますので、Day2
以降もこのページを振り返って、エミュレータにデプロイする方法を知っている前提で進めてください。
Flow blockchain / Cadence version1.0ドキュメント
1. ストレージはアカウント作成時に0.01FLOWを支払って用意されますが、そのストレージ費用はアカウント作成者が負担するので利用者にとっては無料になります。 ↩