Как извлечь автора из nprofile и отдельно сохранить подсказки о релеях

Контакт прислал nprofile с двумя адресами релеев. Для подписки нужен один ключ автора, а адреса помогут найти события. Передача всей строки nprofile в фильтр авторов может дать пустую ленту.

Прочитайте тип поля после декодирования Bech32

Декодером NIP-19 проверьте контрольную сумму и получите двоичные данные. В nprofile поле типа ноль содержит 32-байтный открытый ключ, а поле типа один — подсказку о релее. Пример для Node.js показывает одну запись «тип, длина, значение» после декодирования. Он выводит тип, длину и ключ в шестнадцатеричной записи.

const key = Buffer.alloc(32, 0xab);
const value = Buffer.concat([Buffer.from([0,32]), key]);
console.log(value[0], value[1], value.subarray(2).toString("hex"));

Соберите фильтр, независимый от адреса релея

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

github.com NIP-19