Nautilus による公開(パブリッシュ)
Pontus-X の分散型データエコノミーでは、データ・アプリケーション・サービスを公開することが、エコシステムを豊かにするうえで欠かせません。自らのアセットを利用可能にすることで、ネットワーク全体の価値と有用性に貢献できます。本章では、アセットの作成と設定を簡潔にする Nautilus のインターフェースを用いた公開の手順を解説します。
公開とは
Pontus-X における公開とは、アセットを標準化された方法で記述し、カタログに表示され、マーケットプレイスで提供され、他者に販売できる状態にすることです。分散型識別子ドキュメント(DDO)の構築は複雑になりがちですが、Nautilus は AssetBuilder と ServiceBuilder という 2 つの主要なビルダークラスで、この作業を簡潔にします。
AssetBuilder でアセットのメタデータを作る
Nautilus の AssetBuilder クラスは、アセットのメタデータの構築を支援します。次の手順でメタデータを設定し、構築します。
-
セットアップと初期化: まず
AssetBuilderのインスタンスを作成します。import { AssetBuilder } from '@deltadao/nautilus' const assetBuilder = new AssetBuilder() -
メタデータを設定する: ビルダーパターンを用いて、種別・名称・説明・作成者といったアセットのメタデータを設定します。
assetBuilder .setType('dataset') .setName('My New Asset') .setDescription('This is a publish asset building test using Nautilus') .setAuthor('Company Ltd.') -
アセットを構築する:
build()メソッドを呼び出して設定を確定します。公開できる状態に正しく構成されたアセットが返ります。const asset = assetBuilder.build()
ServiceBuilder でサービスを定義する
ここまででアセットにはメタデータが備わりましたが、実際に機能させるにはサービスの定義が必要です。ServiceBuilder クラスを使うと、アセットへのアクセス方法や操作方法を指定できます。
-
ServiceBuilder を用意する: 適切なサービス種別とファイル種別を指定して
ServiceBuilderを初期化します。import { UrlFile, FileTypes, ServiceTypes, ServiceBuilder } from '@deltadao/nautilus' const serviceBuilder = new ServiceBuilder({ serviceType: ServiceTypes.ACCESS, fileType: FileTypes.URL }) -
ファイルを宣言する: 公開したいファイルを定義します。この例では、HTTP の GET リクエストでアセットにアクセスします。
const urlFile = { type: 'url', url: 'https://link.to/my/asset', method: 'GET' }
-
メタデータとファイルを追加してサービスを構築する: ビルダーパターンで必要なメタデータとファイルを追加し、サービスを構築します。
const service = serviceBuilder .setServiceEndpoint('https://provider.dev.pontus-x.eu') .setTimeout(0) .addFile(urlFile) .setPricing({ type: 'free' }) .build()
アセットを公開する
アセットのメタデータとサービスを組み合わせ、Nautilus のインターフェースで公開します。
-
アセットにサービスを追加する: 構成済みのサービスをアセットに追加します。
const assetWithService = assetBuilder.addService(service).build() -
アセットを公開する:
nautilus.publish関数を使い、選択したネットワーク上にアセットを記録します。const result = await nautilus.publish(assetWithService)
サンプルコード
Nautilus を使った公開の一連の流れを示す完全な例です。
import { Nautilus, AssetBuilder, ServiceBuilder, UrlFile, FileTypes, ServiceTypes } from '@deltadao/nautilus'
import { providers, Wallet } from 'ethers'
const provider = new providers.JsonRpcProvider('https://rpc.dev.pontux-x.eu')
const signer = new Wallet('0x...', provider)
// Nautilus インスタンスを作成する
const nautilus = await Nautilus.create(signer)
// AssetBuilder を用意する
const assetBuilder = new AssetBuilder()
.setType('dataset')
.setName('My New Asset')
.setDescription('This is a publish asset building test using Nautilus')
.setAuthor('Company Ltd.')
// ServiceBuilder を用意する
const serviceBuilder = new ServiceBuilder({
serviceType: ServiceTypes.ACCESS,
fileType: FileTypes.URL
})
const urlFile = {
type: 'url',
url: 'https://link.to/my/asset',
method: 'GET'
}
const service = serviceBuilder
.setServiceEndpoint('https://provider.dev.pontus-x.eu')
.setTimeout(0)
.addFile(urlFile)
.setPricing({
type: 'free'
})
.build()
// アセットにサービスを追加して構築する
const assetWithService = assetBuilder.addService(service).build()
// アセットを公開する
const result = await nautilus.publish(assetWithService)さらに詳しく
詳細な情報と高度な設定については、次の資料を参照してください。
- AssetBuilder — API ドキュメント
- ServiceBuilder — API ドキュメント
- ConsumerParameterBuilder — API ドキュメント
- nautilus.publish() — API ドキュメント
- 公開の例 — コードサンプル
まとめ
Pontus-X エコシステムでのデータ・アプリケーション・サービスの公開は、Nautilus によって簡潔になり、分散技術に不慣れな方でも取り組めます。本ガイドの手順に従えば、アセットを効率よく公開し、データエコノミーに貢献し、Pontus-X エコシステムの力を最大限に活かせます。