ⓘ このドキュメントは、Flow blockchainによるDApp(分散型アプリケーション)構築の始め方ドキュメントの完全翻訳ページです。
flow developers
クリックすると各ページに飛びます
- 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
- 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(version1.0) は、Flow blockchain 上でスマートコントラクトを作る際の現行のプログラミング言語です。ブロックチェーン上で作成したアカウントに紐づくストレージに、Pathという論理パスを作り、そこにスマートコントラクトで作成したリソースやCapabilityを保存し、スマートコントラクトに対してリソースからアクセスすることで、デジタル通貨などを条件に沿ってやり取りできるようになります。
Cadence v1.0のコードサンプルについては開発方法をご覧ください
- Introduction
- Why Use Cadence?
- Tutorial
- 1. First Steps
- 2. Hello World
- 3. Resource Contract Tutorial
- 4. Capability Tutorial
- 5.1 Non-Fungible Token Tutorial Part 1
- 5.2 Non-Fungible Token Tutorial Part 2
- 6. Fungible Token Tutorial (トークン送金方法のサンプル)
- 7. Marketplace Setup
- 8. Marketplace (⇦Capability削除に関する説明はここ)
- 9. Voting Contract
- 10. Composable Resources
-
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
WebブラウザーやNode.jsからブロックチェーンに対してトランザクションを実行するには Flow Client Library(fcl) を使用します。アカウントを作成したりスマートコントラクトをデプロイする時には Flow CLI を使用することができます。
-
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)
開発方法
ブロックチェーンには値を変更しない Scripts と値を変更する Transactions という2種類のブロックチェーンノードに対するAPI Callがあります。これらを駆使してdappを作成していきます。
以下の記事は、X上で紹介され、Flow公式にリポストされました。
- ブロックチェーンゲームの作り方1 - 基礎編Part1
- ブロックチェーンゲームの作り方2 - 基礎編Part2
- ブロックチェーンゲームの作り方3 - 基礎編Part3
- ブロックチェーンゲームの作り方4 - 基礎編Part4
- ブロックチェーンゲームの作り方5 - 所持金表示
- ブロックチェーンゲームの作り方6 - プレイヤー登録
- ブロックチェーンゲームの作り方7 - ゲーム内通貨購入
- ブロックチェーンゲームの作り方8 - デッキ編集
- ブロックチェーンゲームの作り方9 - 対戦相手とのマッチング
- ブロックチェーンゲームの作り方10 - マリガンおよびゲーム開始
- ブロックチェーンゲームの作り方11 - ターンチェンジ
- ブロックチェーンゲームの作り方12 - 勝敗と賞金送付、ランキング
ブロックチェーンウォレットにはローンチ時からウォレットSDKで実績のある Blocto があります。JavaScriptで簡単にBloctoウォレットを呼び出す事ができ、トランザクションもJavaScript で簡単に行う事が出来ます。バックエンドではNode.jsでトランザクションを実行することが出来ます。
Blockエクスプローラには Flow Diver↗︎ があり、トランザクション結果を素早く確認する事が出来ます。 Contract Browser↗︎ ではスマートコントラクトやトークンなどを確認したり、直接スマートコントラクトをデプロイすることが出来ます。 flowview↗︎ ではトークンやステーキングなどのアカウント情報を簡単に確認することができます。
ハンヅオンで学べる書籍もあります。 こちら↗︎ (Version1.0ではないですが、先端的技術を使用します!)
本の特徴: ブロックチェーンのトランザクションは送信から情報取得までに7-10秒かかります。それを時間を感じさせなくする為には、バックエンドにGraphQLサーバーを採用することが考えられます。GraphQLは大人数による同時接続通信が可能なので、ゲームで何をしたのかを対戦相手に前もって通知することができます。(YouTube動画の右下部分)
GraphQL はAWS Lambdaと相性が良く(特に金銭面で)、ブロックチェーンにもスムーズにトランザクションを送れる利点があります。Svelteは他にも良い本がありますが、AWS LambdaをGraphQLサーバーとしてローコストで立ち上げる方法をきちんと図つきで説明している媒体は数少ないです。インフラを自分で立ち上げたことがある人なら本書を読みながら簡単に、低コスト・バックエンドのセットアップが可能です。(個人出版ですので、図とコードが中心となってますのでレビューは限りなく甘めでお願いします🙇🙇♂️)
こちらのQiitaアカウント<@flowcadence>のドキュメントは無断転載OKです。
脚注
1: https://usa.visa.com/dam/VCOM/regional/na/us/Solutions/documents/visa-nft-whitepaper.pdf ↩