1
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?

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

Last updated at Posted at 2024-11-04

ⓘ このドキュメントは、Flow blockchainによるDApp(分散型アプリケーション)構築の始め方ドキュメントの完全翻訳ページです。

  1. flow developers
  2. Cadenceの言語仕様を学ぶ
  3. Flow CLI と FCL
  4. 開発方法
  5. 脚注

flow developers

Flow blockchainは、Crypto Kitties、NFT(ERC-721)を開発してきた日本にも馴染み深いDieter Shirleyという人が新たに開発したブロックチェーンであり、Flow blockchainのスマートコントラクトを作成するプログラミング言語の事をCadenceといいます。

米金融大手VISAは、NFTの人気が最も高かった2021年に出したホワイトペーパーの中で、NFTに相応しいブロックチェーンとしてイーサリアムとFlowを挙げました。今も「Visa whitepaper for NFT in 2021」でGoogle検索するとその資料[1]が出てきます。

ESportsで参考になるスマートコントラクトは?
aiSportsのコントラクトが参考になると思います。aiSports創立者は実力派のCadenceエンジニアで、Flow blockchain公式がコンクールなどで優秀と取り上げています。

aiSportsスマートコントラクト(の一つ)はこちら: https://contractbrowser.com/A.4fdb077419808080.aiSportsEscrow

このURLはスマートコントラクトのコードを閲覧できるサイトで、検索する場所にaiSportsと入れると以下画像のように7つ出てきます。どれもESportsの参考になるコントラクトだと思います。
スクリーンショット 2025-03-06 8.05.23.png

クリックすると各ページに飛びます

Cadenceの言語仕様を学ぶ

Cadence(version1.0) は、Flow blockchain 上でスマートコントラクトを作る際の現行のプログラミング言語です。ブロックチェーン上で作成したアカウントに紐づくストレージに、Pathという論理パスを作り、そこにスマートコントラクトから作成したリソースやCapabilityを保存し、スマートコントラクトに対してリソース経由でアクセスすることで、デジタル通貨などを条件に沿ってやり取りできるようになります。

Flow blockchainの特徴は"easy to build" です。スマートコントラクト言語をjQueryみたいにスラスラとブロックチェーンに繋がるコードを書けて、ウォレットとの繋がり方やコマンドラインツールも、一貫して一つの理念のもとに開発の手が止まらないように書きやすく作られています。一度コードを書いてみるとその美しい文法スタイルから何て書きやすいプログラミング言語なんだ、と感じるはずです。Swift言語に酷似していますが、JavaScript(TypeScript)エンジニアとも相性が良いスマートコントラクト言語です。
ウォレットで作成したアカウントには無料でストレージが割り振られており、自由に保存できます。そこに保存されるのは、コインやNFTなどの資産、スマートコントラクト、そして鍵です。ストレージの持ち主にしかこれらを移動させることができませんが、その内容を変更するトランザクションというのがあり、これを安全にプログラミングしてシステムを構築することができます。そして実際に移動します。コピーは不可能です。スマートコントラクトのデプロイ者はこの仕組みを使って世界中で事業を行うことができます。

Cadence v1.0のコードサンプルについては開発方法をご覧ください

Flow CLI と FCL

WebブラウザーやNode.jsからブロックチェーンに対してトランザクションを実行するには Flow Client Library(FCL) を使用します。アカウントやキーを作成したりスマートコントラクトをデプロイする時には Flow CLI を使用することができます。

翻訳元はこちら (※Flow CLIとFCLは頻繁にドキュメントと仕様が更新されます)

開発方法

ブロックチェーンには値を変更しない Scripts と値を変更する Transactions という2種類のブロックチェーンノードに対するAPI Callがあります。これらを駆使してdappを作成していきます。 

以下の記事は、X上で紹介され、Flow blockchain公式にリポストされました。

ハッカソンの場で作成された、COF.ninjaというeスポーツゲームのCadenceソースコードを、Version1.0に合わせて書き換えたものが以下の5~12にかけて紹介されています。

eスポーツと書いてあるとおり、条件に沿って暗号通貨をスマートコントラクトを通じて運営からプレイヤーに配布しています。これが難しいものではなく、プログラミング初心者でも1日でできてしまうほど、Buildは簡単です。そのため日本国民誰もが世界を相手にブロックチェーンゲームを作成して暗号通貨を稼ぐことができます。(日本の人口は約1億人ですが世界の人口は80億人です!)
(2025年4月現在、消費税法は消費税を外国人から徴収しないようになっていますが、これは旅行者に外貨を落としてもらおうという時代錯誤の法律であり、Web3では逆に外貨を稼ぐ障害となっています。外国人を判定するのが大変なので消費税法改定が待たれます)

ブロックチェーンウォレットにはローンチ時からウォレットSDKで実績のある Blocto があります。JavaScriptで簡単にBloctoウォレットを呼び出す事ができ、トランザクションもJavaScript で簡単に行う事が出来ます。バックエンドではNode.jsでトランザクションを実行することが出来ます。

Blockエクスプローラには Flow Diver↗︎ があり、トランザクション結果を素早く確認する事が出来ます。 Contract Browser↗︎ ではスマートコントラクトやトークンなどを確認したり、直接スマートコントラクトをデプロイすることが出来ます。 flowview↗︎ ではトークンやステーキング、保存したリソースなどのアカウント情報を簡単に確認することができます。

ハンヅオンで学べる書籍もあります。 こちら↗︎ (Version1.0ではないですが、先端技術を使用します)
特色: ブロックチェーンのトランザクションは送信から情報取得までに7-10秒かかります。それを時間を感じさせなくする為には、バックエンドにGraphQLサーバーを採用することが考えられます。GraphQLは大人数による同時接続通信が可能なので、ゲームで何をしたのかを対戦相手に前もって通知することができるからです。(YouTube動画(下部)の右下部分、またはここのYouTube動画の下部に表示される部分。)
*GraphQLはX(旧Twitter)など大手ソフトウェア企業が積極採用している通信技術です。
GraphQL はAWS Lambdaと相性が良く(特に金銭面で)、ブロックチェーンにもスムーズにトランザクションを送れるという利点があります。GraphQLはNode.jsで動作し、そのためAWS Lambdaで動きます。そしてAWS Lambdaがreturnする値を現在ブラウザに接続しているすべての端末に対して、Push送信することができます。Svelteに関しては他にも良い書籍がありますが、AWS LambdaをGraphQLサーバーとして立ち上げる方法をきちんと図説している情報媒体は少ないはずです(僕は英語でAWSの開発陣から知りました)。インフラを自分で立ち上げたことがある人なら、この本を読みながら簡単に低コストのバックエンドをセットアップすることができます。
(GraphQLの概念や実装はシンプルですので、ブロックチェーンゲームを誰でも作れるようになります。AWSインフラ知識が一部必要となります。レビューは甘めに...お願いします。尚、ブロックチェーンゲーム作成方法についてまとめたブログ入門書(一部無料)もあります。)

著者が初めて作ったブロックチェーンゲーム(8日間で作りました)はこちら↗︎です。
(ウォレット操作が面倒くさい、と開発方法で書いているのはこの時の経験から来ています。時々画面右上に出るのはEventsの情報です。臨場感が出ますのでGraphQLサーバーで取得後、ブラウザにPush送信しています)

この動画のロジックは全てスマートコントラクトに書かれてます。画面上に出ている情報は全てブロックチェーンから取得したものです。(注:画像ファイル(©SEGA、以下略)はSvelteフレームワークで管理しています)

こちらのQiitaアカウント<@flowcadence>のドキュメントは無断転載OKです。

脚注

1: https://usa.visa.com/dam/VCOM/regional/na/us/Solutions/documents/visa-nft-whitepaper.pdf

スクリーンショット 2024-12-20 18.53.57.png

1
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
1
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?