私の自動販売機 DApp がついに完成!

著者: Yongxin Xu
これまでの 3 本の記事では、利用できるブロックチェーン開発ツールである ArcBlock の Forge Framework、ブロックチェーンプロジェクトを始める前に検討すべき 4 つの質問を紹介しました。また、自動販売機 DApp の着想からモデリング、実際のスマートコントラクトのデプロイまでの過程を共有しました。
4 週間にわたる学習と努力、そして皆さんの注目と励ましを受けて、私の自動販売機 DApp がついに形になりました!この記事では DApp を紹介します。また、このシリーズ最後の記事として、この 1 か月に自分のブロックチェーンプロジェクトを開発した経験も共有します。
まず DApp のモデルを簡単に振り返りましょう。私の dapp は自動販売機の信頼できる台帳で、請求データの作成、記録、表示という 3 つの部分に分かれています。2 番目の記録部分はオンチェーンで、前回紹介した独自定義のスマートコントラクトをデプロイして実現します。請求データの作成と表示は、従来のオフチェーン方式で行います。この 2 つが、直近 2 週間で取り組んできた部分です。

自動販売機 DApp のオフチェーン部分は、Python で実装された次の 3 つの要素で構成されています。
- 請求シミュレーター。初回実行時に、自動販売機と関係者用のウォレットを一定数作成します。次に、商品名、価格、購入時刻などの商品情報と、関係者のウォレットアドレスなどの事業者情報を含む請求データをランダムに生成します。その後、前回デプロイした aggregate transaction を送信し、データをチェーンに記録します。このシミュレーターが、DApp の請求データ作成と記録を担います。

- データベース。sqlite3 で構築したデータベースは、トランザクション送信成功後にチェーンから返される hash 値を含む、チェーン上の全トランザクションデータを同期します。指紋と同じように、各トランザクションのハッシュは一意であり、それを使ってチェーン上のトランザクションを簡単に検証できます。このデータベースは、DApp の 3 番目の部分である請求データ表示用のクライアントプラットフォームを構築しやすくするためのものです。ブロックチェーンのデータ構造は、全ノードのデータの真正性と検証可能性を効率的に保証しますが、高速で複雑なクエリには適していません。そのため、より良いユーザー体験と便利な表示のために、仲介役であるデータベースからデータを取得する必要があります。

- クライアントプラットフォーム。既存の Web アプリケーションフレームワーク Dash で開発し、主に 2 つの機能を備えています。1 つ目は請求データの閲覧です。関係者のアカウント情報、請求明細一覧、総売上、対応する利益配分を確認でき、日付を選んで特定期間の請求情報を抽出できます。2 つ目はデータの可視化です。自動販売機運営者の市場シェア、自動販売機の分布図、各自動販売機の売上と売れ筋商品などを表示します。情報はチェーン上のデータに応じてリアルタイムに更新され、市場データ分析に利用できます。


以上の 3 要素とブロックチェーンが、完全な自動販売機 DApp を構成します。

ここで、「クライアントプラットフォームは依然としてデータベースからデータを取得しており、従来のデータベースには信頼の問題があると言っていた。それなら、このプラットフォームはどうやって信頼問題を解決するのか」と疑問に思うかもしれません。
実際、データベースの利用を決めたとき、私も少しためらいました。しかしその後、DApp の重要な利点を見落としていたことに気づきました。クライアントがデータの真正性を疑ったとき、チェーン上で検証できるのです!
そこで、クライアントの請求明細一覧に各トランザクションのハッシュを表示し、いつでもチェーン上の記録を照会できる Forge web へのリンクを用意しました。オフチェーン構造は既存システムと似ていますが、ブロックチェーンにデータを記録し、その不変性と検証可能性を利用することで、DApp は本質的に高い信頼性を備え、既存システムとは異なるものになります。これはまた、Forge Framework を使えばブロックチェーン技術を既存システムに簡単に組み込み、既存アプリケーションを強化できることも示しています。

初めての dapp を開発して得た経験を共有します。
第一に、初めてのブロックチェーンプロジェクトを無事実現でき、とても興奮しています。大学 1 年になるまでコンピューターサイエンスを学んだことがなく、アプリケーション開発の豊富な経験もありませんでした。そのため DApp のアイデアを思いついたとき、特に一般にはまだ馴染みのない「新しい」ブロックチェーンがテーマだったので、自分の力に少し不安がありました。週ごとの進歩と DApp が徐々に形になる様子を見て、大きな興奮と満足を感じました。
第二に、この 4 週間の開発を通じて、ブロックチェーンは決して神秘的な技術ではないと実感しました。同時に、ArcBlock の Forge Framework を使えば DApp の構築は本当に簡単です。Forge Framework が複雑な基盤技術を解決してくれるため、DApp 開発時にブロックチェーンの背後にある詳細をすべて理解する必要はありません。生活のどんな問題をブロックチェーンで解決できるか、ArcBlock の開発ツールをどう使うかを理解すれば、DApp の構築を始められます。さらに Forge SDK を使えば、数行のコードだけでチェーン上のトランザクションとオンチェーン・オフチェーン間の連携を簡単に実現できます。自動販売機 dapp を開発した今、私も胸を張って DApp 開発者だと言えます!
第三に、ブロックチェーン 3.0 の時代が到来したことを実感しました。ついにブロックチェーンを生活のあらゆる場面へ簡単に応用できるようになりました。今、自動販売機事業の協業における信頼問題を解決するブロックチェーンプロジェクトがあります。近い将来、さまざまな問題を解決し、生活を変えるブロックチェーンアプリケーションが次々と生まれると信じています。
この近い未来を楽しみにしましょう。