Когда запрос на удаление в Nostr позволяет скрыть сохранённую заметку

Релей доставил подписанный запрос на удаление заметки из локального кеша. Действительная подпись запроса ещё не означает, что его автор вправе удалить указанную заметку.

Сверьте владельца события

В примере имена заменяют уже проверенные идентификаторы и ключи. Первая проверка проходит: цель совпадает. Вторая возвращает false, потому что Боб запрашивает удаление заметки Алисы. Проверьте подписи обоих событий и сравните публичные ключи, прежде чем менять локальное представление.

const saved = { id: "note-A", pubkey: "Alice" };
const request = { kind: 5, pubkey: "Bob", tags: [["e", "note-A"]] };
console.log(request.tags.some(([t,id]) => t === "e" && id === saved.id));
console.log(request.pubkey === saved.pubkey);

Обработайте удаление, пришедшее раньше заметки

В отложенном запросе сохраните и автора, и цель. Когда заметка придёт с другого релея, у клиента будут данные для проверки полномочий. Если цель задана координатой адресуемого события, при выборе версий для удаления учитывайте время запроса. Даже корректный запрос выражает волю автора: ранее выгруженная копия может сохраниться.

github.com NIP-09