NIP-90はData Vending Machines(DVMs)を定義し、有料の計算処理をNostr上で依頼し、受け取るためのprotocolです。

仕組み

customerは5000-5999 rangeのjob request eventを公開します。各requestには、1つ以上のinput用i tag、job固有設定のparam tag、期待するformatを示すoutput tag、bid ceiling、reply先relay hintを含められます。service providerは、対応する6000-6999 rangeのresult kindで応答し、kind番号はrequestより常に1000大きくなります。

resultには、元のrequest、customer pubkey、optionalなamount tagやinvoiceが含まれます。providerはpayment-requiredprocessingpartialerrorsuccessといったkind 7000 feedback eventも送れます。これによりclientは、最終resultが届く前に進捗を表示できます。

PaymentとPrivacy

protocolはbusiness logicを意図的に開いたままにしています。providerは、作業開始前、sample返却後、または完全なresult配信後に支払いを求められます。この柔軟さは、DVM jobが安価なtext transformから高価なGPU workまで幅広いため重要です。

customerがprivate inputを望む場合、iparam dataを暗号化したcontentへ移し、providerのp tagとencrypted tagでmarkできます。これによりpromptやsource materialをrelay observerから守れますが、その代わり特定providerを指名する必要があり、open market requestにはなりません。

相互運用メモ

NIP-90は、input type jobを持つi tagによるjob chainingもサポートします。あるresultを次のrequestの入力へ流せるため、別のorchestration layerを設けなくてもmulti-step flowを組めます。

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


主要ソース:

言及箇所:

関連項目: