NIP-90は、Data Vending Machines(DVMs)を定義します。これは、Nostr上で有料の計算処理をリクエストし、配信するためのプロトコルです。

仕組み

customerは5000-5999範囲のjob request eventを公開します。各requestには、1つ以上の入力用iタグ、job固有設定用のparamタグ、期待する出力形式を示すoutputタグ、上限価格を示すbid、reply先を示すrelay hintを含められます。service providerは、対応する6000-6999範囲のresult kindで応答し、kind番号は常にrequestより1000高くなります。

resultには、元request、customerのpubkey、任意でamountタグやinvoiceが含まれます。providerはさらに、payment-requiredprocessingpartialerrorsuccessのようなkind 7000 feedback eventも送れます。これによりclientは、最終結果が届く前に進捗を表示できます。

PaymentとPrivacy

このプロトコルは、business logicを意図的に開いたままにしています。providerは、作業前、sample返却後、または完全結果の配信後に支払いを求められます。この柔軟性は重要です。DVMのjobは、軽いtext変換から高価なGPU処理まで幅広く、providerごとに許容できる支払いリスクが異なるからです。

customerがprivate inputを望む場合、requestはiparam dataを暗号化したcontentへ移し、providerのpタグとともにencryptedタグを付けられます。これによりpromptやsource materialはrelay observerから保護されますが、その代わりcustomerはopen market requestではなく特定providerを指名しなければなりません。

相互運用メモ

NIP-90は、入力タイプjobを持つiタグによるjob chainingをサポートします。これにより、あるresultを次のrequestの入力として流し込めるため、別のorchestration layerを発明しなくても多段処理が可能になります。

provider discovery自体はrequest/response loopの外にあります。仕様は、対応job kindをadvertiseする方法としてNIP-89: Recommended Application Handlersを参照しており、clientはrequestを公開する前にそれを使ってvendorを見つけられます。


Primary sources:

Mentioned in:

See also: