Skip to content

Commit

Permalink
nip 5 | notes remained...
Browse files Browse the repository at this point in the history
  • Loading branch information
kehiy committed Aug 23, 2024
1 parent 0fbc136 commit 02c19e8
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 9 deletions.
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- [NIP شماره دو](./nips/nip-02.rtl.md)
- [NIP شماره سه](./nips/nip-03.rtl.md)
- [NIP شماره چهار](./nips/nip-04.rtl.md)
- [NIP شماره پنج](./nips/nip-05.rtl.md)

# نوستر برای توسعه دهندگان

Expand Down
53 changes: 52 additions & 1 deletion src/nips/nip-05.rtl.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,55 @@

در رویداد های گونه ۰ (متادیتا کاربر) یک کلید به نام `nip05` (https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1)[میتواند ادرس شناسه گر اینترنتی] (ادرسی ایمیل مانند) را به عنوان مقدار داشته باشد. هرچند که لینک به مشخصات شناسه گر اینترنتی در بالا وجود دارد اما نیپ ۵ تصور میکند که `<local-part>` به کاراکتر های `a-z0-9-_.` حساس است و حساستی به کوچکی و بزرگی کاراکتر ها ندارد.

با دیدن این ادرس کلاینت ادرس را به دو قسمت `domain` و `<local-part>` تقسیم میکند و از این مقادیر برای ایجاد یک درخواست GET به `https://<domain>/.well-known/nostr.json?name=<local-part>` استفاده میکند.
با دیدن این ادرس کلاینت ادرس را به دو قسمت `domain` و `<local-part>` تقسیم میکند و از این مقادیر برای ایجاد یک درخواست GET به `https://<domain>/.well-known/nostr.json?name=<local-part>` استفاده میکند.

خروجی باید یک شی جیسان با کلید به نام `"names"` داشته باشد که به کلید های عمومی ای در مبنای ۱۶ اشاره کند. اگر کلید عمومی مربوط به `<name>` با کلید عمومی کاربری که این شناسه در رویداد متادیتا او قرارداشته برابر باشد کلاینت میتواند نتیجه بگیرد که کلید عمومی با این شناسه هم میتواند شناخته شود.

## نمونه

اگر کلاینت رویدادی همچون رویداد زیر دید:

```json
{
"pubkey": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9",
"kind": 0,
"content": "{\"name\": \"bob\", \"nip05\": \"[email protected]\"}"
...
}
```

یک درخواست GET به ادرس `https://example.com/.well-known/nostr.json?name=bob` ایجاد میکند و چنین پاسخی میگیرد:

```json
{
"names": {
"bob": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9"
}
}
```

یا به همراه ویژگی رله ها پیشنهاد شده:

```json
{
"names": {
"bob": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9"
},
"relays": {
"b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9": [ "wss://relay.example.com", "wss://relay2.example.com" ]
}
}
```

اگر کلید عمومی با کلید عمومی داده شده در `"names"` برابر بود به این معنا است که وابستگی معتبر است و نشانی نیپ ۵ میتواند نمایش داده شود.

ویژگی رله های پیشنهادی میتواند شامل کلید های عمومی به عنوان کلید و ارایه ای از ادرس رله ها به عنوان مقدار باشد. اگر این مقدار وجود داشت میتواند به کلاینت کمک کند تا بفهمد در کدام رله ها میتواند رویداد های مربوط به کلید عمومی داده شده را پیدا کند. وب سرور هایی که `.well-known/nostr.json` را بصورت پویا اراعه میکنند باید فهرست رله های پیشنهادی را هم در صورت وجود در همان درخواست برگردانند.

## پیدا کردن کاربر ها با استفاده از شناسه نیپ ۵

یک کلاینت ممکن است پشتیبانی از یافتن کاربران با استفاده از شناسه گر اینترنتی را پیاده سازی کند. روند همچون پیش است اما برعکس: نخست کلاینت ادرس well-known را میگیرد سپس از خروجی کلید عمومی کاربر را بدست می اورد و کوشش میکند تا رویداد گونه ۰ کاربر را پیدا کند و بررسی کند که ادرس نیپ ۵ با ادرس نیپ ۵ در رویداد گونه ۰ کاربر برابر است یا نه.

## یادداشت ها

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

9 changes: 1 addition & 8 deletions src/simple-nostr/quick-start-2.rtl.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,6 @@ https://github.com/persianccbook/nips-persian/issues

## نوستر چیست؟

قبل از خوندن این بخش اگر میخواید اشنایی با پروتکل رو کوتاه و سریع یادبگیرید من توییت زیر رو پیشنهاد میدم:

https://x.com/Ali2kCom/status/1608110985314697218


در ادامه ما سعی میکنیم خیلی ساده اما با مثال و کمی مفصل تر نوستر رو توضیح بدیم.

> !نکته: بیشتر موارد توضیح داده شده ممکنه پیچیده بنظر بیاد برای انجام دادن اما در نظر بگیرید که ابزار های زیادی هستن که این کار رو برای شما انجام میدن به سادگی که بعد از درک اولیه معرفی میکنیم.
### شبکه های اجتماعی فعلی
Expand Down Expand Up @@ -89,7 +82,7 @@ https://snort.social/settings/keys

میتونید کلید عمومیتون رو به فایل README گیتهاب این کتاب بیفیزایید و کلید عمومی دوستانی که پیشتر این مطلب رو خوندن و کلیدشون رو اونجا به اشتراک گذاشتن رو پیدا کنید و اونار دنبال کنید:

https://github.com/persianccbook/nips-persian
https://github.com/kehiy/persian-nostr-book

## ادامه

Expand Down

0 comments on commit 02c19e8

Please sign in to comment.