ⓘ このドキュメントは、Flow BlockchainによるDApp(分散型アプリケーション)構築の始め方ドキュメントの完全翻訳ページです。
flow developers
Cadenceは、日本にも馴染みの深いDieter Shirley という方が作成したFlowブロックチェーンのスマートコントラクトを作成する為のプログラミング言語です。Crypto Kitties 、NFT仕様(ERC-721)、FlowBlockchain、Account Linkingを開発してきて、ブロックチェーンの歴史に名を沢山残してきた方による注目のブロックチェーン技術です。
NFTに関しては最も人気の高かった2021年にVISAがホワイトペーパーを出しており、相応しいブロックチェーンとしてイーサリアムとFlowを挙げています。今も「Visa whitepaper for NFT in 2021」で検索しますとその資料[1]が出てきます。
クリックすると各ページに飛びます
- 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(機能群)を置き、スマートコントラクトに各アカウントからアクセス出来るようにすることでデジタル通貨などを条件に沿ってやり取りできるようになります。
どこから読んでいいか分からないという方はこちらにまとめがあります
- 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公式にリポストされました。
- How to develop a blockchain game. Day1 - 基礎編Part1
- How to develop a blockchain game. Day2 - 基礎編Part2
- How to develop a blockchain game. Day3 - 基礎編Part3
- How to develop a blockchain game. Day4 - 基礎編Part4
- How to develop a blockchain game. Day5 - 所持金表示
- How to develop a blockchain game. Day6 - プレイヤー登録
- How to develop a blockchain game. Day7 - ゲーム内通貨購入
- How to develop a blockchain game. Day8 - デッキ編集
- How to develop a blockchain game. Day9 - 対戦相手のマッチング
- How to develop a blockchain game. Day10 - マリガンおよびゲーム開始
- How to develop a blockchain game. Day11 - ターンチェンジ
- How to develop a blockchain game. Day12 - 勝敗と賞金送付、ランキング
ブロックチェーンウォレットにはローンチ時からウォレットSDKで実績のあるBloctoがあります。JavaScriptで簡単にBloctoウォレットを呼び出す事ができ、トランザクションもJavaScript で簡単に行う事が出来ます。バックエンドではNode.jsでトランザクションを実行することが出来ます。
BlockエクスプローラにはFlow Diver↗︎があり、トランザクション結果を素早く確認する事が出来ます。Contract Browser↗︎ではスマートコントラクトやトークンなどを確認したり、直接スマートコントラクトをデプロイすることが出来ます。
ハンヅオンで学べる書籍もあります。こちら↗︎ (Version1.0ではないですが、先端的技術を使用しています!)
こちらのQiitaアカウント<@flowcadence>のドキュメントは無断転載OKです。
脚注
1: https://usa.visa.com/dam/VCOM/regional/na/us/Solutions/documents/visa-nft-whitepaper.pdf ↩