یک نمای کلی از رایانه اینترنتی

  • 2021-07-21

او آخرین نقطه عطف قبل از راه اندازی کامل رایانه اینترنتی-اولین پر سرعت وب و در مقیاس عمومی در سطح اینترنت-به سرعت نزدیک می شود. در یک رویداد مجازی برای انتشار سدیم در تاریخ 30 سپتامبر ، بنیاد DFinity از سیستم عصبی شبکه ، یک سیستم حاکمیت الگوریتمی باز که کنترل رایانه اینترنتی را کنترل می کند ، رونمایی می کند. این رویداد همچنین مواد فنی عمیق در مورد رمزنگاری پیشرفته ، پروتکل های اجماع و اقتصاد نشانه ها را ارائه می دهد.

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

"رایانه اینترنتی برای حرفهایها": یک کاغذ سفید dfinity جدید

IC بر محدودیت های blockchains سنتی و قراردادهای هوشمند برای سرعت بهتر ، هزینه های ذخیره سازی غلبه می کند ...

سیستم عصبی شبکه

رایانه اینترنتی مبتنی بر پروتکل رایانه blockchain به نام پروتکل رایانه اینترنتی (ICP) است. خود شبکه از سلسله مراتب بلوک های ساختمانی ساخته شده است. در پایین مراکز داده مستقل که میزبان گره های سخت افزاری تخصصی هستند. این دستگاه های گره برای ایجاد زیر شبکه ها ترکیب شده اند. قراردادهای هوشمند Canister Canister میزبان ، که واحدهای محاسباتی قابل تعامل هستند که توسط کاربران بارگذاری می شوند و حاوی کد و حالت هستند.

یکی از عناصری که ICP را منحصر به فرد می کند سیستم عصبی شبکه (NNS) است که وظیفه کنترل ، پیکربندی و مدیریت شبکه را بر عهده دارد.

مراکز داده با استفاده از NNS ، که وظیفه القاء مراکز داده را بر عهده دارد ، به شبکه می پیوندند. در حالی که خود NNS دارای یک سیستم حاکمیتی باز است ، بر مجوزهای شرکت در شبکه نظارت می کند. به یک معنا ، نقشی معادل ICANN در اینترنت ایفا می کند ، که از جمله موارد دیگر ، شماره های سیستم خودمختار را برای کسانی که می خواهند روترهای BGP را اجرا کنند اختصاص می دهد. NNS طیف گسترده ای از نقش های مدیریت شبکه را برآورده می کند ، از جمله نظارت بر ماشین های گره برای جستجوی انحراف آماری در شبکه رایانه اینترنتی ، که می تواند نشانگر عدم عملکرد یا رفتار معیوب باشد.

NNS همچنین نقش اساسی در اقتصاد توکن شبکه دارد. NNS برای پاداش گره هایی که توسط مراکز داده و نورونهایی که در NNS رأی می دهند ، به آنها پاداش می دهد ، نشانه های جدید ICP (که قبلاً با عنوان DFN به آنها می رسید) تولید می کند ، به این ترتیب در مورد پیشنهادهایی که به آن ارسال می شود تصمیم می گیرد. هنگامی که NNS نشانه های جدید ICP را برای پاداش مراکز داده و نورون ها ایجاد می کند ، تورمی است.

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

زیر شبکه

برای درک رایانه اینترنتی ، باید مفهوم زیر شبکه ها را که بلوک اساسی ساخت شبکه کلی هستند ، درک کنید. یک زیر شبکه مسئول میزبانی زیر مجموعه مجزا از قوطی های نرم افزاری است که توسط شبکه رایانه اینترنتی میزبانی می شود. یک زیر شبکه با جمع کردن ماشین های گره ای که از مراکز داده های مختلف به روشی کنترل شده توسط NNS ساخته می شود ، ایجاد می شود. این دستگاه های گره از طریق ICP همکاری می کنند تا به طور متقارن داده ها و محاسبات مربوط به قوطی های نرم افزاری را که میزبان آنها هستند ، تکرار کند.

NNS هنگام ساخت زیرشبکه ها، گره های مراکز داده مستقل را ترکیب می کند. این امر به ریاضیات پروتکل ICP اجازه می‌دهد تا با استفاده از فناوری و رمزنگاری بیزانسی مقاوم در برابر خطا و رمزنگاری توسعه‌یافته توسط DFINITY، تضمین کند که زیرشبکه‌ها ضد دستکاری و غیرقابل توقف هستند. اگرچه زیرشبکه‌ها بلوک‌های اساسی کل شبکه کامپیوتری اینترنت هستند، اما برای کاربران و نرم‌افزار شفاف هستند. کاربران و نرم افزار قوطی فقط باید هویت قوطی را بدانند تا عملکردهایی را که به اشتراک می گذارد فراخوانی کنند.

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

رایانه اینترنتی همچنین شفافیت زیرشبکه ها را به روش های دیگر تضمین می کند. برای مثال، NNS می‌تواند زیرشبکه‌ها را تقسیم و ادغام کند تا بار را در کل شبکه متعادل کند. این نیز برای قوطی های میزبان شفاف است.

در این مثال، ما یک زیرشبکه خیالی به نام ABC داریم که میزبان 11 قوطی است. NNS به آن می گوید که تقسیم شود. زیرشبکه ABC با قوطی‌های 1-6 ادامه می‌یابد، و یک زیرشبکه جدید ایجاد می‌شود، Subnet XYZ، که با قوطی‌های 7-11 ادامه می‌یابد. هیچ یک از قوطی های درگیر با وقفه در سرویس مواجه نخواهند شد.

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

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

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

قوطی

هدف یک زیرشبکه میزبانی از قوطی ها است. Canisters در Hypervisor های اختصاصی اجرا می شوند و از طریق یک API مشخص شده عمومی با یکدیگر تعامل دارند. درون یک قوطی بایت کد WebAssembly است که می تواند روی یک ماشین مجازی WebAssembly و صفحات حافظه ای که در آن اجرا می شود اجرا شود. به طور معمول، بایت کد WebAssembly با کامپایل کردن یک زبان برنامه نویسی مانند Rust یا Motoko ایجاد می شود. آن بایت کد دارای یک زمان اجرا است که تعامل با API را برای توسعه دهنده آسان می کند.

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

به روزرسانی تماس ها باعث ایجاد تغییرات مداوم می شوند ، و همچنین ضد آب هستند زیرا پروتکل های رایانه ای blockchain ICP آنها را در هر گره در زیر شبکه اجرا می کنند. همانطور که انتظار دارید ، تماس ها در یک سفارش جهانی مداوم از تماس ها انجام می شود ، با استفاده از سازوکارهایی که امکان اجرای همزمان در یک محیط اجرای کاملاً قطعی را فراهم می کند. فقط در دو ثانیه تماس ها را به روز کنید.

در این مثال ، کاربر سفارش خرید را به مبادله مالی که در یک قوطی میزبان است ارسال می کند.

از طرف دیگر تماس های پرس و جو ، تغییرات را ادامه ندهید. هر تغییری که آنها در حافظه ایجاد می کنند پس از اجرا دور ریخته می شوند. آنها بسیار اجرا و ارزان هستند و فقط در چند میلی ثانیه کامل هستند. این امر به این دلیل است که آنها روی تمام گره های موجود در زیر شبکه اجرا نمی شوند ، این بدان معنی است که آنها سطح امنیتی کمتری را تأمین می کنند.

در این مثال ، کاربر درخواست خبری سفارشی می کند و تقریباً بلافاصله مطالب تازه تولید شده را برمی گرداند.

پایداری متعامد

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

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

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

در عوض ، تماس های پرس و جو ، تغییرات مداوم در حافظه ایجاد نمی کنند. و این اجازه می دهد تا در هر زمان معین ، تعداد تماس های پرس و جو پردازش موضوعات همزمان در داخل یک قوطی وجود داشته باشد. این تماس های پرس و جو در برابر عکس فوری از حافظه ثبت شده در آخرین ریشه نهایی حالت اجرا شده است.

سرانجام ، هیچ بحثی در مورد قوطی ها کامل نخواهد بود بدون اینکه ذکر شود که قوطی ها می توانند قوطی های جدیدی ایجاد کنند ، و این که قوطی ها می توانند خودشان را چنگ بزنند. شما می توانید با مشخص کردن Bytecode WebAssembly ، یک قوطی جدید ایجاد کنید و صفحات حافظه خالی شروع می شوند. هنگامی که یک قوطی خود را چنگ می زند ، یک نسخه تازه تخم ریزی شده ایجاد می شود که یکسان با صفحات حافظه در داخل است. Forking هنگام ایجاد خدمات اینترنتی مقیاس پذیر بسیار قدرتمند است.

مقیاس پذیری

اکنون توضیح سطح بالایی از خدمات اینترنتی ارائه می شود که مقیاس بندی می شود. قوطی ها در انواع مختلف ظرفیت خود مرزهای بالایی دارند. به عنوان مثال ، یک قوطی فقط می تواند 4 گیگابایت صفحات حافظه را به دلیل محدودیت اجرای WebAnsembly ذخیره کند. به همین دلیل ، هنگامی که ما می خواهیم خدمات اینترنتی ایجاد کنیم که به میلیاردها کاربر مقیاس می یابد ، باید از معماری های چند کانال استفاده کنیم.

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

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

رایانه اینترنتی برخی از ویژگی های جالب را برای اتصال کاربران نهایی به قوطی های جلویی ارائه می دهد. یکی از این اجازه می دهد تا نامهای دامنه از طریق NNS به چندین قوطی جلویی نقشه برداری شود. هنگامی که یک کاربر نهایی مایل به حل و فصل چنین نام دامنه است ، رایانه اینترنتی به کلیت گره های ماکت در تمام زیر شبکه هایی که میزبان قوطی های جلویی هستند نگاه می کند و آدرس های IP گره های ماکت را در نزدیکترین نزدیکی باز می گرداند. این نتیجه در اجرای کاربر نهایی درخواست های پرس و جو با ماکت های اطراف ، کاهش تأخیر ذاتی شبکه و بهبود تجربه کاربر ، ارائه مزایای محاسبات Edge بدون شبکه توزیع محتوا است.

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

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

سپس قوطی جلویی یک درخواست تماس پرس و جو متقاطع را به قوطی سطل داده که عکس را نگه می دارد ، می دهد.

اگر پاسخ تماس پرس و جو توسط قوطی سطل داده بازگردانده شود ، شامل محتوای استاتیک مانند عکس است ، می توان داده ها را در حافظه نهان ذخیره کرد. در چنین مواردی ، گره ماکت که تماس Query Canisters را در حال اجرا است می تواند پاسخ تماس پرس و جو را در حافظه نهان خود وارد کند.

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

با گذشت زمان ، فروشگاه های پرس و جو از گره ها محتوای استاتیک را جمع می کنند و داده هایی را که مورد علاقه کاربران مجاور است تولید می کند و تجربه کاربری سریعتر و بهتری را برای آنها فراهم می کند. به این ترتیب ، معماری Native Edge رایانه اینترنتی مزایای یک شبکه توزیع محتوا را فراهم می کند ، اما بدون توسعه دهندگان مجبور به انجام کار خاص و بدون نیاز به کمک به کمک یک سرویس اختصاصی جداگانه است.

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

هنگامی که یک UX/UI که در یک مرورگر وب یا روی تلفن هوشمند اجرا می شود ، مشخص کرد که کدام قوطی جلویی مسئول هماهنگی تغییرات در برخی از محتوا یا داده ها است ، می تواند با ارسال یک تماس بروزرسانی به رابط استاندارد خود ، آن محتوا یا داده ها را تغییر دهد.

سپس این قوطی جلویی به طور معمول تماس های به روزرسانی متقابل بیشتر را برای تأثیر تغییرات مورد نیاز انجام می دهد.

خدمات اینترنتی باز

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

BigMap می تواند Exabytes of Data را ذخیره کند ، و می توانید با استفاده از فقط یک خط کد ، اشیاء را برای آن بنویسید. این معماری با داشتن قوطی های جلویی و قوطی های سطل داده برای تقسیم مسئولیت اشیاء اختصاص داده شده به یک قوطی بین دو قوطی ، به صورت شفاف و پویا از بین می رود.

سرانجام ، برای ایجاد یک سرویس اینترنت باز واقعی ، مسئولیت همه قوطی های خود را به یک قوطی حاکمیت بازکن باز می کنید. اگر کارآفرین هستید ، با فروش برخی از این نشانه های حاکمیتی در روزهای اولیه ، بودجه توسعه را جمع می کنید. و احتمالاً شما با ارائه نشانه های حاکمیتی برای به دست آوردن اثرات بهتر شبکه - و برنده شدن ، طرح هایی را طراحی می کنید که شرکت کنندگان اولیه را در خدمات اینترنتی خود تحریک می کنند.

ما در Dfinity به طرز چشمگیری برای این blockchain عمومی جدید برای تقویت ظرفیت خلاقانه وب در حالی که اینترنت را به ریشه های رایگان و باز خود باز می گردانیم ، بسیار هیجان زده هستیم. برای کسب اطلاعات بیشتر در مورد فناوری پشت رایانه اینترنتی ، در رویداد راه اندازی سدیم به ما بپیوندید و با بارگیری DFINITY CANISTER SDK ، نوشتن کد را شروع کنید. _____

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.