From ea7d2957e2af190726c16eaa40daeaf2920c4019 Mon Sep 17 00:00:00 2001 From: arthurfranca Date: Fri, 8 Mar 2024 16:08:48 -0300 Subject: [PATCH] add Shared Account --- 260.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 260.md diff --git a/260.md b/260.md new file mode 100644 index 0000000..2d956c6 --- /dev/null +++ b/260.md @@ -0,0 +1,85 @@ +NIP-260 +======= + +Shared Account +-------------- + +`draft` `optional` + +This NIP introduces a standard way to share account signing privileges without revealing its privkey. +It uses time-released delegation events to get around the irrevocability property of [NIP-26](26.md) delegation tokens. + +### "Share Account Access" Feature + +The `delegator` user should be able to inform the `delegatee`'s `pubkey` to the client through a "Share Account Access" feature. + +The `delegator`s client then pre-generates a set of "Delegation Delivery" events to be released on their `write` relays by a "cron-like" (scheduler) service at each event's `.created_at` moments. + +Each of these events holds one NIP-26 `delegation token` and a corresponding `condition string` covering a *very narrow* `created_at>A&created_at", + "tags": [ + [ + "delegation_delivery", + "kind=1&created_at>1702711000&created_at<1702721800", + "6f44d7...e5f524" + ], + ["p", ""], + ["k", "1"], + ["expiration", "1702721800"] + ], + "content": "", + "created_at": 1702711000 // future time when the delegation starts to count + // ...other fields +} +``` + +### Relay Support + +A relay may act as a scheduler service by allowing the publishing of `kind:1026` events with future `.created_at` +values while also never sending such events with future timestamps to users other than the author. + +### Use Cases + +- Enable employees to publish `kind:1` events on behalf of an enterprise account. +`Delegatees` should publish to the `delegator` relays. +Reading client's interface should display the `delegator` as the delegated `kind:1` events' author +(e.g.: show just the `delegator`'s avatar picture); + +- Enable employees to publish `DM`s on behalf of an enterprise account. +`Delegatees` should publish to their own relays. +Reading client's interface should display the `delegatee` (**not the delegator**) +as the author of the delegated `DM` events and indicate it is speaking +on the company/`delegator`'s behalf (e.g.: show both accounts' avatar pictures).