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公式がコンクールなどで優秀と取り上げています。Flow公式が優秀と取り上げているので、Discordで問い合わせ時もこちらのスマートコントラクトを引用するといいかもしれません。

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 を使用することができます。

開発方法

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

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

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

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

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

(入門書もあります。入門書以外は実務書ですのでご注意ください。)

この動画のロジックは全てスマートコントラクトに書かれてます。画面上に出ている情報は全てブロックチェーンから取得したものです。(注:画像ファイル(©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?