From 142cb8d655d411628517b44a1cbafdc8c1fbcc68 Mon Sep 17 00:00:00 2001 From: starbuilder <101296187+starbackr-dev@users.noreply.github.com> Date: Sun, 15 Oct 2023 10:44:07 -0400 Subject: [PATCH 1/5] Update 90.md Added optional Encryption to params and payload if the user require the input and output to be a secret. --- 90.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/90.md b/90.md index 4c0eff6a..7de34fc9 100644 --- a/90.md +++ b/90.md @@ -67,6 +67,37 @@ All tags are optional. * `relays`: List of relays where Service Providers SHOULD publish responses to * `p`: Service Providers the customer is interested in. Other SPs MIGHT still choose to process the job +## Encrypted Params + +If the user wants to keep the input parameters a secret, they can encrypt the `i` and `param` tags with the service provider's 'p' tag and add it to the content field. The user also indicates whether the output should be encrypted or not as one of the parameters. + +```json +[ + [ "i", "what is the capital of France? ", "prompt" ], + [ "param", "model", "LLaMA-2" ], + [ "param", "max_tokens", "512" ], + [ "param", "temperature", "0.5" ], + [ "param", "top-k", "50" ], + [ "param", "top-p", "0.7" ], + [ "param", "frequency_penalty", "1" ], + [ "param", "output", "encrypted"] +] + +``` + +This param data will be encrypted and added to the `content` field and `p` tag should be present + +``` +"content": "BE2Y4xvS6HIY7TozIgbEl3sAHkdZoXyLRRkZv4fLPh3R7LtviLKAJM5qpkC7D6VtMbgIt4iNcMpLtpo...", + "tags": [ + [`p`, `04f74530a6ede6b24731b976b8e78fb449ea61f40ff10e3d869a3030c4edc91f`] + + ] + + +``` + + ## Job result (`kind:6000-6999`) Service providers publish job results, providing the output of the job result. They should tag the original job request event id as well as the customer's pubkey. @@ -110,6 +141,8 @@ Service providers can give feedback about a job back to the customer. * `amount` tag: as defined in the [Job Result](#job-result) section. * `status` tag: Service Providers SHOULD indicate what this feedback status refers to. [Appendix 1](#appendix-1-job-feedback-status) defines status. Extra human-readable information can be added as an extra argument. +* NOTE: If the input params requires input to be encryped, then `content` field will have encrypted payload with `p` tag as key. + ### Job feedback status | status | description | @@ -168,4 +201,4 @@ Service Providers MAY use NIP-89 announcements to advertise their support for jo } ``` -Customers can use NIP-89 to see what service providers their follows use. \ No newline at end of file +Customers can use NIP-89 to see what service providers their follows use. From 9f4a4cf9d2f0a626fc2a341cff6d7f66d73c12e4 Mon Sep 17 00:00:00 2001 From: starbuilder <101296187+starbackr-dev@users.noreply.github.com> Date: Sun, 15 Oct 2023 14:59:13 -0400 Subject: [PATCH 2/5] Update 90.md changed `prompt` to 'text` --- 90.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/90.md b/90.md index 7de34fc9..a55d4915 100644 --- a/90.md +++ b/90.md @@ -73,7 +73,7 @@ If the user wants to keep the input parameters a secret, they can encrypt the `i ```json [ - [ "i", "what is the capital of France? ", "prompt" ], + [ "i", "what is the capital of France? ", "text" ], [ "param", "model", "LLaMA-2" ], [ "param", "max_tokens", "512" ], [ "param", "temperature", "0.5" ], From c2020929fbbcd667caa8ac67b706844512d19d7c Mon Sep 17 00:00:00 2001 From: starbuilder <101296187+starbackr-dev@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:56:24 -0500 Subject: [PATCH 3/5] Update 90.md updated based on Pablo's feedback. --- 90.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/90.md b/90.md index a55d4915..0ac4b981 100644 --- a/90.md +++ b/90.md @@ -79,8 +79,8 @@ If the user wants to keep the input parameters a secret, they can encrypt the `i [ "param", "temperature", "0.5" ], [ "param", "top-k", "50" ], [ "param", "top-p", "0.7" ], - [ "param", "frequency_penalty", "1" ], - [ "param", "output", "encrypted"] + [ "param", "frequency_penalty", "1" ] + ] ``` @@ -90,8 +90,8 @@ This param data will be encrypted and added to the `content` field and `p` tag s ``` "content": "BE2Y4xvS6HIY7TozIgbEl3sAHkdZoXyLRRkZv4fLPh3R7LtviLKAJM5qpkC7D6VtMbgIt4iNcMpLtpo...", "tags": [ - [`p`, `04f74530a6ede6b24731b976b8e78fb449ea61f40ff10e3d869a3030c4edc91f`] - + [`p`, `04f74530a6ede6b24731b976b8e78fb449ea61f40ff10e3d869a3030c4edc91f`], + [ `param`, `encrypted`, true] ] @@ -121,6 +121,10 @@ Service providers publish job results, providing the output of the job result. T * `amount`: millisats that the Service Provider is requesting to be paid. An optional third value can be a bolt11 invoice. * `i`: The original input(s) specified in the request. +## Encrypted Output + +If the request has encrypted params, then output should be encrypted and placed in `content` field with `p` tag. If the output is encrypted, then avoid including `i` tag with input-data as clear text. + ## Job feedback Service providers can give feedback about a job back to the customer. From 56dbb7722c3d1a2c759277391960f41ba6948dcd Mon Sep 17 00:00:00 2001 From: starbuilder <101296187+starbackr-dev@users.noreply.github.com> Date: Mon, 6 Nov 2023 16:31:37 -0500 Subject: [PATCH 4/5] Update 90.md changed and added [`encrypted`] to both 5xxx and 6xxx events --- 90.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/90.md b/90.md index 0ac4b981..24da99c0 100644 --- a/90.md +++ b/90.md @@ -91,7 +91,7 @@ This param data will be encrypted and added to the `content` field and `p` tag s "content": "BE2Y4xvS6HIY7TozIgbEl3sAHkdZoXyLRRkZv4fLPh3R7LtviLKAJM5qpkC7D6VtMbgIt4iNcMpLtpo...", "tags": [ [`p`, `04f74530a6ede6b24731b976b8e78fb449ea61f40ff10e3d869a3030c4edc91f`], - [ `param`, `encrypted`, true] + [`encrypted`] ] @@ -124,6 +124,23 @@ Service providers publish job results, providing the output of the job result. T ## Encrypted Output If the request has encrypted params, then output should be encrypted and placed in `content` field with `p` tag. If the output is encrypted, then avoid including `i` tag with input-data as clear text. +Add a tag encrypted to mark the output content as `encrypted` +```json +{ + "pubkey": "", + "content": "", + "kind": 6xxx, + "tags": [ + [ "request", "" ], + [ "e", "", "" ], + [ "p", "" ], + [ "amount", "requested-payment-amount", "" ], + [`encrypted`] + + ] +} +``` + ## Job feedback Service providers can give feedback about a job back to the customer. From 7e3b7cd90c6e5c4ccba94b58231312aaac421551 Mon Sep 17 00:00:00 2001 From: starbuilder <101296187+starbackr-dev@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:22:50 -0500 Subject: [PATCH 5/5] Update 90.md updated based on comments --- 90.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/90.md b/90.md index 24da99c0..8394c383 100644 --- a/90.md +++ b/90.md @@ -69,7 +69,7 @@ All tags are optional. ## Encrypted Params -If the user wants to keep the input parameters a secret, they can encrypt the `i` and `param` tags with the service provider's 'p' tag and add it to the content field. The user also indicates whether the output should be encrypted or not as one of the parameters. +If the user wants to keep the input parameters a secret, they can encrypt the `i` and `param` tags with the service provider's 'p' tag and add it to the content field. Add a tag `encrypted` as tags. Encryption for private tags will use [NIP-04 - Encrypted Direct Message encryption](https://github.com/nostr-protocol/nips/blob/master/04.md), using the user's private and service provider's public key for the shared secret ```json [ @@ -90,8 +90,8 @@ This param data will be encrypted and added to the `content` field and `p` tag s ``` "content": "BE2Y4xvS6HIY7TozIgbEl3sAHkdZoXyLRRkZv4fLPh3R7LtviLKAJM5qpkC7D6VtMbgIt4iNcMpLtpo...", "tags": [ - [`p`, `04f74530a6ede6b24731b976b8e78fb449ea61f40ff10e3d869a3030c4edc91f`], - [`encrypted`] + ["p", "04f74530a6ede6b24731b976b8e78fb449ea61f40ff10e3d869a3030c4edc91f"], + ["encrypted"] ] @@ -123,7 +123,7 @@ Service providers publish job results, providing the output of the job result. T ## Encrypted Output -If the request has encrypted params, then output should be encrypted and placed in `content` field with `p` tag. If the output is encrypted, then avoid including `i` tag with input-data as clear text. +If the request has encrypted params, then output should be encrypted and placed in `content` field. If the output is encrypted, then avoid including `i` tag with input-data as clear text. Add a tag encrypted to mark the output content as `encrypted` ```json { @@ -135,7 +135,7 @@ Add a tag encrypted to mark the output content as `encrypted` [ "e", "", "" ], [ "p", "" ], [ "amount", "requested-payment-amount", "" ], - [`encrypted`] + ["encrypted"] ] }