ブログ > 2021 > October > Plutusアプリケーションバックエンド(PAB):CardanoのDApp開発をサポート

Plutusアプリケーションバックエンド(PAB):CardanoのDApp開発をサポート

DAppの作成、本番環境デプロイ前にテストを実行できるコンポーネントと環境を開発者に提供

2021年 10月 28日 Fernando Sanchez 9 分で読めます

Plutusアプリケーションバックエンド(PAB):CardanoのDApp開発をサポート

AlonzoプロトコルへのアップグレードでPlutusが導入されました。これは、Cardanoでスマートコントラクトをサポートするために必要なインフラとツールとともに、ネイティブのスマートコントラクト言語を提供するプラットフォームです。Plutusプラットフォームにより、開発者は分散型台帳とやり取りするスクリプト機能を使って、分散型アプリケーション(DApp)を作成することが可能になります。

Plutusを理解するためには、3つのコンセプトを理解することが必要です。

  • 未使用トランザクションアウトプット(EUTXO)モデル
  • Plutus Core(プルータスコア) - Plutusのオンチェーン部分
  • Plutusアプリケーションフレームワーク(PAF) - Plutusコントラクトはブロックチェーンで実行される部分(オンチェーンコード)とユーザーのコンピューターで実行される部分(オフチェーンコードまたはクライアントコード)で構成される

オンチェーンコードもオフチェーンコードもHaskellで書かれており、Plutusスマートコントラクトは実質的にHaskellプログラムです。

Plutusアプリケーションバックエンドとは何か

以前のブログ記事では、Plutusのコアコンポーネントのオンチェーンとオフチェーン機能について詳細に解説しました。ここでは、Plutusアプリケーションバックエンド(PAB)を取り上げ、Plutusのオフチェーン機能を掘り下げます。

UTXOモデルには、アプリを動かすトランザクションを構築するオフチェーンインフラストラクチャーがあります。このオフチェーンインフラは非常に複雑です。これは、台帳ステータスに注目し、台帳から必要な情報を取得し、適切なデータを使ってトランザクションを構築するために、すべてをまとめて適切な場所に入れる必要があるためです。PABは、このオフチェーンインフラとオンチェーンスクリプトの作成を簡易化する単一のHaskellライブラリーです。

PABは2つの方法で、UTXOトランザクションの構築を支援します。

  • リードパス(read path) - チェーンから情報を取得し、ブロックチェーンで発生するイベントに反応します。リードパスは現在テストネットで稼働しています
  • ライトパス(write path) - Plutusスクリプトを実行するトランザクションを実際に構築する場です

PABの役割

PABはPlutusアプリケーションフレームワーク(PAF)の主要コンポーネントで、開発者がDAppを作成し、本番環境にデプロイする前にローカルでテストすることを可能にします。Marlowe Playgroundが開発者に金融スマートコントラクトを作成、テストするサンドボックスを提供するように、PABは開発者にDApp全体を作成、テストする環境を提供します。

PABは、ライフサイクルにわたりアプリケーションインスタンスの要求を管理および処理するための、オフチェーンのバックエンドサービスです。これには、外部クライアント(ウォレットフロントエンドなど)とのやり取りが含まれ、Plutusアプリケーション、ノード、ウォレットバックエンド、エンドユーザー間の仲介役を務めます。このようなやり取りは、DAppのシミュレーションや統合を便利に実行できるPABコマンドと疑似コンポーネントによって可能となっています。

PABはDAppの作成または実装の必須条件ではありませんが(自分でツールを作成する開発者もいますし、実際にコミュニティによるAPIベースの代替品の取り組みは進行中です)、PABにより開発者はチェーンインデックスなどのインフラを一から構築する必要がなくなるため、必要な時間とリソースを削減できます。開発者は、アプリケーションがオンチェーンでどのように動作するかシミュレーションにより事前にテストし、エラーを排除することにより、スムーズに公開へと移行することができます。

PABの目的は以下となります。

  • Plutusアプリケーションを実行するための標準環境を提供する
  • 外部クライアントに発見可能なインターフェイスを提示する
  • スマートコントラクトに使用するオンチェーン情報を追跡する
  • 開発者のために、エミュレートされた環境、またはされていない環境での作業を可能にする

PABはエミュレートされた環境とされていない(リアルネットワーク)環境をシームレスに切り替えることができます。これにより、ユニットテストや統合テスト、プロパティベースのテストなど、あらゆるタイプのテストを作成しやすくなります。PABはメッセージの受信や配信が可能なため、DAppは容易に通信することができます。したがって、DAppはPABが公開した、特定のスマートコントラクトが処理できるアクションおよび操作に対応するエンドポイントに、通常のリクエストを送信することができます。

フレームワークのライブラリーを使用してデプロイされたアプリケーションはPABで実行することができ、ここではブロックチェーンにアクセスするランタイムサポートが提供されます。ここでさらに、EUTXOモデルベースのトランザクションのトリガーとなるスマートコントラクトの操作が実行されます。また、PABには持続性、ログ、監視のための機能が備わっています。

現状

この夏の初めに、CardanoにPlutusスマートコントラクトのコア機能を導入するための、カラーコード化された一連のテストネットリリースが始まりました。これはAlonzoハードフォークを介してメインネットにデプロイされました。スマートコントラクト機能は現在コマンドラインインターフェイス(CLI)でアクセスできます。9月初めにメインネットで最初の単純なスマートコントラクトが可能になった頃、メインネットへDAppをデプロイする道もまた初期段階を迎えました。

開発者はその間ローカルでDAppに取り組み(多くがPAB経由で)、テストネットでスマートコントラクトのコア機能をテストしていました。これらの要素は、DAppがメインネットに移る前にまとめる必要があり、これには時間がかかります。PABがノードや、ウォレットバックエンド(WBE)コネクターなど他のコアコンポーネントと統合されれば、開発者は自分のDAppを準備完了状態とし、メインネットでの公開前にテストネットへアップすることができます。

ローカルで構築されたこれらの初期アプリケーションは、その後メインネットと意図したとおりにやり取りすることができるようになります。ここまでの開発に対する「モックチェーン」アプローチは、DApp作成者にとってテストネットからメインネットへのスムーズな移行を意味します。必要なことは、PABを始めるようコンフィグファイルに変更を加えることのみで、実際のコードやHaskellコードの変更は必要ありません。この統合作業は複雑で、Cardanoインフラの重要な部分です。したがって、正しく実行されるよう確認する必要があります。現在最終の統合作業を続けており、現在の進行状況からは、今後重大な不具合が生じない限り、11月半ば頃の統合配信を見込んでいます。

今後の展望

これは始まりに過ぎません。通常どおり、プロセスはイテレーションとなります。Plutusプラットフォームの進化に伴い、開発者コミュニティには自分のツールをデプロイし、自分のDAppをCardanoで実行するためのオフチェーンコードを作成することが奨励されます。すでに、AlonzoテストネットプログラムおよびProject Catalystの両方を通じて、この領域でさまざまな活動が見受けられます。私たちはプラットフォームを社内のエンジニアやQA、そして開発者コミュニティとテストしながら、徐々に改良を続け、機能を追加していきます。その最終目的は、AlonzoハードフォークとPlutusスマートコントラクト到来から、すでに急成長を遂げている才能あふれるエコシステムをサポートする新たなツール、API、環境による開発者エクスペリエンスの急速なスケーリングを達成することです。

*定期的な更新情報は、Twitterをフォローし、YouTubeチャネルを登録してください。#BuildingOnCardanoプロジェクトの概要は、Essential Cardanoリポジトリをご覧ください。

Fernando Sanchez

Fernando Sanchez

Senior Technical Writer

Marketing and Communications