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

اتصال

Jami relies on a distributed network, which brings multiple advantages when compared to federated networks:

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

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

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

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

Network topographies

This forms a Distributed Hash Table (DHT) network.

The core problem of distributed communication systems is peer connectivity. Jami achieves it through two elements:

  • Encrypted announcements on the DHT network,

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

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

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

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

شبکه OpenDHT

همچنین ملاحظه نمائید

Visit the https://github.com/savoirfairelinux/opendht page for more information about OpenDHT. OpenDHT provides a distributed key-value datastore for connectivity establishment (with ICE) and message distribution in Jami.

یک شبکه 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 میگا با است.

Stable community-run DHT nodes will be added to the default bootstrap server list at the request of their owner, as more bootstrap nodes means a more resilient, independent network.

توجه

To add a community-run DHT node to the default bootstrap server list, please email contact@jami.net.

بلاکچین JamiNS

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

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

The name server is set at the account level. This enables the Jami client to connect simultaneously to multiple user directories.

مشارکت در بلاکچین 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.

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

Prerequisites

  1. Geth 1.8.23+ (download from here)

  2. Jami genesis file (download from here)

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

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

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

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

    • Example for GNU/Linux (/home/username/jamichain)

    • Example for macOS (/Users/username/jamichain)

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

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

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

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

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