Nautilus による Compute-to-Data
Compute-to-Data(CtD)は、データを非公開のまま保ちながら、そこから価値を生み出す仕組みです。Pontus-X エコシステムでは、Nautilus が計算ジョブの開始と管理のための compute 関数を提供します。本章では、新しい計算ジョブの開始、状態の監視、結果の取得までを解説します。
Compute-to-Data とは
Compute-to-Data は、データを外部にさらすことなく分析を可能にします。この機能は、価値ある知見を引き出しつつ、データのプライバシーとセキュリティを保つうえで欠かせません。
新しい計算ジョブを開始する
Nautilus での計算ジョブの開始は簡潔です。基本的な設定に必要なのは、データセットとアルゴリズムそれぞれの識別子だけです。
-
セットアップと初期化:まず環境を用意し、Nautilus のインスタンスを作成します。
import { Nautilus } 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) -
データセットとアルゴリズムを指定する:データセットとアルゴリズムの DID(分散型識別子)をそれぞれ指定します。
const dataset = { did: 'did:op:123abc...' } const algorithm = { did: 'did:op:456def...' }
-
計算ジョブを開始する:
nautilus.compute()関数で計算ジョブを開始します。const computeJob = await nautilus.compute({ dataset, algorithm }) -
ジョブ ID を保存する: 後で参照できるようジョブ ID を保存します。
const { jobId } = computeJob
計算ジョブの状態を監視する
計算ジョブへの参照を得たら、getComputeStatus() 関数でその状態を確認できます。
-
計算ジョブの状態を取得する: ジョブ ID と Provider の URI を使って、計算ジョブの状態を取得します。
const computeJobStatus = await nautilus.getComputeStatus({ jobId, // 先ほど取り出した jobId を使います providerUri: 'https://v4.provider.oceanprotocol.com/' })
計算ジョブの結果を取得する
計算ジョブが完了したら、getComputeResult 関数で結果にアクセスできます。
-
計算ジョブの結果を取得する: 計算結果を取得するための URL を得ます。
const computeResultUrl = await nautilus.getComputeResult({ jobId, // 先ほど保存した jobId を使います providerUri // 上で説明した Provider を指定します }) -
データを取得する: 発行されたワンタイム URL を使ってデータを取得します。
const data = computeResultUrl && await fetch(computeResultUrl)
サンプルコード
Nautilus を使った Compute-to-Data の一連の流れを示す完全な例です。
import { Nautilus } 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)
// データセットとアルゴリズムを指定する
const dataset = {
did: 'did:op:123abc...'
}
const algorithm = {
did: 'did:op:456def...'
}
// 計算ジョブを開始する
const computeJob = await nautilus.compute({
dataset,
algorithm
})
// ジョブ ID を保存する
const { jobId } = computeJob
// 計算ジョブの状態を取得する
const computeJobStatus = await nautilus.getComputeStatus({
jobId,
providerUri: 'https://v4.provider.oceanprotocol.com/'
})
// 計算ジョブの結果を取得する
const computeResultUrl = await nautilus.getComputeResult({
jobId,
providerUri
})
// データを取得する
const data = computeResultUrl && await fetch(computeResultUrl)さらに詳しく
計算関連の API とその機能を詳しく知るには、次の資料を参照してください。
- nautilus.compute() — API ドキュメント全文
- nautilus.getComputeStatus() — API ドキュメント全文
- nautilus.getComputeResult() — API ドキュメント全文
- 計算処理の例 — コードサンプル
まとめ
Pontus-X エコシステムにおける Compute-to-Data は、データのプライバシーを保ったまま価値ある知見を引き出す、安全で秘匿性の高いデータ分析を可能にします。本ガイドの手順に従えば、Nautilus のインターフェースを通じて計算ジョブを効率よく開始・監視・取得し、Pontus-X の力を最大限に活かせます。