私の自動販売機 DApp:DApps を構築する前に考えるべき4つのこと

著者: Yongxin Xu
編集: Matt McKinney
前回は、開発者がカスタムブロックチェーンとブロックチェーンアプリケーションを最も簡単に構築できる ArcBlock の Forge Framework を紹介しました(前回の記事はこちら )。
今回は私の DApp のアイデアと、DApp を構築する前に考えるべき4つの質問を通じて、その着想を形にした経験を紹介します。また、トランザクションプロトコルの定義など、開発の進捗も説明します。
最近、自動販売機向けの DApp を思いつきました。自動販売機のための信頼できる台帳を作るものです。なぜ自動販売機に信頼できる台帳が必要なのでしょうか?自動販売機は商品を販売して収益を得るため、お金を追跡する台帳が必要です。では、なぜ台帳が「信頼できる」必要があるのでしょうか?自動販売機事業には通常、複数の関係者が参加します。私のモデルでは、運営者だけでなく、製造者、商品の供給者、設置場所を提供する所有者も関わり、各当事者が定期的に利益分配を受けます。

したがって、全員が信頼できる方法で会計処理することが不可欠です。
もう一つの重要な質問は、なぜ従来のデータベースを使わないのかです。簡単に言えば、データベース内のデータは比較的改ざんしやすいからです。一方、ブロックチェーンは分散型で改変不能かつ透明な会計システムであり、低コストの信頼、すなわち機械による信頼を提供します。この仕組みにより台帳の真正性を保証し、各当事者が公平に利益を得られます。そのためブロックチェーンは自動販売機の台帳に適しています。

これは、構築前に考える4つの質問の一つ、なぜブロックチェーンなのかへの答えです。ブロックチェーンが流行していても、盲目的に追随すべきではありません。既に成熟した技術で解決できる問題も多いからです。アプリにブロックチェーンが不可欠な理由を理解する必要があります。私のプロジェクトでは、信頼問題の解決に改変不能性が必要であり、ブロックチェーンなら容易かつ低コストで実現できます。
2つ目は、アプリのどの部分にブロックチェーンが必要で、どの部分に従来技術を使うべきか、つまり何をオンチェーン、何をオフチェーンにするかです。ブロックチェーンでできることは限られるため、最重要部分に使い、その他は従来の方法で実現します。私の DApp では台帳の改変を防ぐ関連データだけをチェーンに保存し、請求書の生成や関係者への表示はチェーン外で行います。

3つ目は、プロジェクト専用のチェーンを作る必要があるかです。既存チェーン上で開発するか、新しいクロスチェーンを使うかは設計と計画次第です。私の DApp は新規プロジェクトなので、独自チェーンで構築します。
最後は、ウォレットを作る必要があるかです。Forge Framework ではウォレットはアカウントと同義で、チェーン上の活動の開始者にも受領者にもなれます。すべての活動は「トランザクション」と呼ばれ、チェーン上の最小単位です。私は各自動販売機から請求情報をチェーンへ送り、各関係者の台帳に記録したいので、自動販売機と各関係者にウォレットアカウントが必要です。
これらを検討したら DApp をモデル化できます。私の DApp は次の3つで構成されます。
- 請求書の作成
- 請求書の記録
- 請求書の表示
作成では従来の自動販売機システムを模擬してデータを生成します。記録では自動販売機のウォレットから関連データをチェーンへ送ります。最後にチェーンから読み込んだ請求書と各当事者の最終台帳を従来のウェブプラットフォームに表示します。1つ目と3つ目は主にオフチェーン、2つ目の記録はオンチェーンで、今週取り組んだ最も不慣れな部分です。

チェーン上のすべての活動はトランザクションです。ウォレット作成も送金も別種のトランザクションです。トランザクションはトランザクションプロトコルで定義します。Forge Framework にはウォレット作成、送金、交換などが既に定義され、カスタムプロトコルを作成・デプロイするテンプレートもあります。
DApp の要件を満たすため、「aggregate transaction」という新しいプロトコルを作りました。自動販売機がこれを開始すると、商品名、価格、購入時刻、運営者、製造者、供給者、設置場所所有者などの情報をチェーンへ送ります。成功すると情報が記録されるだけでなく、その商品の利益額が各関係者のウォレットアカウントで同時に更新されます。これが私の「aggregate transaction」です。

新しいトランザクションの定義が決まれば、次はプログラミングです。来週は Forge Framework でトランザクションプロトコルを実装し、成果をテストするシミュレーターを作る方法を紹介します。