前書き#
筆者は 2018 年初頭にブロックチェーン業界に入り、パブリックチェーン、取引所の現物 / レバレッジ / 先物取引業務、オンチェーン DeFi プロトコルや DApp などの開発に参加し、さまざまなエコシステムの開発者コミュニティの構築や、開発者向けのコースの準備にも従事してきました。この過程で多くの開発者と接触し、彼らのほとんどは Web2 のスキル経験を持っていますが、Web3 のソフトウェア開発については十分な認識がありません。自分自身の Web3 分野での発展の道筋を振り返ると、大部分はランダムウォークであり、正のフィードバックを得られない探索でした。インターネットエンジニアから独立して DApp を構築できる開発者に変わるまでの過程は、長く曲がりくねったものでした。もちろん、これはブロックチェーン技術が徐々に成熟していく過程であることも理解しています。2018 年に DApp アプリケーションを構築するための比較的明確な知識構造を持つことは現実的ではありませんでした。
ブロックチェーン技術は近年急速に発展していますが、開発者にとっては情報の分散や市場のノイズの影響により、学習のハードルは下がっていません。特にこの 2 年間、筆者は DApp 開発やプロジェクトの投資研究に多くのエネルギーを注いできたため、その感覚はより顕著になっています。そのため、このシリーズの記事を書くアイデアが生まれました。
インターネットからブロックチェーンへの転換を望む方や、ブロックチェーン業界で探索を続けている開発者の皆さんに、これらの記事が役立つことを願っています。
説明#
本シリーズの記事は、開発者が既存のソフトウェア開発技術スタックを利用して分散型アプリケーション(DApp)を構築するのを構造化された方法で支援することを目的としています。この記事の対象読者は、基本的な Web 開発スキルを持っているか、任意のプログラミング言語に精通している必要があります。ソフトウェア開発の背景がない場合は、まずソフトウェア開発の基礎スキルを学ぶか、1 つのプログラミング言語を習得してから本シリーズの記事を読み始めることをお勧めします。
この記事は、読者が以下のいずれかの能力を持っていることを前提としています。
- バックエンドエンジニア
- フロントエンドエンジニア
- ブロックチェーンに不慣れなフルスタックエンジニア
- ソフトウェアアーキテクチャ師
この記事は、DApp の発展段階と Web2 アプリケーションとの共通点と相違点を理解するのに役立つことを目的としています。
DApp の発展のいくつかの段階#
その前に、DAppとは何かを知っておく必要があります。DApp は、分散型ネットワーク上で動作するアプリケーションであり、スマートコントラクトとクライアントの形式でサービスを提供します。
ビットコインの誕生以来、アプリケーションとプロトコルの相互促進と進化により、さまざまな DApp の形態が生まれました。この過程で、さまざまなタイプの DApp 開発の波が現れました。筆者は 2018 年からブロックチェーン業界に関心を持ち、アプリケーション層とプロトコル層に注目してきました。ブロックチェーン業界の発展を目の当たりにすることができました。
DApp の発展は、いくつかの段階を経てきました。
- ビットコインのフォーク改善の波(2013〜2018)—— ライトコインやビットコインキャッシュをはじめとするビットコインのフォークが、ブロックチェーンアプリケーションの初めての繁栄をもたらしました。これらのアプリケーションは、より良い分散型通貨やより優れたブロックチェーンパラメータに留まっており、技術やアプリケーション層の革新はほとんど見られませんでした。市場の関心は、主にマイニングコミュニティの利益配分、マイニングハードウェアの改善、技術的主張に集中していました。この物語は、2018 年にビットコインキャッシュが BCH とBSVにフォークした後、徐々に人々の視野から消えていきました。
- イーサリアムのスマートコントラクト標準と中央集権型取引所の台頭(2017〜2019)—— イーサリアムの登場により、スマートコントラクト技術はビットコインに比べて大規模に適用されるようになりました。ERC-20標準の確立により、デジタル通貨取引所が主要なアプリケーションの主要な形態として確立され、ブロックチェーンアプリケーションの初期の収益モデルも明確になりました。投資 / 投機の需要がピークに達しました。
- 分散型金融(DeFi) の萌芽と分散型自律組織(DAO) ツール(2018〜現在)—— ブロックチェーンはここで止まることはなく、オンチェーンのAMMメカニズムがBancorとUniswapによって発展し、多くの DAO 組織の先駆者が低コードの設定方法で迅速にオンチェーン DAO 組織を立ち上げることを試みました。AragonやDAOHausをはじめとする DAO プラットフォームは、より多くの DAO 組織の形態を生み出し、ブロックチェーンガバナンスの思想の普及を加速しました。
- マルチチェーン / クロスチェーンとLayer2および新世代のスマートコントラクトプラットフォームの登場(Flow、Near、Solana)—— クロスチェーンアプリケーションの基盤を築き、楽観的ロールアップの拡張もアプリケーションにシフトしました(Arbitrum、Optimism)。これにより、Web3 の成長空間に対する人々の想像力が広がりました。マルチチェーンとクロスチェーンは、多くのサービスと革新を生み出しました。例えば、クロスチェーンブリッジ、クロスチェーンの流動性集約などです。新世代のスマートコントラクトプラットフォームは、開発者により多くの選択肢を提供しました。
- オンチェーンデータ分析の集約(2019〜現在)—— より多くのオンチェーンユーザーが流入するにつれて、オンチェーンデータも爆発的に増加し、データ分析と集約のシーンが現れました。The GraphやChainLinkなどのデータサービスミドルウェアの採用率が加速し、これらは DeFi やオンチェーンアプリケーションの体験を大幅に向上させ、DApp の発展をさらに促進しました。同時に、InfuraやAlchemyなど、より多くの ToD および ToB の開発者サービスプラットフォームが生まれ、DApp の開発体験をさらに向上させました。一方、ユーザー向けのデータ分析製品であるDuneやNansenも強力な成長を遂げました。分散型ストレージサービスであるIPFSやArweaveなども広く採用されています。
- NFTとGameFi(2021〜現在)—— 2021 年は NFT が爆発した年であり、前述のインフラとアプリケーションの発展に伴い、より豊富な資産カテゴリーと、より低いハードルの標準化された NFT 開発プロセスが生まれ、PFPタイプの資産や暗号アートのアプリケーション形態が生まれました。Axie InfinityはX to Earnの物語を引き起こし、これらはERC-721やERC-1155の基盤の上に構築されています。NFT の繁栄はOpenSeaなどのオンチェーン NFT 取引プラットフォームを実現しました。
- 分散型アイデンティティ(Decentralized identifiers - DID)と Web3 ソーシャル(2021〜現在)—— ユーザーデータとクロスチェーンのシーンが増加するにつれて、ユーザーのオンチェーンデータは徐々に増加し、異なるチェーンに分散しています。ユーザーのオンチェーンデータの集約とオンチェーンアイデンティティがますます重要になり、BrightId、Proof of humanなどのアプリケーションプロトコルが生まれました。分散型ドメイン(ENS)[https://ens.domains/] の採用率の向上に伴い、DID と Web3 ソーシャルを支援しています。LensやCyberConnectをはじめとするアプリケーションが Web3 ソーシャルのトラックに注目を集めています。
- Web2.5 とメタバース Metaverse(2022〜現在)—— 2021 年と 2022 年に Web3 の影響力が広がる中、従来のインターネット巨人たちも新たな成長を求めています。Facebook をはじめとするインターネット企業はメタバースを受け入れ始め、Nike、Adidas、Starbucks などの巨大ブランドもブロックチェーンを既存のビジネスモデルに統合する試みを始めています。これを Web2.5 のアプリケーションタイプと呼びます。さらに、より多くのチームが拡張現実 - AR/仮想現実 - VR/人工知能 - AIなどの技術とブロックチェーンを組み合わせ、新しいブロックチェーンアプリケーションのパラダイムを探求しています。
ブロックチェーンアプリケーションの発展は、進化の木のようなものであり、時間の経過とともにビットコインから枝分かれし、オープンソースコミュニティの推進により繁栄しています。これにより、DApp 開発のトレンド、技術プロトコルの進化、アプリケーションシーンの需要が相互に関連していることがわかります。
DApp アプリケーション開発のトレンド#
ブロックチェーンの初期段階では、DApp に関連する技術スタックや概念は普及しておらず、すべてが手探りの状態でした。Web3 アプリケーション開発者は、多くの問題に直面しています。例えば、急な学習曲線、基盤施設の不完全さ、契約標準の不統一、ビジネスモデルの不明確さなどです。Web2 では非常に簡単で合理的に見える多くのニーズが、ブロックチェーンの技術スタックでは実現が難しいことが多いです。技術の違いを除けば、開発者はまずソフトウェア開発の基盤施設を整えなければ、いくつかのアプリケーションシーンの開発を完了することができません。これにより、開発者は一定のアーキテクチャ能力を持ち、ブロックチェーンの基盤に対する深い理解が必要です。
オープンソースコミュニティの努力により、インターネットの発展経路と Web2 の成熟したソフトウェアプロセスを参考にし、ブロックチェーンアプリケーションの研究開発のトレンドも明確になりました。コミュニティの長期的な反復と進化を経て、新しいアプリケーションシーンが現れ、新しいプロトコルと標準が生まれ、新しいプロトコルと標準がアプリケーションの革新を促進しています。新しい基盤施設と開発ツールの豊富さに伴い、アプリケーションの研究開発のハードルは徐々に下がっています。新世代のスマートコントラクトプラットフォームとプロトコルミドルウェアが登場し、これらの製品は開発者の体験を向上させることを最優先の目標とし、既存のプロトコルと製品に基づいて DApp の繁栄を推進しています。
開発者にとって、ブロックチェーンアプリケーション開発のトレンドは以下の通りです。
- 技術的ハードルが徐々に下がる
- ビジネスハードルが徐々に上がる
技術的な観点から見ると、オープンソースの技術チュートリアルやドキュメントが豊富であり、少し努力すれば DApp 開発に取り組むことができます。既存のツール、ミドルウェア、サービスは非常に使いやすく安定しています。各エコシステムには開発者の導入プロセスも整っています。開発者が分散型アプリケーションを構築する難易度は継続的に下がっています。
ビジネスの観点から見ると、ブロックチェーンは現在非常に初期の段階にあり、インターネット業界に比べて技術は成熟していません。ほとんどの起業家は探索の中で進んでおり、その周期性が非常に強いため、インターネット業界の成熟したビジネスモデルを確立することは非常に難しいです。ましてや安定した顧客獲得チャネルやコントロール可能な顧客獲得コストを確立することはできません。多くのビジネスは長期的な正の外部収入をもたらさず、DApp に基づく起業リスクは非常に高いです。
もちろん、高リスクは高リターンを意味します。長期的に見れば、ブロックチェーンにはまだ大きな発展の余地があります。
では、どのような DApp が未来のキラーアプリケーションになるのでしょうか?筆者も引き続き考え、まとめています。また、今後の記事で皆さんが分析するのを助けるつもりです。現段階では、DApp を開発するために必要な知識とスキルの蓄積にもっと注目すべきです。
DApp の特徴#
したがって、DApp 開発に従事したり、DApp 開発を始めたりしたいエンジニアは、Web3 のビジネスと Web2 の共通点や相違点を明確に理解する必要があります。一方では、スムーズにスキルの移行を完了し、認識の変換の難易度を下げるのに役立ち、もう一方では、どの難点を明確にし、問題が発生する可能性を避けるのに役立ちます。
オープンで透明性がある
DApp の主要なロジックはスマートコントラクトによって実行され、コアのビジネスデータもスマートコントラクトに保存されます。これらの契約とビジネスデータはすべて公開されており、第三者によって検索可能です。これにより、プラットフォームとデータの独占を主要な競争力とするビジネスは優位性を失い、アプリケーションの組み合わせ可能性の基盤が提供されます。
資産指向
DApp のコアは資産であり、すべてのビジネスとインタラクションのロジックは資産を中心に展開されます。データは資産の変化に伴って生成されます。同時に、資産は DApp とユーザーのインタラクションの媒介として機能し、権利、債務、証明書などの役割を果たします。
組み合わせ可能性
オープンソースのコードと公開データがあることで、DApp は他の開発者によって呼び出され、統合される能力を持ちます。標準的なオンチェーンインターフェースに基づいて、契約同士も相互に呼び出すことができるため、DApp はレゴブロックのような組み合わせ能力を持ちます。同様に、DApp 内の標準化された資産もアプリケーションを超えて使用できます。
取引駆動
この特性はブロックチェーンの技術的特徴によって決まります。アカウントモデルに基づくスマートコントラクトブロックチェーンでは、すべてのオンチェーン状態の変更は、プライベートキーによって署名された取引によって開始される必要があります。スマートコントラクトは自動的に実行または呼び出すことができず、ブロックチェーンはデータの一貫性と有効性を確保するために、すべての取引の合法性を暗号学的に保証する必要があります。これにより、分散型データの一貫性が達成されます。
イベント駆動
DApp にとって、ユーザーがアプリケーションを使用するプロセスを考える際に取引駆動の方法を採用せざるを得ませんが、ユーザーの検索体験を向上させるためには豊富なアプリケーションデータが必要です。ブロックチェーンは最新のグローバル状態のみを保持し、プロセスデータは異なるブロックに分散しており、チェーン上に保存されないこともあります。ブロックチェーンは複雑なリレーショナルクエリをサポートしておらず、オフチェーンのデータインデックスサービスを利用する必要があります。データクエリの正確性を確保するために、取引を単位としてプロセスデータをインデックス化する必要があります。ここでは、DApp 開発の過程で取引中に生成されるイベントタイプと関連するイベントパラメータを定義する必要があります。オフチェーンのキャッシュサービスを利用してプロセスデータをキャッシュし、クライアントのクエリに供給します。
従来の Web アプリケーションとの共通点#
ここでは Web2 のソフトウェア開発に多くの共通点があります。
クライアントとサーバーのアーキテクチャ
アプリケーションのモデルを単純に見ると、コアのバックエンドサービスがスマートコントラクトに置き換えられ、データがブロックチェーンに保存される以外は、他のすべては従来のインターネット技術スタックを利用して実現できます。
例えば、クライアントの技術スタック、キャッシュサービスのインデックスクエリ、CND 加速、モバイルクライアントなどは、成熟したインターネットソリューションを借用できます。
クライアントとブロックチェーンは同様に TCP/IP プロトコルに基づいて通信しており、一部のブロックチェーンやノードサービスプロバイダーは REST タイプのクエリインターフェースとプロトコルもサポートしており、開発者がクライアントとサーバー間のデータインタラクションを完了するのを容易にしています。
アプリケーションのインタラクションプロセス
優れた DApp も優れた使用体験が必要です。多くの DApp がブロックチェーンの複雑さを封じ込め、ユーザーに美しい製品インターフェースと便利なブロックチェーンインタラクション体験を提供できるようになっています。データインデックスサービスを利用することで、インターネット製品に匹敵するインタラクション体験を実現できます。これには、専門的な製品デザインとインタラクションデザインの努力が必要であり、製品の使いやすさを向上させ、ユーザーと Web3 の間のギャップを埋めることが求められます。
ソフトウェア開発プロセス
同様に、ソフトウェア開発とプロセス管理のベストプラクティスは依然として適用されます。市場評価、要件レビュー、技術アーキテクチャ設計、ユースケース設計、ソフトウェアの反復方法、単体テストなどのプロセスも不可欠です。大規模なアプリケーションでも小規模なアプリケーションでも、これらの重要なプロセスを経て、DApp をゼロから一にするプロセスをより良く完了することができます。
従来の Web アプリケーションとの違い#
では、DApp と従来の Web2 アプリケーションの具体的な違いはどこにあるのでしょうか?まず、Web3 DApp のより詳細なアーキテクチャ図を見てみましょう。
ここでの内容は準備段階では詳しく述べませんが、今後の記事で議論します。
Web2 の開発プロセスに精通し、いくつかの開発経験を持っているなら、あなたはすでに半分の DApp 開発者です。DApp をより良く開発するためには、思考の変換が必要です。
- サービスの承認から署名の検証へ
- データ中心から資産中心へ
- 閉鎖から組み合わせ可能性へ
- 効率重視から安全重視へ
サービスの承認から署名の検証へ
インターネット製品で一般的に使用される HTTP プロトコルはステートレスであり、各リクエストは独立して存在し、クッキーやセッション、または HTTP ヘッダーの追加情報を通じてユーザーのアイデンティティを識別し、認証を行います。
ここでの認証方法は主に中央集権的であり、各サービス自身によって決定され、完全に統一された標準は存在しません。しかし、DApp では認証が署名の検証に変わり、デジタル署名を通じてユーザーの権限認証を行います。すべてが暗号アルゴリズムに基づいており、安全性が向上する一方で、適用性も増しています。
データ中心から資産中心へ
インターネットプラットフォームとアプリケーションの観点から見ると、データの重要性は言うまでもありません。ユーザーデータの独占と競争は決して止まることがありません。プラットフォーム内のデータは、インターネット広告の収益化ロジックの核心的な生産資料となり、ユーザーは自分のデータを「所有」していません。DApp では所有権が最上位にあり、データと資産の境界が曖昧になり、資産がアプリケーションのコアとしての地位を強調します。ユーザーの権益データやビジネスデータは、しばしば資産の形でアプリケーションに反映され、多くの DApp サービスはユーザー資産を主要なリソースとして扱い、資産に基づいてビジネスやサービスを展開します。
閉鎖から組み合わせ可能性へ
従来のインターネットの競争優位性は、閉鎖システムと膨大なデータに依存していますが、DApp は逆の方向に進み、オンチェーンの公開データと標準資産に基づいて、DApp は組み合わせ可能な基盤を持っています。アプリケーション開発者は、他のアプリケーションやプロトコルの資産をビジネスの基盤として統合することができ、便利な SDK を提供して第三者が自社アプリケーションの資産を統合できるようにします。標準化された方法で資産を発行することで、アプリケーションも組み合わせ可能性を持つようになります。
効率重視から安全重視へ
中央集権的なシステムは、分散型の合意問題を考慮する必要がないため、データを自由にロールバックしたり、ビジネスロジックを更新したりできます。しかし、スマートコントラクトに基づくアプリケーションは、データをロールバックすることも、大規模なビジネス更新を行うこともできません。すべては資産の安全性の観点から考慮されており、分散化と引き換えに効率が犠牲にされています。DApp 開発者は、設計の初期段階からスマートコントラクトの拡張性と互換性を考慮し、ビジネスの解耦設計を行い、頻繁に更新されないロジックと更新される可能性のあるロジックを契約で分割する必要があります。ビジネスとユーザー資産は密接に関連しているため、スマートコントラクトの権限や発生する可能性のあるセキュリティの脆弱性にも注意を払う必要があります。ブロックチェーンアプリケーションの発展の歴史を振り返ると、セキュリティの脆弱性とユーザーの損失の全過程が見えてきます。アプリケーション開発者として、私たちは常に警戒を怠らず、先人の経験から学び、資産ロジックを扱う際には慎重に行動し、可能な限り単体テストとコード監査を行い、セキュリティリスクを最小限に抑える必要があります。
まとめ#
本シリーズの第一篇の記事として、ブロックチェーン DApp の発展と特徴を概観し、DApp とインターネットアプリケーションのいくつかの類似点と相違点を整理しました。これにより、開発者が DApp 構築のための思考の準備を行うのに役立ちます。あなたがプロダクトマネージャーであれ、開発者であれ、これらの概念と理解に基づいて、アプリケーションの設計と開発をより効率的に行えるようになるでしょう。
今後の記事では、具体的な実際のプロジェクトケースを通じて、DApp が構想から設計、開発、ローンチに至る過程を説明し、DApp がどのようにゼロから一に構築されるのかをより直感的に理解できるようにします。