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

اتصال

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

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

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

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

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

![ شبکه-تپو](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

The default Jami name service is ns.jami.net, provided by Savoir-faire Linux Inc., connected to an Ethereum blockchain node; the goal being to give everyone the possibility (if they which so) to run their own blockchain node and HTTP service, mine some Ether, and use it to pay the transaction fee needed to register their username in Jami.

Code of the Ethereum contract, the blockchain genesis file, and the NodeJS module (HTTP server) can be found here : 1

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

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

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

  2. Jami genesis file (download from HERE)

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

فرآیند پیوستن به شبکه 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

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