شبکه توزیع شده جمی

اتصال

جامی به یک شبکه توزیع شده (توتوریال) متکی است که مزایای مختلفی را در مقایسه با شبکه های فدرال دارد:

  • هيچ نقطه اي از شکست نيست

  • مقاومت بیشتری نسبت به سانسور،

  • به هیچ چیز جز کاربران خود وابسته نیست،

  • اعتماد بین گره ها لازم نیست.

![ شبکه-تپو](https://git.jami.net/savoirfairelinux/jami-project/uploads/9b725e440c2705a2a3c4d0a3df092066/ شبکه-تپو.png)

این شبکه یک جدول هش توزیع شده (DHT) را تشکیل می دهد

مشکل اصلی سیستم های ارتباطی توزیع شده اتصال همسالانه است، جامی آن را از طریق دو عنصر انجام می دهد:

  • خبرنامه هاي رمزنگاري شده در DHT

  • استفاده از پروتکل های استاندارد برای سوراخ زدن NAT

جامی بر روی دو شبکه توزیع شده ساخته شده است:

  • شبکه kademlia OpenDHT برای ارائه تاسیس اتصال توزیع شده و توزیع پیام ها

  • بلاکچین JamiNS برای ارائه ثبت نام نام توزیع شده.

شبکه OpenDHT

برای اطلاعات بیشتر در مورد OpenDHT، که یک فروشگاه داده های کلیدی توزیع شده برای تاسیس اتصال (با ICE) و توزیع پیام در Jami را فراهم می کند، [https://github.com/savoirfairelinux/opendht>] را ببینید.

یک شبکه OpenDHT می تواند با دانستن هر گره ای که قبلاً به شبکه متصل شده است، به آن متصل شود. این گره سپس دانش خود را در مورد سایر گره های شبکه به اشتراک می گذارد.

مشتری های Jami از یک حافظه کش گره ثابت برای اتصال مجدد به شبکه پس از یک جلسه اول استفاده می کنند. یک گره "bootstrap" قابل تنظیم، شناخته شده و پایدار برای اتصال اول استفاده می شود یا اگر گره های ذخیره شده پاسخ نمی دهند.

در حال حاضر، مشتریان Jami bootstrap.jami.net:4222 را به عنوان یک گره bootstrap پیش فرض (تعداد پذیر) و یک شبکه ID 0 (شبکه OpenDHT عمومی پیش فرض) استفاده می کنند.

مشارکت در شبکه OpenDHT

هر حساب جمی یک گره OpenDHT را اجرا می کند، به شبکه کمک می کند و اجازه می دهد جمی مقیاس بندی کند.

کاربران Jami می توانند با اجرای یک گره OpenDHT پایدار خود و پیکربندی آن به عنوان یک گره بوتسترپ در Jami، با کمک به بهبود ثبات، ثبات و انعطاف پذیری برای هر کاربر شبکه OpenDHT عمومی، استقلال کامل داشته باشند.

یک گره مستقل می تواند با استفاده از [dhtnode utility] (https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode) که با OpenDHT همراه است اجرا شود. dhtnode هیچ داده ای را حفظ نمی کند و دارای محدودیت ذخیره سازی پیش فرض حافظه 8 میگا با است.

گره های DHT پایدار اداره شده توسط جامعه به درخواست مالک آنها به لیست بوترپ پیش فرض اضافه می شود، زیرا بیشتر گره های بوترپ به معنای یک شبکه مستقل و انعطاف پذیرتر است.

بلاکچین JamiNS

بلاکچین JamiNS تجربی است و انتظار می رود معماری آن تکامل یابد.

مشتریان Jami لندهای بلاکچین را خودشان اجرا نمی کنند بلکه با استفاده از HTTP برای ثبت نام نام و جستجو با یک API REST با سرور JamiNS ارتباط برقرار می کنند. این به این دلیل است که منابع مورد نیاز برای اجرای یک لنډه بلاکچین برای اکثر کاربران نهایی بیش از حد بالا است.

نام سرور می تواند توسط حساب در Jami پیکربندی شود، اجازه می دهد تا مشتریان Jami را به دایرکتوری های مختلف کاربر متمرکز یا کمتر متصل کند.

مشارکت در بلاکچین JamiNS

سرویس نام جامی پیش فرض ns.jami.net است که توسط Savoir-faire Linux ارائه می شود و به یک گره بلاکچین Ethereum متصل است. هدف این است که به همه امکان (اگر آنها چنین باشند) امکان اجرای گره بلاکچین خود و خدمات HTTP را فراهم کند، برخی از Ether را استخراج کند و از آن برای پرداخت هزینه معاملات مورد نیاز برای ثبت نام نام کاربر خود در Jami استفاده کند.

کد قرارداد اتریوم، فایل اصلی بلاکچین و ماژول NodeJS (سرور HTTP) را می توانید در اینجا پیدا کنید: 1

راه اندازی یک گره جامی

شرط های پیش فرض:

  1. Geth 1.8.23+ (از [این جا] دانلود کنید)

  2. فایل Jami genesis (از [این جا] دانلود کنید)

پیوستن به شبکه ی جامی

فرآیند پیوستن به شبکه Jami شبیه به فرآیند پیوستن به یک شبکه ایتروم معمولی است با تفاوت اینکه فایل جنسیس برای ابتدایی دایرکتوری داده ها استفاده می شود.

  1. فایل جمی جنیز را از جمی github repo دانلود کنید

  2. يه فهرست رو در کامپيوتر خودتون بسازيد که براي ذخیره اطلاعات بلوکچين Jami استفاده ميکنيد

  • مثال برای MacOS (/Users/username/jamichain)

  • مثال برای لینوکس (/home/username/jamichain)

  • مثال برای ویندوز (C:\Users\username\jamichain)

  1. از geth برای شروع کردن دایرکتوری که در (2) ایجاد کرده اید با اجرا کردن ```./geth --datadir /home/username/jamichain init genes is.json ``

  2. حالا ميتوني از geth با گزینه هاي خط فرماني که نياز داري شروع کني و يکي از گره هاي بوت جمي رو به اين روش مشخص کني:

geth --datadir=/home/username/jamichain --syncmode=full --networkid 1551 --bootnodes "enode://11ba6d3bfdc29a8afb24dcfcf9a08c8008005ead62756eadb363523c2ca8b819efbb264053db3d73949f1375bb3f03090f44cacfb88bade38bb6fc2cb3d890a5@173.231.120.228:30301" console

اين يه ديوانه گيت با يك کنسول متصل شروع ميشه که حالا با شبکه جمي همگام ميشه