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 v1.0ドキュメント

1
Last updated at Posted at 2024-11-04

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

  1. flow developers
  2. Cadenceの言語仕様を学ぶ
  3. Flow CLI と FCL
  4. 開発方法
  5. 参考になるスマートコントラクトは?
  6. 脚注

flow developers

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

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

このチャプターではFlow blockchainのプロトコルや構成などの概要を知ることができます。

Cadenceの言語仕様を学ぶ

Cadence v1.0 は、Flow blockchain 上でスマートコントラクトを作る際の現行のプログラミング言語である。Cadenceが持つ特徴としては、Swiftに似たモダンプログラミング言語であることとリソースを個別のアカウントに保持できる点が挙げられます。

ブロックチェーン上で作成したアカウントには無料でストレージが紐づきます。そのストレージにPathという論理パスを作り、そこにスマートコントラクトで作成したリソースやCapabilityを保存します。

リソースはストレージの持ち主にしかできないメソッドなどを定義することができ、Capabilityは特定のアカウントもしくは誰でもアクセスできるメソッドなどをプログラミングで定めて能力(Capability)としてストレージに保存することができます。

リソースやCapailityが持つメソッドは、スマートコントラクトに対して値の書き込み処理を行うことができます。また、リソース自体にも値を保存することができます。

スマートコントラクトが持つ大きな特徴として、リソースやCapability経由でスマートコントラクトにアクセスすることで、デジタル通貨などを条件に沿ってアカウント間でやり取りできるようになります。(例えば、Uberみたいなライドシェアサービスの注文情報やドライバー情報を書き込むロジックをスマートコントラクトに持たせることで、乗客が注文したタイミングで乗客のデジタル通貨をスマートコントラクトのアカウントに保存しておき、乗客が目的地についたタイミングでドライバーに支払うことができるようになります。)

こちらのチャプターではFlow blockchainが持つ詳しい仕様を学ぶことができます。開発時に詳しい仕様を知りたい時に参照します。
(Cadenceのコードサンプルについては開発方法または参考になるスマートコントラクトは?をご覧ください)

Flow CLI と FCL

ブロックチェーンに対してトランザクションを実行するには Flow Client Library(FCL) を使用します。

FCLはJavaScriptライブラリなのでWebブラウザーやNode.jsどちらからでもスマートコントラクトの情報取得をしたり、アカウントの情報を取得したり、トランザクションを実行することができます。

スマートコントラクトをデプロイする時、及びブロックチェーンアカウントやキーを作成する時には Flow CLI を使用します。

どちらもFlow Foundationが開発しているものです。

こちらのチャプターではFCLとFlow CLIの仕様を学ぶことができます。翻訳元はこちらです。 (※Flow CLIとFCLはドキュメントと仕様が頻繁に更新されます)

開発方法

ブロックチェーンに対して行うAPI Callには、値を変更しない Scripts と値を変更する Transactions の2種類があります。これらを駆使して分散型アプリケーションを作成していきます。 

以下の記事はGoogle、AWS、Microsoftが共同出資したハッカソンの場で作成されたCOF.ninjaというeスポーツゲームを作る手順です。

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

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

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

メインネットへのデプロイ方法などスマートコントラクトの取り扱い方法については、Jacob君のYouTubeが参考になります。

参考になるスマートコントラクトは?

以下はインスピレーションを得るのにいいと思います

Cadenceで作るスマートコントラクトは他のスマートコントラクトをインポートすることができます。

イーサリアムを初めて詰まらせた分散型アプリケーションであるCrypto Kittiesゲームの開発者であり、元々米国のApple社でKeynoteを開発していたエンジニアは、もっとゲームに適したブロックチェーンを作ろうとして高速で高い可用性を誇るFlowブロックチェーンとSwift言語に似たCadenceスマートコントラクト言語を開発しました。そのため、ブロックチェーンゲームの開発に適しています(動画)が、無人野菜販売所ライドシェアサービスなど通常のビジネス用途にも十分に利用できます。

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

▪️開発指南書・解説書
ブロックチェーンとWebSocketを使って戦士やシーフなどブロックチェーンゲームに出てくるゲームキャラクターのリソースをデザインしたeスポーツゲームなど、5つのスマートコントラクトの作り方とメインネットへのデプロイ方法を解説した書籍があります。(2025年10月発売![3])

こちらの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

2: https://contractbrowser.com/A.24466f7fc36e3388.CodeOfFlow

3: https://www.amazon.co.jp/dp/B0FWZNT2L1 / https://www.amazon.com/dp/B0FWZR3S47
PRTimes_img2.png

1
0
1

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?