Skip to content

Commit

Permalink
nip5 finish
Browse files Browse the repository at this point in the history
  • Loading branch information
kehiy committed Aug 24, 2024
1 parent 02c19e8 commit 7adfc4d
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions src/nips/nip-05.rtl.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,36 @@

### کلاینت همیشه باید کلید های عمومی را دنبال کند نه ادرس های نیپ ۵ را

برای نمونه بعد از یافتن نشانی `bob@bob.com` که کلید عمومی `abc...def` را دارد کاربر بر روی دکمه دنبال کردن در آن پروفایل کلیک میکند. کلاینت باید مرجع اولیه و اصلی `abc...def` را نگهدارد و نه نشانی `bob@bob.com` را. اگر بنا به هر دلیلی در اینده ادرس `https://bob.com/.well-known/nostr.json?name=bob` شروع به بازگرداندن کلید عمومی `1d2...e3f`کرد کلاینت نباید در فهرست دنبال شوندگان خود کلید عمومی `abc...def` را برای برای ان کاربر جایگزین کند. (اما باید از نمایش دادن ادرس `bob@bob.com` برای ان کاربر دست نگه دارد زیرا این دیگر به یک ویژگی `"nip05"` نامعتبر تبدیل شده است.)

### کلید عمومی باید در مبنای ۱۶ (hex) باشد

کلید ها باید در مبنای ۱۶ (hex) برگردانده شوند. کلید های NIP-19 در فرمت `npub` برای نمایش در رابط کاربری کلاینت ها به وجود امده اند نه برای استفاده در این نیپ.

### پیشنهاد پیاده سازی کاوش/کشف کاربر

یک کلاینت همچنین میتواند از این استفاده کند تا به کاربر اجازه دهند پروفایل کاربران را جستجو کند. اگر یک کلاینت سرچ باکس ای داشت کاربر میتواند `"bob@bob.com"`را انجا جستجو کند و کلاینت میتواند این را تشخیص دهد و درخواست های لازم برای بدست اوردن کلید عمومی را ایجاد کند و ان را به کاربر پیشنهاد دهد.

### نشان دادن دامنه تنها به عنوان نشانی

کلاینت ها ممکن است شناسه `_@domain` را به عنوان شناسه ریشه در نظر بگیرند. و بخواهند که ان را بصورت `<domain>` نمایش دهند. برای نمونه اگر bob مالک دامنه bob.com است او شاید نخواهد نشانی به صورت `bob@bob.com`داشته باشد زیرا بخشی اضافی دارد. بجای این باب میتواند از شناسه `"_@bob.com"` استفاده کنید و توقع داشته باشد که کلاینت های نوستر از `"bob.com"` برای نمایش استفاده کنند و برای همه استفاده ها از این استفاده کنند.

### دلیل استفاده از ساختار `/.well-known/nostr.json?name=<local-part>`

با افزودن `<local-part>` به صورت یک رشته پرس و جو (query string) بجای بخشی از مسیر ادرس پروتکل میتواند بصورت همزمان از سرور هایی که بصورت پویا و برحسب تقاضا JSON تولید میکنند و هم از سرور هایی که بصورت ایستا JSON ای که شامل چند نام میباشد را داشته باشند پشتبانی کند.

### اجازه دسترسی از برنامه های جاوا اسکریپت

برنامه های نوستر جاوااسکریپتی ممکن است به دلیل سیاست های(https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)[CORS] مرورگر از دسترسی به مسیر `/.well-known/nostr.json` در دامنه کاربر محدود شده باشند. زمانی که جاوااسکریپت به دلیل CORS نمیتواند منبعی را بارگیری کند برنامه ان را خطایی مربوط به شبکه میشناسد میگویید منبع وجود ندارد. پس برنامه نمیتواند به کاربر بگویید که خطا به دلیل مشکل CORS است. برنامه های جاوااسکریپتی نوستر که خطا های مربوط به شبکه در گرفتن فایل موجود در مسیر `/.well-known/nostr.json` بر میخورند میتوانند به کاربر پیشنهاد دهند که سیاست های CORS سرور خود را مورد بررسی قرار دهند. برای نمونه:

```sh
$ curl -sI https://example.com/.well-known/nostr.json?name=bob | grep -i ^Access-Control
Access-Control-Allow-Origin: *
```

کاربر باید مطمن شوند که مسیر `/.well-known/nostr.json` با HTTP header `Access-Control-Allow-Origin: *` سرو میشود تا مطمن باشند که برنامه های جاوااسکریپتی که بر روی مرورگر های به روز اجرا میشوند میتوانند ان را اعتبارسنجی کنند.

### محدودیت های امنیتی

مسیر `/.well-known/nostr.json` نباید هیچ گونه تغییر مسیر HTTP ای را برگرداند.
صدا زنندگان این ادرس باید هرگونه تغییر مسیر مربوط به `/.well-known/nostr.json` را نادیده بگیرند.

0 comments on commit 7adfc4d

Please sign in to comment.