ⓘ このドキュメントは、Flow blockchainによる分散型アプリケーション構築ドキュメントの完全翻訳ページです。
flow developers
このチャプターではFlow blockchainのプロトコルや構成などの概要を知ることができます。
- Why Flow
- Differences vs. EVM
- Flow Protocol
- Advanced Concepts
- FLIX (Flow Interaction Templates) (トランザクションの安全強化を行う)
- Guides
-
Account Linking (スマートコントラクトを活用して親子アカウントの関係を作る)
- Building Walletless Applications Using Child Accounts
- Working With Parent Accounts (親子アカウントを作成した後のクエリー一覧)
-
Account Linking (スマートコントラクトを活用して親子アカウントの関係を作る)
-
Core Smart Contracts (Flow blockchain公式が作成/管理しているスマートコントラクト)
- Fungible Token
- Flow Token
- Service Account (Flowの運営オペレーター用アカウント)
- Flow Fees
- Staking Table
- Epoch Contracts (エポックのコード)
- Non-Fungible Token
- NFT Metadata (ViewResolver, MetadataViews, NFTカタログの説明)
- NFT Storefront (OpenSeaのようなマーケットプレイスシステムを作れる)
- Staking Collection
- Account Linking
- EVM
- Burner
Cadenceの言語仕様を学ぶ
Cadence v1.0 は、Flow blockchain 上でスマートコントラクトを作る際の現行のプログラミング言語である。Cadenceが持つ特徴としては、Swiftに似たモダンプログラミング言語であることとリソースを個別のアカウントに保持できる点が挙げられます。
ブロックチェーン上で作成したアカウントには無料でストレージが紐づきます。そのストレージにPathという論理パスを作り、そこにスマートコントラクトで作成したリソースやCapabilityを保存します。
リソースはストレージの持ち主にしかできないメソッドなどを定義することができ、Capabilityは特定のアカウントもしくは誰でもアクセスできるメソッドなどをプログラミングで定めて能力(Capability)としてストレージに保存することができます。
リソースやCapailityが持つメソッドは、スマートコントラクトに対して値の書き込み処理を行うことができます。また、リソース自体にも値を保存することができます。
スマートコントラクトが持つ大きな特徴として、リソースやCapability経由でスマートコントラクトにアクセスすることで、デジタル通貨などを条件に沿ってアカウント間でやり取りできるようになります。(例えば、Uberみたいなライドシェアサービスの注文情報やドライバー情報を書き込むロジックをスマートコントラクトに持たせることで、乗客が注文したタイミングで乗客のデジタル通貨をスマートコントラクトのアカウントに保存しておき、乗客が目的地についたタイミングでドライバーに支払うことができるようになります。)
こちらのチャプターではFlow blockchainが持つ詳しい仕様を学ぶことができます。開発時に詳しい仕様を知りたい時に参照します。
(Cadenceのコードサンプルについては開発方法または参考になるスマートコントラクトは?をご覧ください)
- Introduction
- Why Use Cadence?
- Tutorial
-
Language Reference
- Syntax
- Constants and Variable Declarations
- Type Annotations
- Values and Types(⇦組み込み型の全関数およびプロパティ)
- Operators
- Functions(⇦関数)
- Control Flow
- Scope
- Type Safety
- Type Inference(⇦型推論)
- Composite Types (⇦構造体はここ)
- Resources
- Access control (⇦Entitlementはここ)
- Capabilities
- Interfaces
- Enumerations
- Intersection Types (⇦インタフェースを型にします)
- References
- Imports
-
Accounts(⇦アカウント)
- Paths
- Storage(⇦アカウントストレージ) (Storage操作のEntitlementの説明)
- Capabilities (Capability操作のEntitlementの説明)
- Keys (Key操作のEntitlementの説明)
- Contracts (Contract操作のEntitlementの説明)
- Inbox (⇦Capabilityを譲渡します)
- Attachments
- Contracts(⇦スマートコントラクト)
- Contract Updatability
- Transactions(⇦トランザクション)
- Events
- Core Events
- Run-time Types
- Built-in Functions(⇦疑似乱数の生成はここ)
- Environment Information
- Crypto (Flowで使われている暗号の詳細説明)
- Type Hierarchy
- Glossary(⇦記号)
- Design Patterns
- Cadence Anti-Patterns
-
Development Standards (
///ドキュメントコメントの説明) - Cadence Security Best Practices
- Guide for Solidity Developers
- Contract Upgrades with Incompatible Changes
- JSON-Cadence format
- Measuring Time In Cadence(⇦現在時刻取得はここ)
- Testing
Flow CLI と FCL
ブロックチェーンに対してトランザクションを実行するには Flow Client Library(FCL) を使用します。
FCLはJavaScriptライブラリなのでWebブラウザーやNode.jsどちらからでもスマートコントラクトの情報取得をしたり、アカウントの情報を取得したり、トランザクションを実行することができます。
スマートコントラクトをデプロイする時、及びブロックチェーンアカウントやキーを作成する時には Flow CLI を使用します。
どちらもFlow Foundationが開発しているものです。
こちらのチャプターではFCLとFlow CLIの仕様を学ぶことができます。翻訳元はこちらです。 (※Flow CLIとFCLはドキュメントと仕様が頻繁に更新されます)
-
Flow CLI
- Install Instructions
- Super Commands
- Accounts
- Get an Account
- Create an Account
- Deploy a Contract
- Update a Contract
- Remove a Contract (エミュレータのみの便利機能。テストネットでは削除不可能)
- Account Staking Info (ステーキング情報の取得)
- Funding a Testnet Account (Faucetからテスト用のFLOWトークンをもらう)
- Keys
- Deploy Project
- Start Emulator
- Add Project Contracts (flow.initにデプロイしたいコントラクトを設定する)
- Deploy a Project (initに引数を渡すなど、高度なスマートコントラクトのデプロイ)
- Create Emulator Snapshot
- Scripts
- Transactions
- Flow.json
- Initialize Configuration (flow.json作成)
- Configuration (エイリアス設定やGCP/KMSによるキー管理など)
- Manage Configuration (設定の追加と削除)
- Security (Dotenvファイルがデフォルトで使えます)
- Flow Entities
- Get Block
- Get Events
- Get Collection (1blockに含まれているtxの塊の取得)
- Network Status (ブロックチェーンの状態を知れます)
- Utils
- Generate a Signature (メッセージに署名します)
- Verify Signature (署名の有効性確認)
- Snapshot Save (スナップショットの保存)
- Development Tools (エミュレータ用ウォレット)
- Dependency Manager (依存コントラクトを簡単にインストール)
- Running Cadence Tests (テスト実行/カバレッジレポート)
- Cadence Linter
- Flow Interaction Templates (FLIX) (Interaction Templatesの操作周り)
- Cadence Boilerplate (ボイラーテンプレート)
- Data Collection
- Flow Emulator
-
Clients
-
Flow Client Library (FCL)
- FCL API Reference (FCL全リファレンス)
- FCL SDK Reference (FCL経由のSDKの仕様詳細)
- Authentication (ウォレット認証)
- How to Configure FCL (APIリファレンスのConfiguration(設定)と同等)
- Wallet Discovery (ウォレット認証画面の設定)
- Installation (FCLのインストール)
- Interaction Templates (ウォレットの安全強化の仕組み)
- Proving Ownership of a Flow Account (ユーザーがFlowアカウント管理証明)
- Scripts (スクリプトをFCLを使って実行)
- Transactions (トランザクションをFCLを使って実行)
- Signing and Verifying Arbitrary Data (署名したメッセージの検証)
- WalletConnect 2.0 Manual Configuration (WalletConnect2.0をDiscoveryに)
-
Flow Go SDK (Flowの仕様詳細)
- Migration Guide v0.25.0 (新しいGoSDKの使い方)
- Flow Dev Wallet (エミュレータを使った初心者向け開発流れ, Flow残高取得)
- Cadence VS Code Extension
-
Wallet Provider Spec (FCLを駆使してウォレットプロバイダになるには)
- Authorization Function (認証関数はどう作るのか)
- Introduction (ウォレット認証とは何かの仕様の言及)
- Provable Authn
- User Signature
-
Flow Client Library (FCL)
開発方法
ブロックチェーンに対して行うAPI Callには、値を変更しない Scripts と値を変更する Transactions の2種類があります。これらを駆使して分散型アプリケーションを作成していきます。
以下の記事はGoogle、AWS、Microsoftが共同出資したハッカソンの場で作成されたCOF.ninjaというeスポーツゲームを作る手順です。
eスポーツと書いてあるとおり、条件に沿ってゲームの勝者に暗号通貨を運営からプレイヤーに配布しています。これが難しいものではなく、プログラミング初心者でも1日でできてしまうほど、Buildは簡単です。世界80億人を相手に誰でもブロックチェーンゲームを作成・運営して収益を上げることができます。
(2025年4月現在、消費税法は消費税を外国人から徴収しないようになっており、これには旅行者に外貨を落としてもらおうという意図を持ちますが、Web3では逆に外貨を稼ぐ障害となっています。外国人を判定するのが大変なので消費税法改定が待たれます)
- ブロックチェーンゲームの作り方1
- ブロックチェーンゲームの作り方2
- ブロックチェーンゲームの作り方3
- ブロックチェーンゲームの作り方4
- ブロックチェーンゲームの作り方5
- ブロックチェーンゲームの作り方6
- ブロックチェーンゲームの作り方7
- ブロックチェーンゲームの作り方8
- ブロックチェーンゲームの作り方9
- ブロックチェーンゲームの作り方10
- ブロックチェーンゲームの作り方11
- ブロックチェーンゲームの作り方12
ブロックチェーンウォレットにはローンチ時からウォレットSDKで実績のある Blsqui があります。JavaScriptで簡単にBlsquiウォレットを呼び出す事ができ、トランザクションもJavaScript で簡単に行う事が出来ます。
Blockエクスプローラには FlowScan↗︎ があり、トランザクション結果を素早く確認する事が出来ます。 Contract Browser ではスマートコントラクトやトークンなどを確認したり、直接スマートコントラクトをデプロイすることが出来ます。 flowview ではトークンやステーキング、保存したリソースなどのアカウント情報を簡単に確認することができます。
メインネットへのデプロイ方法などスマートコントラクトの取り扱い方法については、Jacob君のYouTubeが参考になります。
参考になるスマートコントラクトは?
以下はインスピレーションを得るのにいいと思います
- Tanabata (七夕) スマートコントラクト: https://www.flowscan.io/contract/A.23b08a725bc2533d.Tanabata?tab=deployments
- aiSports スマートコントラクト: https://www.flowscan.io/contract/A.4fdb077419808080.aiSportsEscrow?tab=deployments
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 ↩
2: https://contractbrowser.com/A.24466f7fc36e3388.CodeOfFlow ↩
3: https://www.amazon.co.jp/dp/B0FWZNT2L1 / https://www.amazon.com/dp/B0FWZR3S47 ↩

