Skip to content

Nautilus による Compute-to-Data

Compute-to-Data(CtD)は、データを非公開のまま保ちながら、そこから価値を生み出す仕組みです。Pontus-X エコシステムでは、Nautilus が計算ジョブの開始と管理のための compute 関数を提供します。本章では、新しい計算ジョブの開始、状態の監視、結果の取得までを解説します。

Compute-to-Data とは

Compute-to-Data は、データを外部にさらすことなく分析を可能にします。この機能は、価値ある知見を引き出しつつ、データのプライバシーとセキュリティを保つうえで欠かせません。

新しい計算ジョブを開始する

Nautilus での計算ジョブの開始は簡潔です。基本的な設定に必要なのは、データセットとアルゴリズムそれぞれの識別子だけです。

  1. セットアップと初期化:まず環境を用意し、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)
  2. データセットとアルゴリズムを指定する:データセットとアルゴリズムの DID(分散型識別子)をそれぞれ指定します。

    const dataset = {
        did: 'did:op:123abc...'
    }
    const algorithm = {
        did: 'did:op:456def...'
    }
  1. 計算ジョブを開始する: nautilus.compute() 関数で計算ジョブを開始します。

    const computeJob = await nautilus.compute({
        dataset,
        algorithm
    })
  2. ジョブ ID を保存する: 後で参照できるようジョブ ID を保存します。

    const { jobId } = computeJob

計算ジョブの状態を監視する

計算ジョブへの参照を得たら、getComputeStatus() 関数でその状態を確認できます。

  1. 計算ジョブの状態を取得する: ジョブ ID と Provider の URI を使って、計算ジョブの状態を取得します。

    const computeJobStatus = await nautilus.getComputeStatus({
      jobId, // 先ほど取り出した jobId を使います
      providerUri: 'https://v4.provider.oceanprotocol.com/'
    })

計算ジョブの結果を取得する

計算ジョブが完了したら、getComputeResult 関数で結果にアクセスできます。

  1. 計算ジョブの結果を取得する: 計算結果を取得するための URL を得ます。

    const computeResultUrl = await nautilus.getComputeResult({
      jobId, // 先ほど保存した jobId を使います
      providerUri // 上で説明した Provider を指定します
    })
  2. データを取得する: 発行されたワンタイム 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 とその機能を詳しく知るには、次の資料を参照してください。

まとめ

Pontus-X エコシステムにおける Compute-to-Data は、データのプライバシーを保ったまま価値ある知見を引き出す、安全で秘匿性の高いデータ分析を可能にします。本ガイドの手順に従えば、Nautilus のインターフェースを通じて計算ジョブを効率よく開始・監視・取得し、Pontus-X の力を最大限に活かせます。