Forge SDK 入門

著者: Shijun Wang(ArcBlock シニアソフトウェアエンジニア)
ArcBlock の目標は、ブロックチェーンと dApp の構築を簡単にすることです。あらゆる開発プロジェクトが、複雑さに悩まされることなくブロックチェーン技術の利点を活用できるようにしたいと考えています。この記事では Forge SDK を使い、わずか数分で独自のブロックチェーンと dApp を構築する方法を説明します。まず Forge に含まれるものを見てみましょう。
Forge SDK には、dApp のライフサイクル全体を支える次のコンポーネントが含まれています。
- Forge Core:トランザクション処理エンジン、コンセンサスエンジンとの連携、データストレージ層、週次リリース
- Smart Contracts:Forge 内蔵の取引コントラクトにより、アカウント、トランザクション、クロスチェーン、チェーンガバナンスなど、ビジネスロジックの99%を解決
- Forge Desktop:デスクトップ用チェーンノード
- Forge Web:Forge チェーンノード用のウェブ管理コンソールとブロックブラウザー
- Forge SDK:Elixir、JavaScript、Java、Python、Rust などをサポート
- Forge Simulator:トラフィックシミュレーター
- dApp Workshop:dApp のシナリオとワークフローを作成してロジックをテスト
- Forge Patron:統合テストツール
- Forge Deploy:本番環境の大規模デプロイを支援する DevOps ツール(現在は AWS のみ対応)
- Forge Compiler:スマートコントラクトのコンパイルツール。Forge CLI から利用可能
Forge CLI は、これらのツールを入手して利用するための最良の方法の一つです。コマンド一つで SDK ツールキット全体を利用できます。
この入門記事では、Forge CLI を使って次のことを行います。
- ワンクリックでブロックチェーンをセットアップ — 独自のブロックチェーンを作成して設定します。
- ワンクリックで dApp を作成 — ブロックチェーン上で動作する dApp をすばやく作成します。
Forge CLI のインストール
この例では Node.js を使用するため、インストール前にコンピューターへ Node.js v10.x 以降が導入されていることを確認してください。次のコマンドで実行環境を確認できます。
node --version次に npm install -g @arcblock/forge-cli を実行して Forge CLI をインストールします。完了すると、次の出力が表示されます。

Forge リリースのインストール
forge install v0.38.4 を実行して Forge をローカルドライブへインストールします。インストール手順は次のとおりです。

ワンクリックでチェーンを作成
forge chain:create demo-chain を実行して最初のブロックチェーンを作成し、DCT という名前と総供給量1億トークンを設定します。手順は次のとおりです。

カスタム設定では、次の手順に従います。
- Chain name: demo-chain チェーンとノードの両方を demo-chain とします。
- Please input block time (in seconds): 5 ブロック時間を5秒に設定します。
- Do you want to customize token config for this chain? Yes カスタムチェーンのトークン設定を選択します。
- What's the token name? Demo Chain Token トークン名です。
- What's the token symbol? DCT 3文字以上のトークンシンボルを設定します。
- What's the token icon? /Users/wangshijun/.forge_cli/tmp/token.png トークンアイコンのファイルパスです。正方形の PNG 画像を推奨します。
- Whats the token description? Token on demo chain トークンの説明です。
- Please input token total supply: 100000000 トークンの総供給量です。
- Please input token initial supply: 100000000 トークンの初期供給量です。
- Please input token decimal: 18 小数点以下の桁数です。
- Do you want to enable "feel lucky" (poke) feature for this chain? Yes ユーザーがチェックインしてトークンを受け取れるようにします。
- Do you want to customize "feel lucky" (poke) config for this chain? Yes チェックイン機能のパラメーターを設定します。
- How much token to give on a successful poke? 10 チェックインごとに10トークンを付与します。
- How much token can be poked daily? 1000 1日に最大1,000トークンを配布します。
- How much token can be poked in total? 1460000 チェックインで配布できるトークンの上限です。
- Do you want to include moderator config in the config? Yes チェーン管理者情報を自動作成します。
- Set moderator as token owner of (98540000 DCT) on chain start? Yes 残りのトークンを管理者アカウントへ置きます。
コマンドを実行すると、次のメッセージが表示されます。

次に forge start demo-chain を実行してテストチェーンを起動します。自動的に立ち上がるまで約15秒待ちます。

起動したテストチェーンは単一ノードのチェーンです。ローカルノードにはウェブ UI と統合ブロックエクスプローラーがあります。forge web open を実行してコンソールを開きます。

ワンクリックで dApp をデプロイ
チェーンができたので、その上で動作する最初の分散型アプリケーション(dApp)を作成できます。Blocklet は再利用可能な構成要素で、開発者による dApp の作成を大幅に簡素化します。既製のコンポーネント、モジュール、ライブラリ、フロントエンドビューなど、dApp 構築に必要なツールを含めることができます。Blocklet を選んだら、インストールして起動するだけです。複数の Blocklet を組み合わせて、より複雑な dApp を構築することもできます。
この例では、次の機能を備えた dApp を作成します。
- ABT Wallet によるユーザーログイン
- コードをスキャンしてチェックインし、トークンを受け取る機能
- テストコインを支払い、暗号化された文書を解除する機能
forge blocklet:use を実行して forge-react-starter を選び、dApp コードを保存するディレクトリとして demo-dapp を指定します。

プロンプトに従って dApp のパラメーターを設定します。完了すると、forge-react-starter は dApp の DID アカウントを自動作成し、その DID をチェーン上で宣言します。この DID は ArcBlock の W3C CCG DID 仕様に基づく分散型アイデンティティで、Forge に完全統合されています。

ここでは、セットアップしたテストチェーンの GraphQL インターフェースを指定します。この URL は forge start demo-chain の出力の最後の列にあり、http://localhost:8211/api です。
dApp が作成されると、次のプロンプトが表示されます。

プロンプトに従って dApp ディレクトリへ移動し、dApp を起動します。すべて正しくできていれば、ブラウザーに dApp のホームページが表示されます。

右上のログインをクリックし、ABT Wallet でコードをスキャンします。ウォレットがない場合は https://www.abtwallet.io からダウンロードできます。
スキャン手順は WeChat や WhatsApp のログインとよく似ています。

ABT Wallet で dApp が要求するユーザー名とメール情報を入力し、スワイプして確認します。すると次の画面が表示されます。

「GET 25 DCT」をクリックし、ウォレットでもう一度コードをスキャンすると、先ほど設定した10トークンを受け取ってログインできます。ページを更新すると残高10が表示され、ローカルのブロックエクスプローラーには登録とチェックインに関するトランザクションが表示されます。

次は暗号化されたページを解除します。「my purchase」ボタンをクリックして支払いページを開きます。
まとめ
コマンドラインの経験があれば、全体の手順は簡単です。Forge CLI により、開発者は dApp のビジネスロジックに集中でき、動作に必要な基盤は Forge Framework が担います。ブロックチェーンと dApp の構築を簡単にするという私たちの目標を、Forge は実現します。