0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ブロックチェーンゲームの作り方1 基礎編Part1

Last updated at Posted at 2024-12-29

Previous << User Signature
Next >> 2 - 基礎編Part2

TL;DR 何がセットアップに必要?

  1. VSCode(ご存知シェアNo.1コードエディター)
  2. VSCode Extention(Cadence)
  3. Flow CLI
  4. flow init
  5. HelloWorld.cdc の作成
  6. flow.json でデプロイ用意
  7. flow emulator & flow project deploy
  8. 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

スクリーンショット 2024-12-29 9.59.39.png

2. VSCodeを開く

自分がプロジェクトを開始したいフォルダを新規で作成しておいてください。作成が終わったらVS Codeを開いて以下の赤枠の中のリンクをクリックして、そのフォルダを開きます。
スクリーンショット 2024-12-29 10.01.32.png

3. VSCode Extentionを開く

フォルダを開き終わったら以下のような画面になります。左端に四角が4つ繋がったようなアイコンが見えますのでそれをクリックします。
スクリーンショット 2024-12-29 10.05.06.png

Search枠にCadenceと入力します。
スクリーンショット 2024-12-29 10.06.57.png

リストとして表示される検索結果から、一番上のCadenceを選択します。画面の中央に表示されるInstallボタンをクリックします。(画面の赤丸内に表示されます。ここではインストール済みのため表示されていません)

4. Cadence言語を書く前に

ここにCadence言語でプログラミングを書いていくわけですが、その前にFlow CLIをインストールします。このCLIはブロックチェーンとやり取りする上で不可欠なコマンドを提供してくれます。

Terminal > New Terminalを選択してTerminalウィンドウを表示します。(画面赤枠)
スクリーンショット 2024-12-29 10.36.55.png

以下URLを参考にして、インストールコマンドをTerminal内で実施します。

Macの場合
brew install flow-cli

インストールが終わったらflow versionコマンドをTerminalウィンドウ内で実施します。

flow version

Output:
スクリーンショット 2024-12-29 10.23.31.png
Version v1.9.2以降が出力されていれば、Cadence1.0に対応したバージョンです。

(flow help コマンドを入力すると、Flow CLIで実行可能なコマンドをリスト表示してくれます。)

5. Flowプロジェクトを初期化

Flow プロジェクトを初期化するために以下のコマンドを実行します。

flow init

以下のような出力がされますのでHelloWorldと入力します。入力が終わったらEnterを押します。
スクリーンショット 2024-12-29 10.38.32.png

(Would you like to install any core contracts and their dependencies?:
と表示された場合は、Noを選択します。
)

スクリーンショット 2024-12-29 10.41.40.png

Terminalウィンドウに🎉 Congrats! your project was created.と表示され、画面の左側にHelloWorldフォルダと複数のファイルが表示されます。

6. スマートコントラクトを作成する

File > New Fileを選択して、プロジェクトに新しいファイルを作成します。「HelloWorld.cdc」と入力してファイル作成を完了します。

スクリーンショット 2024-12-29 10.46.53.png

ファイル名の左横にアイコンが表示されます。これはVSCodeが自動で.cdcのファイル名から判断して表示してくれています。.cdcはCadence言語のファイル拡張子です。

7. スマートコントラクトコードを入力

以下のようにCadence言語のコードを入力します。

access(all) contract HelloWorld {
  
}

この2行目に以下のコードを入力します。

  access(all) let greeting: String

  init() {
    self.greeting = "Hello, World!"
  }

コードは以下のことを示しています。

  1. HelloWorldというスマートコントラクトを宣言します
  2. コントラクトの中にgreetingという変数を宣言します。変数はデータを保存することができます。Stringはテキストデータを保存することができます。
  3. この変数に初期値として"Hello, World!"というデータをセットしました。

スクリーンショット 2024-12-29 12.06.59.png

8. flow.jsonにコントラクトを設定する

flow.jsonを開いてcontractsの下に"HelloWorld": "./HelloWorld.cdc"を書きます。
スクリーンショット 2024-12-29 11.26.12.png

contractsと同じ階層にdeploymentsのブラケットを作り、その下にemulatorのブラケットを作ります。この中にアカウントを指定するのですが、accountsを見ると、"emulator-account"がありますので、それを使ったブラケットを作り、その中にデプロイするコントラクト名を入れます。下図:

スクリーンショット 2024-12-29 12.16.09.png

emulatorはネットワークの一種で、コントラクトをデプロイすることができます。

9. エミュレータ起動

以下のコマンドをTerminalウィンドウに入力して実行します。

flow emulator -v

以下のようにエミュレータネットワークが起動しますので、Terminalウィンドウの右上の+をクリックして新しいTerminalウィンドウを開きます。
スクリーンショット 2024-12-29 11.38.41.png

新しいウィンドウで以下を実行します。

flow project deploy

エミュレータはあなたのマシンの中だけで動くネットワークですので、すぐにデプロイが完了します。
スクリーンショット 2024-12-29 11.41.24.png

Output:

HelloWorld -> 0xf8d6e0586b0a20c7 

0xf8d6e0586b0a20c7はデプロイされたアカウントのアドレスを示しています

10. スマートコントラクトのデータを読み込む

HelloWorld.cdcファイルと同じ階層にread_greeting.cdcファイルを作成します。
スクリーンショット 2024-12-29 11.45.21.png

以下のコードをread_greeting.cdcファイル内に書きます。

import "HelloWorld"

access(all) fun main(): String {
  return HelloWorld.greeting
}

💡スマートコントラクトのデータを取得する関数は全てmain関数から始まります。: Stringと後ろについているのはこの関数がString(文字列)を返すことを示しています。

以下コマンドをTerminalウィンドウで実行します。

flow scripts execute ./read_greeting.cdc

Output:
スクリーンショット 2024-12-29 11.54.53.png

以上で、スマートコントラクトを実際にエミュレータにデプロイして、そのスマートコントラクトの変数を読み出すことができました。

Day2以降はこのDay1の内容を既に知っているものとして進めていきますので、Day2以降もこのページを振り返って、エミュレータにデプロイする方法を知っている前提で進めてください。


Previous << User Signature

Flow blockchain / Cadence version1.0ドキュメント

Next >> 2 - 基礎編Part2

1. ストレージはアカウント作成時に0.01FLOWを支払って用意されますが、そのストレージ費用はアカウント作成者が負担するので利用者にとっては無料になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?