IOHKブログ:Cardanoメタデータへの取り組み

トランザクション情報の追加は、企業や開発者にとってパラフルなツール

2020年11月03日 Alan McSherry 読了時間5分

Getting to grips with metadata on Cardano

前回の記事、「Cardanoブロックチェーンに新たな価値とユーティリティをもたらす」では、トランザクションメタデータの概念について述べました。また、これがCardanoがGoguenで分散型金融(DeFi)を運用するユーティリティプラットフォームに進化するうえで、重要である理由も併せて説明しました。

メタデータの使用には多くの可能性があります。これを念頭に置きながら、IOHKは開発者、企業ベースのクライアントの双方がメタデータをアプリケーションに簡単に組み込むことができるように取り組んできました。さらに、ADAユーザーが自分のトランザクションに関する情報を便利に確認できるようにしたいと考えています。

Cardanoでメタデータが機能する仕組み

メタデータはトランザクションの物語を語りますが、この物語とやり取りする方法は多数存在します。開発者は、トランザクションに詳細を直接埋め込むことにより、メタデータを利用できます。また、ADAユーザーは、Cardanoエクスプローラーで特定の情報を検索することができます。データは直接追加することもできますが、大量の場合にはデータのマークル木を作成してそのルートハッシュをブロックチェーンに置くことも可能です。これがいったんなされると、特定の時点でデータが存在したこと、そしてチェーン上に永続的に存在し将来的に参照できることが証明されます。

トランザクションメタデータはブロックチェーン上に保存され、各トランザクションとともに運ばれるという点も重要です。台帳ステータスに記録されるのではなくチェーン上に保存されるという事実は有益です。トランザクションの検証に影響を与えたり、台帳のパフォーマンスに干渉することがないためです。

IOHKのメタデータサービス

IOHKのプロフェッショナルサービスグループ(PSG)はビジネスコンサルティングと技術サービスを提供しています。特にPSGは企業を対象に、分散型台帳技術を使用して対象企業の持つシステムをシームレスかつ便利に統合することにより、ブロックチェーンソリューションの構築、実装を手助けするサービスを展開しています。

メタデータサービスはさまざまなアプリケーションを念頭において開発されていますが、中でも商業アプリケーションを重視しています。

このインターフェイスはウォレットのやり取りを処理し、残高が少なくなるとユーザーに通知し、Dockerコンテナにすべてをロールアップします。こうして、メタデータを直接ウォレットバックエンドAPIに送信する際に生じる複雑性を排除しています。したがってメタデータサービスは、指定されたメタデータと、トランザクションが最終と見なされる前にこれを保存すべきブロック数のみを必要とします。

メタデータのリクエストには以下を含むことができます。

  • 実際のメタデータ: 送信者と受信者のアイデンティティ、コメント、タグ
  • 深さ: メタデータを含むトランザクションが最終と見なされる前にトランザクションが保存されるべきブロック数
  • クライアントのアイデンティティ: 使用するウォレットを指定
  • トランザクションのアイデンティティ: 失敗のためにやり直す際に有効な機能。クライアントは以前に送信されたメタデータを再検証できる

すべての詳細を含んだ後で、メタデータサービスはトランザクションをブロックチェーンに記録します。その後、トランザクション情報はCardanoエクスプローラーで参照可能になります。このため、トランザクションアイデンティティを指定する必要があります。

もう一つの機能は、PSGメタデータサービスを言語中立のプロトコルバッファを使用して指定できることです。これにより、潜在的な用途の幅が広がります。クライアントジェネレーターはPython、Java、Scalaなど多くのプログラミング言語をサポートしているためです。このように使用機会が広がることにより、Cardanoブロックチェーンとの統合プロセスが一層簡単になります。

アクセシビリティが鍵

私たちはCardanoウォレットAPIのScalaおよびJavaクライアントも開発しています。これはAPIへの呼び出しをバンドルし、より多くの開発者が簡単にアクセスできるようにするものです。JavaおよびScala APIと同様に、コマンドラインから基本的なアクセスができるよう、実行可能なjarファイルを提供することもできます。その詳細、および、クライアントがトランザクションの送信やリスト化、ウォレットのメンテナンス、ノードの監視などのタスクを実行できる仕組みは、PSG Cardano wallet API on GitHubを参照してください。

ウォレットとCardano-CLIの使用

メタデータを使用するもう一つの方法は、ウォレットやCardanoコマンドラインインターフェイス(CLI)から直接送信することです。

こうしたプロセスには基本的なコーディング経験と、CardanoノードおよびCLIの実行に慣れている必要があります。メタデータの直接的なやり取りは、Cardano上に分散型アプリケーションを構築する強力な機能へと繋がります。開発者は、自分の好きな方法で、貴重なデータを認証することができるからです。

CardanoウォレットとCLIにおいて、メタデータの構造は鍵から値へのマッピング(key-valueペア)によって定義され、複数の目的の詳細を同じトランザクションに結合します。

  • メタデータ鍵はメタデータ値を示すスキーマ識別子として作用します。鍵は最大64ビットに制限された未署名のインテジャーです。
  • メタデータ値は、インテジャー、文字列、バイト列、リスト、マップからなる単純な用語です。値は構造化する必要があります。これにより、特にスクリプトによる検査と管理が簡易化されます。

これに関連する唯一の追加コストは、トランザクションサイズに追加されるメタデータ分のバイト数による、トランザクションサイズに基づいた手数料への加算分です。

メタデータは簡素なバイナリオブジェクト表現(CBOR)と簡素なデータ定義言語(CDDL)表記を使用して構築できます。詳細情報は、Cardanoウォレットのトランザクションメタデータを参照し、Cardano CLIにおけるトランザクションメタデータスキーマの使用方法をご覧ください。

トランザクションメタデータはCardanoが多機能のスマートコントラクトプラットフォームへ進化するために欠かせないステップです。Goguenのさらなる強化により、スマートコントラクトのトランザクション条件を指定するためにメタデータを追加し、商業的使用や契約締結といった機会への可能性が広がります。ビジネスプロセスにメタデータを組み込むことに関心がある場合は、ご質問、サポートのリクエストなど、enterprise.solutions@iohk.ioまでご気軽にご連絡ください。また、Goguen機能構築の進捗状況に関して、今後もこのブログをフォローしてください。