NEROChainコミュニティに参加して、今後の情報をお待ちください!
使い始めるNero dAppのアーキテクチャ

dAppのアーキテクチャ

NEROチェーンのアーキテクチャを理解することで、その独自機能を活用し、革新的なアプリケーションと新しいユーザー体験を構築する方法が見えてきます。この概要では、アカウント抽象化、Paymaster機能、その他主要な機能を可能にする各コンポーネントがどのように連携しているかを説明します。

分散型アプリケーション(dApp)内で複数のコンポーネントが一体となり、堅牢で安全かつ効率的なブロックチェーン運用を実現しています。各コンポーネントを詳しく見ていきましょう。

NERO Chain dApp Architecture

図1:NEROチェーンのdAppアーキテクチャ

主要コンポーネントとトランザクションの流れ

ユーザーおよび認証レイヤー

NEROチェーンのユーザー体験の基礎となるのは、初心者からWeb3ユーザーまで対応した柔軟な認証メカニズムです。

AAウォレット(スマートコントラクトウォレット)は、多様な認証方法を同時にサポートする柔軟なウォレットで、ユーザーがブロックチェーン機能と対話する際の中心となります。従来のウォレットが秘密鍵のみに依存するのに対し、NEROチェーンのAAウォレットは、MetaMaskのような馴染みある第三者ウォレット、GoogleやTwitterログインなどの実用的なWeb2認証、さらには従来のパスワードベースの認証でもアクセス可能です。専門的なユーザーにセキュリティと柔軟性を提供しつつ、一般ユーザーに対しても参入障壁を大きく取り除くことが可能になります。

Aa-platform policies

図2:ソーシャルログインの例

ユーザーはスマートフォンでソーシャルログインを使用してAAウォレットを設定し、同じオンチェーンのアイデンティティや資産をPCのMetaMaskなどでも利用可能です。

アプリケーションコンポーネント

アプリケーションレイヤーは、ユーザーとブロックチェーン間を繋ぐ役割を果たし、複数の統合されたコンポーネントを特徴としています。

ウォレットSDK は、他のWeb3アプリケーションでも使用可能であり、トランザクション構築や提出の難しい作業を処理し、AAウォレットと分散型アプリケーションの間を繋ぎます。このSDKを使用してNEROチェーンにデプロイされたAAウォレットファクトリーからウォレットを取得します。

NEROチェーン上に構築された分散型アプリケーションは、このアーキテクチャを利用してシームレスなフロントエンドのインタラクションを提供できます。DEX、NFTマーケットプレイス、ゲーミングプラットフォームなど、どのようなアプリを開発する場合でも、ウォレットSDKを通じてユーザーに快適な体験を提供できます。

Developer SDK(UserOpSDK) は開発者がアカウント抽象化機能をアプリケーションに統合するために必要なツールを提供します。UserOperationの構築、EntryPointコントラクトとの連携、Paymasterの利用方法をカバーしています。

Paymaster API を活用することで、dAppはガス代のスポンサーや代替支払い手段を利用できます。ユーザーがトランザクションを開始すると、Paymaster APIに問い合わせを行い、適切な支払い方法を探してUserOperationに必要な情報を組み込めます。

バックエンドインフラ

ユーザー向けコンポーネントの背後には、NEROチェーンの独自機能を支える堅牢なインフラがあります。

  • AAプラットフォーム はPaymaster設定を行い、トークンによるガス支払いの許可、使用量のモニタリングなどを行うダッシュボードです。
  • 価格サービス はERC20トークンとガス料金間の為替レートを算定し、公正な料金計算を支援します。
  • Bundlers は複数ユーザーのUserOperationを収集し、標準的なトランザクションにバッチ処理して効率化します。
  • Paymasterコントラクト は実際のガス料金抽象化を担い、スポンサーシップの判断やトークンベースの支払い処理を行います。
  • EntryPointコントラクト(アドレス: 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789)はすべてのUserOperationの中心的なハブとして機能し、Bundlerから送信された操作を処理します。
  • 各ユーザーの Contract Account はスマートコントラクトウォレットであり、アカウントファクトリー経由でデプロイされ、マルチシグ、支出制限、アカウントリカバリー機能などを追加可能です。
  • 高度な用途として、オプショナルな Aggregator は署名の集約を処理し、マルチシグ操作を効率化します。

次のセクションでは、トランザクションの詳細な流れを説明します。

トランザクションフロー

接続フェーズ

ユーザーがdAppに接続することでプロセスが始まります。この初期接続では、ユーザーのブラウザとブロックチェーン間の通信チャネルが確立されます。この段階で、ユーザーは好みの方法(MetaMask、ソーシャルログイン、パスワードなど)で認証を行い、dAppはユーザーのAAウォレットアドレスを特定します。ウォレットがまだデプロイされていない場合はカウンターファクチュアル(未実体化)アドレスが使用されます。

UserOperation構築フェーズ

接続後、トランザクションの準備プロセスが始まります。ユーザーがトークン交換やNFTミントなどの操作を開始すると、dAppは直接またはDeveloper SDKを通じてUserOperationを構築します。従来のトランザクションとは異なり、UserOperationにはアカウント抽象化に必要な追加フィールドが含まれます。

ガス抽象化が必要な場合、Developer SDKはPaymaster APIと通信し、支払い方法を決定します。トークンベースの支払いの場合、価格サービスは現在の為替レートと推定ガス消費量に基づいて必要なトークン量を計算します。Paymaster APIはその後、ガス処理に必要なすべての情報を含むpaymasterAndDataフィールドを返します。

このモジュラーなアプローチにより、開発者はアプリケーションの主要ロジックを変更せずに柔軟な支払いオプションを提供できます。ユーザーはネイティブトークンを特別に取得せずとも、すでに持っているトークンで支払いが可能です。

トランザクション提出フェーズ

UserOperationが構築され署名されると、提出プロセスが始まります。dAppは完成したUserOperationをウォレットSDKに送信し、ウォレットSDKはユーザーとの対話を通じて署名を取得します。この署名プロセスは、MetaMaskのポップアップまたはアプリ内の署名要求など、認証方法に応じて異なります。

署名完了後、AAウォレットはUserOperationをBundlersに送信します。Bundlersは複数ユーザーの操作を収集し、ガスの使用を最適化して効率を高めます。操作をバッチ処理することで、Bundlersは1操作あたりのコストを大幅に削減できます。

実行フェーズ

Bundlerが十分な操作を収集するか、一定の時間閾値に達すると、最終段階が行われます。BundlerはUserOperationsをまとめてEntryPointコントラクトを呼び出すトランザクションを作成し、EntryPointは各操作を順次処理します。

各操作に対して、EntryPointは署名を検証し、ガス要件が満たされていることを確認します(ユーザーのウォレット残高またはPaymaster経由)。その後、ユーザーのContract Accountを呼び出し、実際のトランザクションロジックを実行します。Paymasterが関与している場合、設定された戦略に基づいてガスの支払いを処理します。

このマルチステッププロセスはユーザーには透明で、最終的には通常のトランザクションと同様に処理・確認されますが、より柔軟でコスト効率の高い方法となります。

管理コンポーネント

開発者はAAプラットフォームを通じてガススポンサーシップのポリシーを管理できます。ここでは支払い戦略の設定、日次またはユーザーごとのクォータ設定、使用パターンの監視が可能です。この管理レイヤーにより、経済的に持続可能で優れたユーザー体験を提供できます。

Aa-platform policies

図3:AAプラットフォームのポリシー設定ダッシュボード

また、NEROオペレーターはプラットフォームレベルの設定にアクセスでき、全体的なシステムの健全性管理や公平なリソース配分を確保できます。

Paymasterの支払いタイプとユーザー体験

Paymasterシステムは、NEROチェーンの最も革新的な機能の1つであり、柔軟なガス支払いメカニズムを実現し、ユーザー体験を大幅に向上させます。ここでは、異なる支払いタイプとその影響について説明します。

タイプ0:開発者スポンサー型ガス(無料)

タイプ0の支払いでは、開発者がユーザーのガス代を完全にカバーします。これにより、ユーザーはWeb2アプリケーションと同じように、トランザクション手数料を気にする必要がなくなり、シームレスな体験を得ることができます。

このモデルは、特に新規ユーザーのオンボーディングに適しています。通常、新しいユーザーが特定のトークンを取得する必要があると、参入障壁が高くなります。しかし、最初のインタラクション時にガス代を開発者が負担することで、スムーズにアプリケーションを利用できるようになります。

また、プロモーションキャンペーンにも適しており、一時的にトランザクションコストをゼロにすることでユーザーの関心を集めることができます。特に、ゲームやメタバースアプリケーションでは、ブロックチェーンの複雑さを隠し、ユーザーがガス管理ではなくゲームプレイに集中できる環境を作るのに役立ちます。

タイプ0の支払いを実装するには、開発者はAAプラットフォームアカウントに一定の残高を維持し、日次またはユーザーごとの制限を設定してコストを管理します。プラットフォームは、ユーザーの行動やコンバージョン指標を基にスポンサー戦略を最適化するための分析機能を提供します。

タイプ1:ERC20トークン前払い

タイプ1の支払いモデルでは、ユーザーがNEROトークンを保有する必要なく、すでに所有しているERC20トークンを使用してガス料金を支払うことができます。これにより、特に独自のトークンエコシステムを持つアプリケーションにおいて、採用障壁が大幅に低下します。

このモデルでは、トランザクションの実行前に推定されるガス代(選択されたトークンでの換算額)をユーザーから徴収します。トランザクション完了後、余剰分が自動的にユーザーに返金されます。

この方法は、ユーザーと開発者の双方にとってメリットがあります。ユーザーは最大の支払額を事前に把握でき、開発者は実行前に支払いが確定しているため、リスクを最小限に抑えることができます。特に、ガス代が全体のトランザクション価値のごく一部である高額取引に適しています。

このモデルの実装には、ユーザーがPaymasterコントラクトにトークン使用許可を与える必要があります。これは通常、ウォレットSDKを通じて適切なUIガイド付きで処理されます。

タイプ2:ERC20トークン後払い

タイプ2の支払いモデルでもERC20トークンが使用されますが、ガス料金の徴収はトランザクション実行後に行われます。これにより、ユーザーは実際に消費したガス量のみを支払うことができ、事前に推定額を用意する必要がなくなります。

特に、コントラクトの実行パスによってガスコストが大きく変動する可能性があるトランザクションにおいて、このアプローチは非常に便利です。しかし、このモデルでは、トランザクション完了後にユーザーのトークン残高や許可が不足していると、支払いが失敗するリスクが発生します。

このモデルは、ユーザーが他の目的で一定量のトークンを保有しているアプリケーションと統合することで、支払い失敗リスクを最小限に抑えることができます。

高度なアプリケーションの構築

NEROチェーンのアーキテクチャを活用することで、これまでにないアプリケーションを開発できます。以下は、その一例です。

トークン中心のエコシステム: ユーザーがアプリケーションのトークンでガスを支払えるようにすることで、トークンエコノミー内で完結するシステムを構築できます。これにより、トークンの実用性と需要が向上し、ユーザー体験もシンプルになります。

摩擦のないオンボーディング: 最初は開発者がガスをスポンサーし、ユーザーがアプリに慣れた後にトークンでの支払いに移行することで、Web3特有の「暗号資産の取得」という障壁を取り除くことができます。

バンドルトランザクション: ユーザーが1回の操作で複数のアクションを実行できるようにすることで(例:トークンスワップと承認、NFTの一括ミント)、コスト削減とUXの向上を実現します。

高度なセキュリティ機能: マルチシグ承認、支出制限、タイムロックなどの機能を簡単に実装できます。スマートコントラクトウォレットを活用することで、従来のEOAよりも強固なセキュリティを提供できます。

ソーシャルリカバリーシステム: 信頼できる友人やサービスプロバイダーを通じたアカウント回復メカニズムを実装できます。これにより、秘密鍵の紛失による資産喪失のリスクを軽減できます。

サブスクリプションモデル: 従来のサブスクリプション型アプリと同様に、定期的な支払いを自動処理できます。Paymasterは、これらの事前承認されたトランザクションのガス代を処理できます。

NEROチェーンの機能を十分に理解し活用することで、ブロックチェーンのセキュリティと所有権のメリットを活かしつつ、従来のUXの課題を克服したアプリケーションを開発できます。

次のセクションでは、これらのコンポーネントをアプリケーションに実装する具体的な方法を解説します。