معرفی جامع پنج پلتفرم برتر ذخیره سازی بلاکچین (بخش اول)

از مهمترین ویژگی‌های بلاکچین‌‌ و فناوری دفترکل توزیع شده، میتوان به الگوریتم‌‌های اجماع (نحوه دستیابی شبکه به عنوان یک کل به یک تصمیم مشترک) و قراردادهای هوشمند (برای اجرای برنامه‌‌هایی که هر روز در این دنیای متمرکز استفاده می‌کنیم) اشاره کرد. اما وقتی که صحبت از برنامه‌‌های روزمره می‌شود، این ویژگی‌‌ها برای پشتیبانی نیازهای امروز جهان کافی نیستند. اگر فقط به این دو ویژگی تکیه کنیم، تصور لذت بردن از تماشای فیلم مانند همان کاری که در نتفلیکس (Netflix) انجام می‌‌دهید، ذخیره / به اشتراک گذاری فیلم‌‌ها / عکس‌‌های خاطره انگیزتان مانند همان کاری که در فیس بوک انجام می‌‌دهید و یا انجام بازی‌‌های آنلاین مورد علاقه‌‌تان مانند DOTA در بلاکچین بسیار سخت خواهد بود. ما به یک سیستم ذخیره سازی و توزیع محتوای قوی، امن و غیر متمرکز نیاز داریم که برای اجرای برنامه‌‌های امروزی استفاده شود. در اینجا برخی از محبوب‌‌ترین پلتفرم‌‌های ذخیره سازی توزیع شده را بررسی و ارزیابی خواهیم کرد ( بخش اول: Swarm و IPFS).

0 164
برای مطالعه بخش دوم اینجا و بخش سوم اینجا کلیک کنید.

Swarm

swarm

وضعیت: Live

توضیح:

Swarm یک پلتفرم ذخیره سازی توزیع شده و سرویس توزیع محتوا، یک سرویس لایه پایه بومی از پشته وب 3 اتریوم است. هدف اصلی Swarm ارائه یک فروشگاه غیرمتمرکز و افزونه از پرونده عمومی اتریوم، به ویژه برای ذخیره و توزیع اطلاعات و کد اپلیکیشن‌‌های غیر متمرکز و همچنین اطلاعات بلاکچین‌‌ است. از لحاظ اقتصادی، این پلتفرم، به منظور ارائه این سرویس‌‌ها به همه مشارکت کنندگان شبکه، به مشارکت کنندگان اجازه می‌‌دهد که در عین دریافت پاداش از طرف اتریوم بتوانند منابع ذخیره سازی و پهنای باند خود را بیرون بکشند.

هدف

هدف گسترده‌‌تر Swarm ارائه خدمات زیرساختی برای توسعه دهندگان اپلیکیشن‌‌های غیر متمرکز وب (dapps) از جمله: پیام رسانی، استریمینگ داده، حسابداری همتا به همتا، به روز رسانی منابع تغییر پذیر، بیمه ذخیره سازی، اسکن و تعمیر اثبات کاستدی، کانال‌‌های پرداخت و خدمات پایگاه داده است.

از دیدگاه کاربر نهایی، Swarm تفاوتی با وب جهانی ندارد، و تنها تفاوت آن این است که آپلودها در سرور خاصی میزبانی نمی‌‌شوند. Swarm یک ذخیره سازی و نظارت همتا به همتا و مقاوم در برابر DDoS ارائه می‌‌دهد که دچار توقف و خرابی نمی‌‌شود و دارای قابلیت تحمل خطا و مقاومت در برابر سانسور و همچنین خود حفاظتی که معلول یک سیستم پاداش داخلی است که از حسابداری همتا به همتا استفاده می‌کنند و امکان معامله منابع با پرداخت را فراهم می‌‌کند، می‌‌باشد. Swarm برای ادغام پایه‌‌ای با لایه شبکه چند پروتکلی devper2p اتریوم و همچنین بلاکچین‌‌ اتریوم برای ترجمه نام دامنه (domain name resolution) با استفاده از ENS پرداخت‌‌های خدمات و بیمه قابلیت دسترسی محتوا طراحی شده است.

نکته: برای ترجمه (resolve، ترجمه آدرس‌‌های IP به نام دامنه و بالعکس) نام‌‌‌‌های ENS، گره Swarm شما باید به یک بلاکچین اتریوم (شبکه اصلی یا شبکه آزمایشی) متصل شود.

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

بررسی اجمالی

Swarm برای ارائه زیرساخت‌‌های لایه پایه برای یک اینترنت غیر متمرکز جدید تنظیم شده است. Swarm یک شبکه همتا به همتا برای گره‌‌هایی است که با مشارکت در ارائه منابع (ذخیره سازی، انتقال پیام، پردازش پرداخت) به یکدیگر خدمات دیجیتال توزیع شده را فراهم می‌‌کنند. بنیاد اتریوم دارای یک شبکه تستی Swarm است که می‌‌تواند برای تست عملکرد با روشی مشابه تست شبکه اتریوم (ropsten) مورد استفاده قرار گیرد. هر کس می‌‌تواند با استفاده از گره کلاینت Swarm در سرور، دسکتاپ، لپ تاپ یا دستگاه تلفن همراه خود به شبکه بپیوندد. برای انجام این کار، به شروع کار با Swarm (Getting started with swarm) مراجعه کنید. کلاینت Swarm بخشی از پشته اتریوم است، پیاده سازی مرجع در golang نوشته شده و می‌‌توان آن را تحت مخزن go-ethereum پیدا کرد. در حال حاضر در POC (اثبات مفهوم)، نسخه 3.0 در تمام گره‌‌ها اجرا می‌شود.

Swarm یک API پروکسی HTTP محلی ارائه می‌‌دهد که اپلیکیشن‌‌های غیرمتمرکز یا ابزار خط فرمان می‌‌توانند برای ارتباط با Swarm استفاده کنند. برخی از ماژول‌‌ها مانند پیام رسانی فقط از طریق API RPC-JSON قابل دسترسی هستند. سرورهای انجمن اتریوم در شبکه تستی، درگاه‌‌های عمومی ارائه می‌‌دهند که کار آنها تعیین کاربردپذیری و ارائه امکان دسترسی آزاد است تا مردم بتوانند Swarm را حتی بدون گره خود اجرا کنند.

Swarm مجموعه‌‌ای از گره‌‌های شبکه devp2p است که هر کدام از آنها مجموعه پروتکل bzz را بر روی همان شناسه شبکه اجرا می‌‌کنند.

گره‌‌های Swarm می‌‌توانند با یک (یا چندین) بلاکچین اتریوم برای وضوح نام دامنه و یک بلاکچین اتریوم برای پهنای باند و جبران ذخیره سازی ارتباط برقرار کنند. گره‌‌هایی که شناسه شبکه مشابهی اجرا می‌‌کنند برای پرداخت باید به بلاکچین مشابهی متصل شوند. هویت یک شبکه Swarm توسط شناسه شبکه‌‌اش که یک عدد صحیح دلخواه است تعیین می‌‌شود.

Swarm امکان آپلود و ناپدید شدن را فراهم می‌‌کند که این یعنی هر گره می‌‌تواند محتوا را در Swarm آپلود کند و سپس آفلاین شود. به خاطر وجود روند “هماهنگ سازی” که در آن گره‌‌ها داده‌‌های قابل دسترس را به صورت بی وقفه بین یکدیگر دست به دست می‌‌کنند، تا زمانی که گره ها حذف و یا غیر قابل دسترس نشوند، این محتوا همچنان قابل دسترسی است.

درگاه‌های عمومی

Swarm یک API پروکسی HTTP محلی ارائه می‌‌دهد که اپلیکیشن‌های غیرمتمرکز می‌‌توانند برای ارتباط با Swarm استفاده کنند. انجمن اتریوم یک درگاه عمومی را میزبانی می‌‌کند که دسترسی آزاد را فراهم می‌‌کند تا مردم بتوانند Swarm را حتی بدون گره خود اجرا کنند.

درگاه عمومی Swarm که همیشه آخرین نسخه پایدار Swarm را اجرا می‌‌کند را می­توان در https://swarm-gateways.net پیدا کرد.

توجه: این درگاه در حال حاضر فقط آپلودهایی با سایز محدود را قبول میکند. احتمال این وجود دارد که قابلیت آپلود این درگاه‌‌ها در آینده به طور کامل از بین برود.

آپلود و دانلود اطلاعات

آپلود محتوای آپلود شامل”آپلود” محتوا در گره محلی Swarm محلیتان است که در پی آن، گره Swarm محلیتان مجموعه داده‌‌های حاصل را با همتایش در شبکه همگام سازی می‌‌کند. در حالیکه در دانلود محتوا، گره محلی Swarm شما برای دسترسی به داده‌‌های مربوطه و سپس جمع آوری مجدد محتوا به صورت محلی، به جستجوی همتایش در شبکه می‌‌پردازد.

مترجم محتوا: ENS

نکته: برای ترجمه نام ENS، گره Swarm شما باید به یک بلاکچین‌‌ اتریوم (شبکه اصلی یا شبکه آزمایشی) متصل شود.

ENS سیستمی است که Swarm استفاده می‌‌کند تا اجازه دهد محتوا بتواند نامی مانند “theswarm.eth” که برای انسان قابل خواندن است داشته باشد. این سیستم شبیه سیستم DNS عمل می‌‌کند، و نام‌‌هایی که برای انسان قابل خواندن هستند را به شناسه‌‌های ماشینی – در این مورد، هش محتوای Swarmی که به آن اشاره می‌‌کنید- تبدیل می‌‌کند. با ثبت یک نام و تنظیم آن برای ترجمه هش محتوای مانیفست ریشه سایتتان، کاربران می‌‌توانند از طریق یک URL مانند bzz://theswarm.eth/ به سایت شما دسترسی پیدا کنند.

نکته: در حال حاضر طرح bzz در مرورگرهای اصلی مانند کروم، فایر فاکس یا سافاری پشتیبانی نمی‌‌شود. اگر می‌‌خواهید از طریق این مرورگرها به طرح bzz دسترسی داشته باشید باید از یک درگاه HTTP https://swarm-gateways.net/bzz:/theswarm.eth/ یا از مرورگری مانند میست (Mist) که از طرح bzz پشتیبانی می‌‌کند استفاده کنید.

در اینجا می‌‌توانید در مورد آپلود، دانلود و مدیریت محتوا موارد بیشتری بیاموزید.

بروز رسانی منبع تغییر پذیر

به روز رسانی‌‌های منبع تغییر پذیر یک ویژگی بسیار تجربی است که از طریق Swarm POC3 قابل دسترس است. این بروزرسانی‌‌ها در حال توسعه هستند، بنابراین انتظار می‌‌رود تغییراتی رخ دهد.

ما قبلا در این راهنما یاد گرفتیم که هنگام اعمال تغییر در داده‌‌ها در Swarm، هشی که موقع آپلود آن داده بازگشته است به روشی کاملا غیر قابل پیش بینی تغییر خواهد کرد. Swarm با به روزرسانی‌‌های منبع تغییر پذیر، یک راه داخلی برای حفظ یک شناسه پایدار برای داده‌‌های در حال تغییر فراهم می‌‌کند.

روش معمول حفظ اشاره‌‌گر مشابه برای داده‌‌های در حال تغییر، استفاده از سرویس نام اتریوم (Ethereum name Service) (ENS) است. هرچند، ENS یک ویژگی درون زنجیره‌‌ای است که کاربردپذیری در بعضی حوزه‌‌ها را محدود می‌‌کند:

  1. هر بروز رسانی به یک مترجم ENS نیاز دارد که برای اجرای آن باید هزینه‌‌ی انرژی مصرفی را پرداخت کنید.
  2. امکان تغییر داده‌‌ها با سرعتی بیشتر از نرخ استخراج بلاک‌‌ها وجود ندارد.
  3. ترجمه صحیح ENS مستلزم آن است که شما همواره با بلاکچین‌‌ همگام باشید.

بروز رسانی منبع تغییر پذیر این امکان را برای ما فراهم می‌‌کند که بدون نیاز به استفاده از ENS بتوانیم یک شناسه غیر متغیر برای داده‌‌های در حال تغییر داشته باشیم. میتوان به منبع تغییر پذیر به عنوان یک شیء Swarm معمولی که از کلیدی که هنگام ایجاد منابع (MRU_MANIFEST_KEY) به دست آمده استفاده می‌‌کند رجوع کرد. هنگامی که داده‌‌های منبع بروزرسانی شوند، MRU_MANIFEST_KEY به داده‌‌های جدید اشاره می‌‌کند.

در صورت استفاده از بروز رسانی منبع تغییر پذیر در رابطه با قرارداد ترجمه ENS، برای ثبت نام MRU_MANIFEST_KEY، تنها به یک تراکنش ابتدایی نیاز است. این کلید به آخرین نسخه منبع ترجمه خواهد شد (به روز رسانی منبع، کلید را تغییر نخواهد داد).

سه راه مختلف برای تعامل با بروزرسانی منبع تغییر پذیر وجود دارد: HTTP API، API Golang و CLI Swarm.

موارد قابل توجه:

  • فقط همان کلید (آدرس) خصوصی که منبع را ایجاد کرده است می‌‌تواند آن را به روز کند.
  • یکی از پارامترهایی که هنگام ایجاد یک منبع تغییر پذیر باید ارائه دهید، فرکانس به روز رسانی مورد نظر است. این نشان می‌‌دهد که (در ثانیه) چند بار منابع شما به روز می شود. اگر چه شما می‌‌توانید منابع را با نرخ‌‌های دیگری نیز به روز رسانی کنید، انجام این کار روند بازیابی منابع را کاهش می‌‌دهد.

رمزگذاری Swarm

امکان استفاده از رمزگذاری متقارن که در POC 0.3 معرفی شده است، با دستور upupload Swarm وجود دارد. هدف مکانیزم رمزگذاری، محافظت از اطلاعات شما و ناخوانا کردن اطلاعات نادرست برای گره‌‌های مدیریت Swarm است.

Swarm از رمزنگاری حالت متقابل (Counter mode encryption) برای رمزگذاری و رمزگشایی محتوا استفاده می‌‌کند. هنگامی که محتوا را در Swarm آپلود کنید، داده های آپلود شده به قطعات 4 کیلوبایتی تقسیم می‌‌شوند. این قطعات با یک کلید رمزگذاری مجزا که به صورت تصادفی تولید شده رمزگذاری می‌‌شوند. رمزگذاری بر روی گره Swarm محلی شما صورت می‌‌گیرد، داده‌‌هایی که رمزگذاری نشده‌‌اند با گره‌‌های دیگر به اشتراک گذاشته نمی‌‌شوند. مرجع یک قطعه تنها (و کل محتوا)، تلفیق هش داده‌‌های رمزگذاری شده و کلید رمزگشایی خواهد بود. یعنی این مرجع طولانی‌‌تر از مرجع Swarm استاندارد رمزگذاری نشده خواهد بود (64 بایت به جای 32 بایت).

هنگامی که گره شما قطعات رمزگذاری شده محتوای شما را با گره‌‌های دیگر همگام سازی کند، تمام مراجع (یا کلیدهای رمزگشایی را به هیچ وجه) با گره‌‌های دیگر به اشتراک نمی‌‌گذارد. یعنی گره‌‌های دیگر قادر به دسترسی به داده‌‌های اصلی شما و همچنین قادر به تشخیص اینکه آیا قطعات هماهنگ شده رمزگذاری شده‌‌اند یا نه، نخواهند بود.

هنگامی که اطلاعات شما بازیابی شود فقط در گره محلی Swarm شما رمزگشایی می‌‌شود. در طول کل فرایند بازیابی، قطعات در قالب رمزنگاری شده خود در شبکه جابجا می‌‌شوند و هیچ یک از همتایان مشارکت کننده قادر به رمزگشایی آنها نیستند. این قطعات فقط در گره Swarmی که برای دانلود استفاده می‌‌کنید رمزگذاری و مونتاژ می‌‌شوند.

در اینجا می‌‌توان به اطلاعات بیشتری در مورد چگونگی مدیریت رمزنگاری در Swarm دست پیدا کرد.

موارد مهم:

  • Swarm از رمزگذاری پشتیبانی می‌‌کند. آپلود اطلاعات حساس و خصوصی بدون رمز بسیار نگران کننده است، زیرا هیچ راهی برای لغو آپلود وجود ندارد. کاربران باید از آپلود محتوای غیرقانونی، بحث برانگیز یا غیر اخلاقی خودداری کنند.
  • Swarm در حال حاضر از دستورات Swarm رمزگذاری شده و بدون رمز از طریق استفاده از پرچم –encrypt پشتیبانی می‌‌کند. ممکن است در این مورد تغییراتی در آینده رخ دهد.
  • ویژگی رمزگذاری (به دلیل تولید یک کلید تصادفی در هر درخواست آپلود) غیر قطعی است و کاربران API نباید به اینکه نتیجه مطلوب است متکی باشند؛ بنابراین، آپلود دوباره‌‌ی محتوای مشابه در Swarm با استفاده از رمزگذاری به مرجع مشابهی منجر نخواهد شد.

PSS

PSS (خدمات پستی در Swarm) یک پروتکل پیام‌‌رسانی در Swarm است که از قابلیت حریم خصوصی قوی برخوردار است. API pss از طریق یک رابط RPC JSON که در مرجع API (API Reference) شرح داده شده نشان داده می‌‌شود، در اینجا مفاهیم و ویژگی‌‌های اساسی را توضیح می‌‌دهیم.

نکته: PSS همچنان یک ویژگی آزمایشی و تحت توسعه فعال و با نام POC3 Swarmدر دسترس است. به استثنای یک سری موارد که قرار است تغییر کند.

اصول و مبانی

با pss می‌‌توانید پیام‌‌ها را به هر گره‌‌ای در شبکه Swarm ارسال کنید. پیام‌ها به همان شیوه‌ای که بازیابی درخواست‌‌ها قطعات انجام می‌شود روت می‌شوند. به جای ارجاع هش قطعه، پیام‌‌های pss، مستقل از بارگیری پیام، یک مقصد را در فضای آدرس همپوشان مستقل مشخص می‌‌کند. این مقصد در صورتی که یک آدرس همپوشان کامل باشد می‌‌تواند یک گره خاص را توصیف کند، و در صورتی که یک آدرس نسبتا مشخص باشد می‌‌تواند نشان دهنده یک همسایگی باشد. پیام تا رسیدن به مقصد، از طریق ارتباطات همتای devp2p با استفاده از کادملیای پیشرو (forwarding kadmeila) انتقال پیام‌‌ها از طریق اتصال نیمه دائمی همتا به همتایTCP بین گره‌‌های رله با استفاده از مسیریابی کادملیارله می‌‌شود. در همسایگی مقصد، پیام با استفاده از شایعه پخش می‌‌شود.

از آنجا که پیام‌‌های PSS رمزگذاری می‌‌شوند، در نهایت گیرنده کسی است که بتواند پیام را رمزگشایی کند. رمزگذاری را می‌‌توان با استفاده از روش­های رمزنگاری نامتقارن یا متقارن انجام داد.

بار پیام توسط گره‌‌های گیرنده به کنترل کنندگان پیام و از طریق API به مشترکین ارسال می‌‌شود.

توجه: PSS ترتیب پیام (تحویل بهترین تلاش) و ارسال پیام را تضمین نمی‌‌کند (مثلا پیام‌‌هایی که به گره‌‌های آفلاین ارسال می‌‌شوند ذخیره و رله نمی‌شود).

ویژگی‌های مربوط به حریم خصوصی

Pss به لطف رمزنگاری کاربر به کاربر، امکان برقراری ارتباط خصوصی را فراهم می‌‌کند.

به خاطر کادملیای پیشرو، PSS امکان ناشناس بودن فرستنده را فراهم می‌‌کند.

Pss با استفاده از آدرس دهی جزئی، یک مقیاس متغیر و قابل تطبیق از ناشناس بودن گیرنده ارائه می‌‌دهد: گستردگی همسایگی مقصد (که هرچه همسایگی مقصد گسترده‌‌‌‌تر باشد، پیشوند کوچک‌‌تری برای آدرس همپوشان گیرنده مورد نظر انتخاب خواهید کرد)، دشواری شناسایی گیرنده واقعی. از سوی دیگر، از آنجایی که مسیریابی تاریک ناکارآمد است، از یک طرف ناشناس بودن و از طرف دیگر تاخیر تحویل پیام و پهنای باند (و در نتیجه هزینه) سبک سنگین می‌‌شوند. این انتخاب به عهده اپلیکیشن است.

اگر از ماژول Handshakes استفاده می‌‌کنید، می‌‌توانید از قابلیت اختفای پیشرو بهره ببرید.

ساختار

موارد مهم:

  • • برای محتواهای حساس همیشه از رمزگذاری استفاده کنید. برای محتوای رمزگذاری شده ، داده‌‌های آپلود شده تحت محافظت قرار می‌‌گیرند، یعنی تنها کسانی که از مرجع قطعه ریشه (هش Swarm فایل و همچنین کلید رمزگشایی) اطلاع دارند می‌‌توانند به محتوا دسترسی داشته باشند. از آنجا که انتشار این مرجع (در ENS یا با MRU نیازمند یک گام اضافی است، تا وقتی که کاربران از رمزگذاری استفاده کنند در برابر انتشار ناخواسته محافظت می‌‌شوند. اگر چه هیچ تضمینی برای حذف وجود ندارد، محتوای غیرقابل دسترسی که صریحا بیمه نشده باشد، در نهایت از Swarm ناپدید می‌‌شود، زیرا در صورت محدودیت ظرفیت ذخیره سازی، گره‌‌ها برای جمع آوری موارد به درد نخور پاداش خواهند گرفت.
  • تا زمانی که بیمه ذخیره سازی اجرا شود، تضمینی برای تداوم محتوای آپلود شده در شبکه تستی وجود ندارد (برای جرئیات بیشتر به نقشه راه مراجعه کنید). تمام گره‌‌های مشارکت کننده باید مشارکت در یک سرویس داوطلبانه بدون هیچ گونه تعهد رسمی را در نظر داشته باشند و باید از انها انتظار برود که محتوا را بر اساس اراده خود حذف کنند. بنابراین، تا زمانی که سیستم پاداش دهی فعال است، کاربران نباید تحت هیچ شرایطی Swarm را به عنوان ذخیره سازی ایمن در نظر بگیرند.
  • Swarm یک ساختار داده پایدار است، بنابراین در این ساختار هیچ اشاره‌‌ای به عمل حذف نشده است. دلیل این امر این است که محتوا بین آن دسته از گره‌‌های Swarm منتشر می‌شود که برای انجام آن پاداش دریافت می‌‌کنند.

ردیت Swarm | توئیتر Swarm | گیت هاب Swarm

IPFS

ipfs

وضعیت: IPFS ) Live یک سیستم پاداش دهی است، “Filecoin” Live نیست)

توضیحات

IPFS (فایل سیستم بین سیاره‌‌ای) (nterplanetary File System) یک سیستم اشتراک فایل همتا به همتا (p2p) است که هدف اصلی آن تغییر شیوه توزیع اطلاعات در سراسر جهان و خارج از آن است. این سیستم تا حدودی شبیه به Swarm است یا می‌توان گفت Swarm تا حدودی مشابه IPFS است.

IPFS شامل چندین نوآوری در سیستم‌‌های توزیع و پروتکل‌‌های ارتباطی است که برای تولید فایل سیستمی که شبیه هیچ فایل سیستم دیگری نیست با یکدیگر ترکیب شده‌‌اند. بنابراین برای درک گستره و عمق چیزی که IPFS سعی در دستیابی به آن دارد، درک پیشرفت‌‌های این فناوری که آن را امکان پذیر می‌‌سازد و تمام مشکلاتی که حل می‌‌کند ضروری است.

IPFS می‌‌تواند جایگزین http شود. بنابراین، اجازه دهید بررسی کنیم که امروزه اینترنت ما چگونه کار می‌‌کند.

به بیان ساده، اینترنت مجموعه‌ای از پروتکل‌ها است که نحوه انتقال اطلاعات در اطراف شبکه را تعریف می‌‌کند. توسعه دهندگان این پروتکل‌‌ها را در طول زمان انتخاب کرده و اپلیکیشن‌‌های خود را بر روی این زیرساخت‌‌ها ساخته‌‌اند. یکی از پروتکل‌‌هایی که به عنوان ستون فقرات وب به کار می‌‌رود، پروتکل انتقال HTTP یا HyperText است. این پروتکل در سال 2991 توسط تیم برنرز لی اختراع شد.

osi

پشته پروتکل اینترنت که به نام مدل OSI شناخته می‌شود

HTTP یک پروتکل پاسخ-درخواست است. یک کلاینت، به عنوان مثال یک مرورگر وب، یک درخواست را به سرور خارجی ارسال می‌‌کند. سپس سرور یک پیام پاسخ، به عنوان مثال، صفحه اصلی Google را برای کلاینت می‌‌فرستد. این یک پروتکل مبتنی بر آدرس است؛ یعنی وقتی که من google.com را در مرورگر خود وارد می‌‌کنم، این عبارت به آدرس IP بعضی از سرورهای گوگل ترجمه می‌‌شود، سپس چرخه درخواست-پاسخ با آن سرور آغاز می‌‌شود.

https

مردم در اینترنت چگونه صحبت می‌‌کنند

مشکلات مربوط به http

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

در صورت وجود مشکل در خطوط شبکه ارتباطات،http مشکل بزرگی پیدا خواهد کرد و کلاینت قادر به برقراری ارتباط با سرور نخواهد بود. این اتفاق در صورتی می‌‌افتد که یک ISP قطع شود، یک کشور محتوا را مسدود کند یا محتوا به سادگی حذف شود یا انتقال یابد. از این نوع لینک‌‌های خراب در هر نقطه در وب HTTP وجود دارد.

مدل آدرس دهی مبتنی بر مکانHTTP، موجب متمرکز بودن می‌‌شود. اعتماد به تعداد انگشت شماری از اپلیکشن‌ها برای به اشتراک گذاری اطلاعاتمان کار راحتی است، اما به خاطر این موضوع، بسیاری از داده‌ها در وب آلوده می‌‌شوند. این باعث می‌‌شود که این ارائه دهندگان با مسئولیت‌‌های عظیم و قدرتی که روی اطلاعات ما دارند آشنا شوند (فیس بوک در این مورد بسیار بد عمل می‌کند).

HTTP برای بارگیری وب سایت بسیار مناسب است، اما برای انتقال داده‌‌های بزرگ (مانند فایل‌‌های صوتی و تصویری) طراحی نشده است. این محدودیت‌‌ها احتمالا ظهور و موفقیت جریان اصلی سیستم عامل‌‌های جایگزین اشتراک گذاری فایل مانند Napster (موسیقی) و بیت تورنت (BitTorrent) (فیلم و تقریبا هر چیزی) را افزایش می‌‌دهد.

جهشی به سال 2018، زمانی که استریمینگ ویدئو HD مورد تقاضا و داده‌‌های بزرگ در همه جا وجود داشتند؛ همراه با توسعه بیشتر و بیشتر رایانه‌‌ها برای پردازش داده‌‌ها، ما در حال پیشروی به سمت تولید / مصرف بیشتر و بیشتر این داده‌‌ها هستیم. پیشرفت‌‌های عظیم صورت گرفته در محاسبات کلاود به حفظ این پیشروی کمک کرده است، هرچند زیرساخت‌‌های اساسی توزیع این داده‌‌ها عمدتا به همان شکل باقی مانده است.

راه حل

IPFS در راستای تلاش خوان بنت (Juan Benet) برای ایجاد یک سیستم بسیار سریع در حرکت در اطراف داده‌‌های علمی منتشر شده آغاز شد.IPFS یک مصنوع اینترنتی آزمایش شده مانند DHTs، سیستم نسخه بندی Git و Bittorrent است. IPFS یک Swarm P2P ایجاد می‌‌کند که امکان تبادل اشیاء IPFS را فراهم می‌‌کند. کلیت اشیاء IPFS، یک ساختار داده معتبر از نظر رمزی به نام مرکل DAG را تشکیل می‌‌دهند و این ساختار داده می‌‌تواند برای مدل سازی بسیاری از ساختار داده‌‌های دیگر مورد استفاده قرار گیرد. یا به عبارت دیگر …

“IPFS یک سیستم فایل توزیع شده است که به دنبال اتصال همه دستگاه‌‌های محاسباتی با همان سیستم فایل است. این در برخی موارد شبیه به اهداف اصلی وب است، اما IPFS در واقع شباهت بیشتری به یک Swarm بیت تورنت که اجزای git را مبادله می‌‌کند دارد. IPFS می‌‌تواند یک سیستم فرعی جدید اینترنت باشد. این سیستم اگر درست ساخته شود، می‌‌تواند جایگزین HTTP شود و یا آن را تکمیل کند. IPFS می‌‌تواند مکمل و یا جایگزین بیشتری نیز باشد. بسیار عجیب به نظر می‌‌رسد. بسیار عجیب است.”

IPFS در اصل سیستم فایل چند نسخه‌‌ای است که می‌‌تواند فایل‌‌ها را مدیریت و همچنین آنها را در جایی ذخیره کند و سپس در طول زمان نسخه‌‌ها را دنبال می‌‌کند. IPFS نحوه جابجایی این فایل‌‌ها در سراسر شبکه را نیز توضیح می‌‌دهد و بنابراین یک سیستم فایل توزیع شده نیز هست.

IPFS برای نحوه انتقال داده و محتوا در شبکه قوانینی دارد که ماهیت آنها شبیه بیت تورنت است. این لایه سیستم فایل ویژگی‌‌های بسیار جالبی دارد که عبارتند از:

  • وب سایت‌‌هایی که کاملا توزیع شده‌‌اند.
  • وب سایت‌‌هایی که دارای سرور مبدا نیستند.
  • وب سایت‌‌هایی که می‌‌توانند به طور کامل بر روی مرورگرهای سمت کلاینت اجرا شوند.
  • وبسایت‌‌هایی که هیچ سرویسی برای صحبت کردن ندارند.

اجازه دهید ببینیم این دستاوردهای مختلف فناوری چگونه با هم کار می‌‌کنند.

جدول هش توزیع شده

جدول هش یک ساختار داده است که اطلاعات را به عنوان جفت‌‌های کلید / ارزش ذخیره می‌‌کند. در جداول هش توزیع شده (DHT) داده‌‌ها در سراسر شبکه کامپیوتری پخش می‌‌شوند و برای دسترسی کارآمد و جستجوی بین گره‌‌ها به طور موثر با یکدیگر هماهنگ می‌‌شوند.

مزیت DHها در عدم تمرکز، تحمل خطا و مقیاس پذیری است. گره‌‌ها نیازی به هماهنگی مرکزی ندارند، حتی زماین که گره‌‌ها از کار بیفتند یا شبکه را ترک کنند، سیستم می‌‌تواند به شکل مطمئنی عمل کند، وDHTها می‌‌توانند برای تطبیق با میلیون‌‌ها گره مقیاس شوند. وجود این ویژگی‌‌ها در کنار یکدیگر منجر به ظهور سیستمی می‌‌شود که در کل انعطاف پذیرتر از ساختار کلاینت-سرور است.

مبادلات بلاک

سیستم اشتراک گذاری فایل محبوب بیت تورنت قادر است با انتقال اطلاعات بین میلیون‌‌ها گره با تکیه بر یک پروتکل خلاقانه مبادله اطلاعات، به صورت موفقیت آمیزی همگام سازی شود، هرچند این امر به اکوسیستم تورنت محدود می‌‌شود.IPFS یک نسخه عمومی از این پروتکل که بیت سواپ (BitSwap) نام دارد و به عنوان یک بازار برای هر نوع داده‌‌ای عمل می‌‌کند را به اجرا در می‌‌آورد. این بازار مبتنی بر Filecoin : بازار ذخیره سازی P2P ساخته شده درIPFS، است.

DAG مرکل (Merkle DAG)

DAG مرکل ترکیبی از یک درخت مرکل (مرکل Tree) و یک گراف جهت دار غیرمدور (DAG) است. درختان مرکل تضمین می‌‌کنند که بلاک‌‌های داده‌‌ی مبادله شده در شبکه‌‌های P2P ، صحیح، ناپایدار و بدون تغییر هستند. این تأیید توسط سازماندهی بلاک‌‌های داده با استفاده از توابع هش رمزی انجام می‌‌شود. به بیان ساده این یک تابع است که یک ورودی دریافت می‌‌کند و یک رشته منحصر به فرد الفبا عددی (هش) مطابق با آن ورودی محاسبه می‌‌کند. بررسی اینکه نتیجه یک ورودی یک هش مفروض است کار راحتیست، اما پیش بینی ورودی از یک هش به طرز باور نکردنی دشوار است.

بلاک‌‌های داده فردی “گره‌‌های برگی” نامیده می‌‌شوند و طی عمل هش به شکل”گره‌‌های بدون برگ” در می‌‌آیند. سپس تا زمانی که بتوان تمام بلاک‌‌های داده را با یک هش ریشه واحد نشان داد، این گره‌‌های بدون برگ می‌‌توانند ترکیب و هش شوند. در اینجا راه ساد‌‌ه‌تری برای درک مفهوم آن وجود دارد:

tree

مقایسه درخت و درخت مرکل

DAG راهی برای مدل سازی دنباله‌‌های توپولوژی اطلاعات که هیچ چرخه‌‌ای ندارند است. یک نمونه ساده از DAG یک درخت خانواده است. DAG مرکل اساسا یک ساختار داده است که در آن هش‌‌ها برای بلاک‌‌های داده‌‌های مرجع و اشیاء موجود در DAG استفاده می‌‌شوند. این می‌‌تواند موجب شکل گیری چندین ویژگی مفید شود: همه مطالب در IPFS می‌‌تواند به طور منحصر به فرد شناسایی شود، زیرا هر بلاک داده یک هش منحصر به فرد دارد. علاوه بر این داده‌‌ها به حمله مقاومند زیرا همانطور که در شکل زیر نشان داده شده، تغییر آنها باعث تغییر هش می‌‌شود:

tree

ماهیت تغییر ناپذیر درخت مرکل

اصل و اساس IPFS، مدل سازی تمام داده‌‌ها در یک مرکل DAG عمومی است. درک اهمیت این ویژگی امنیتی دشوار است. یکی از مثال‌‌هایی که نشان می‌‌دهد این ایده تا چه حد قدرتمند است این است که دارایی‌‌های با ارزش تریلیون دلاری توسط این اصل محافظت می‌‌شوند.

سیستم‌‌های کنترل نسخه

یکی دیگر از ویژگی‌‌های قدرتمند ساختار مرکل DAG این است که امکان ساخت یک سیستم کنترل نسخه توزیع شده (VCS) را برای شما فراهم می‌‌کند. معروف‌‌ترین مثال آن نیز گیت هاب است، که به توسعه دهندگان اجازه می‌‌دهد تا به طور همزمان در پروژه‌‌ها همکاری کنند. فایل‌‌های Github با استفاده از DAG مرکل ذخیره و نسخه بندی می‌‌شوند. این موجب می­شود که کاربران بتوانند نسخه‌‌های چندگانه یک فایل را به صورت مستقل کپی و ویرایش کنند، این نسخه‌‌ها را ذخیره و بعد ویرایش‌‌ها را با فایل اصلی ادغام کنند.

IPFS از یک مدل مشابه برای اشیاء داده استفاده می‌‌کند: تا زمانی که اشیاء مربوط به داده‌‌های اصلی و همه نسخه‌‌های جدید در دسترس باشند، تمام تاریخچه فایل قابل بازیابی است. با توجه به این که بلاک‌‌های داده به صورت محلی در شبکه ذخیره می‌‌شوند و محدودیتی برای ذخیره سازی آنها وجود ندارد، این به این معنی است که اشیاء IPFS می‌‌توانند به صورت دائمی ذخیره شوند.

علاوه بر این، IPFS به دسترسی به پروتکل‌‌های اینترنتی وابسته نیست. می‌توان داده‌‌ها را در شبکه‌‌های همپوشان، که شبکه‌‌هایی هستند که در شبکه‌‌های دیگری ساخته شده‌‌اند، توزیع کرد. این ویژگی‌‌ها قابل توجهند، زیرا آنها جزو عناصر اصلی وب مقاوم در برابر سانسور هستند. این وب می‌‌تواند یک ابزار مفید برای ترویج سخنرانی آزاد برای مقابله با شیوع سانسور اینترنت در سراسر جهان باشد، اما ما نیز باید به امکان سوء استفاده بازیگران نادرست از آن آگاه باشیم.

سیستم فایل با تایید خوکار

آخرین جزء ضروری IPFS که به آن می‌پردازیم، سیستم تایید خودکار (SFS) است. این یک سیستم فایل توزیع شده است که برای دسترسی به تبادل اطلاعات نیازی به اجازه ندارد. این “خود تاییدی” است، زیرا داده‌هایی که به یک کلاینت داده می‌‌شوند، توسط نام فایل (که توسط سرور امضا شده است) تأیید می‌‌شود. نتیجه؟ شما می توانید به صورتی امن و مطمئن و از راه دور به محتوایی با شفافیت ذخیره سازی محلی دسترسی داشته باشید.

IPFS بر مبنای این مفهوم ساخته شده است تا فضای نام بین سیاره‌‌ای (IPNS) ایجاد کند. این یک SFS است که برای خود تاییدی اشیائی که توسط کاربران شبکه منتشر شده‌اند، از رمزنگاری کلید عمومی استفاده می‌کند. قبلا گفتیم که تمام اشیاء در IPFS می‌‌توانند منحصر به فرد باشند، اما این به گره‌‌ها نیز تعمیم می‌یابد. هر گره در شبکه دارای مجموعه‌ای از کلیدهای عمومی، کلید خصوصی و یک شناسه گره است که هش کلید عمومی آن است. بنابراین، گره‌‌ها می‌‌توانند از کلیدهای خصوصی خود برای «امضای» هر شیء داده‌‌ای که منتشر می کنند استفاده کنند و امکان تایید اعتبار این داده‌‌ها با استفاده از کلید عمومی فرستنده وجود دارد.

در اینجا خلاصه ای سریع از اجزای اصلی IPFS آورده شده است:

  • گره‌‌ها با استفاده از جدول توزیع هش می‌‌توانند اطلاعات را بدون هماهنگی مرکزی ذخیره و به اشتراک بگذارند.
  • IPNS با استفاده از رمزنگاری کلید عمومی امکان تایید اعتبار پیشاپیش و تایید داده‌‌های مبادله شده را فراهم می‌‌کند.
  • مرکل DAG داده‌‌هایی که منحصرا شناسایی شده‌‌اند، در برابر مداخله مقاومند و به صورت دائمی ذخیره شدند را فعال می‌‌کند.

برای بررسی عمیق‌‌تر چگونگی توزیع فایل‌ها در شبکه می‌‌توانید به مقاله‌ای که توسط کانسنسیس (ConsenSys) تهیه شده مراجعه کنید. همچنین در اینجا می‌‌توانید گزارش کامل و جامع (Whitepaper) IPFS) را مشاهده کنید.

نکات مهم:

  • برای محتوای حساس همیشه از رمزگذاری استفاده کنید! برای محتوای رمزگذاری شده، داده‌‌های آپلود شده محافظت می‌‌شوند؛ یعنی تنها کسانی که از مرجع هش ریشه (هش ریشه فایل و کلید رمزگشایی) اطلاع دارند می‌‌توانند به محتوا دسترسی داشته باشند.
  • Swarm یک ساختار داده پایدار است، بنابراین در این ساختار هیچ اشاره‌‌ای به عمل حذف نشده است. دلیل این امر این است که محتوا بین آن دسته از گره‌‌های Swarm منتشر می‌‌شود که برای انجام آن پاداش دریافت می‌‌کنند
  • تضمینی برای تداوم محتوای آپلود شده در شبکه آزمایشی وجود ندارد. تمام گره‌‌های مشارکت کننده باید مشارکت در یک سرویس داوطلبانه بدون هیچ گونه تعهد رسمی را در نظر داشته باشند و باید از انها انتظار برود که محتوا را بر اساس میل و اراده خود حذف کنند. بنابراین، تا زمانی که سیستم پاداش دهی فعال است، کاربران نباید تحت هیچ شرایطی Swarm را به عنوان ذخیره سازی ایمن در نظر بگیرند.
  • ردیت IPFS | توئیتر IPFS | گیت هاب IPFS

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.