Что такое Internet Computer (ICP) | Что такое Dfinity (ICP) | Что такое токен ICP

Последнее обновление —
Николай Заваров - Автор
Николай Заваров
Автор
Андрей Бондаренко - Редактор
Андрей Бондаренко
Редактор
Что такое Internet Computer (ICP) | Что такое Dfinity (ICP) | Что такое токен ICP

Проект Internet Computer (ICP) расширяет функциональность обычного интернета, превращая его из сети, объединяющей миллиарды людей (по протоколам TCP/IP), в публичную вычислительную платформу, которая предоставляет новые возможности миллионам разработчиков и предпринимателей (по протоколу ICP).

Он предлагает революционно новый способ создания массовых открытых интернет-сервисов, межотраслевых платформ, безопасных корпоративных систем и веб-сайтов, а также приложений DeFi, без использования традиционных ИТ-сервисов, таких как централизованные облачные вычисления, базы данных и брандмауэры.

Internet Computer создан на основе децентрализованного протокола (ICP), который является математически защищённым и объединяет вычислительные мощности тысяч независимых центров обработки данных по всему миру в единую бесшовную общедоступную вычислительную среду, которая работает на скорости интернета с неограниченной пропускной способностью, что позволяет предпринимателям и разработчикам переосмыслить принципы создания различных вещей.

Проект Internet Computer завершает блокчейн-триаду — Bitcoin, Ethereum и Internet Computer — которая демонстрирует три основные инновации в технологии. Эти три децентрализованные сети дополняют друг друга и служат разным целям: Bitcoin (криптовалюта), Ethereum (смарт-контракты) и Internet Computer (блокчейн-компьютер).

Технический обзор Internet Computer

Объяснение инфраструктуры платформы разработки и того, как программные контейнеры позволяют веб-сервисам масштабироваться на миллиарды пользователей.

В преддверии этого знаменательного события мы хотим предоставить читателям максимально подробный обзор работы сети.

Network Nervous System

Проект Internet Computer основан на протоколе блокчейн-компьютера под названием Internet Computer Protocol (ICP). Сама сеть состоит из иерархической структуры строительных блоков. Внизу находятся независимые центры обработки данных, в которых размещены специализированные аппаратные ноды.

Эти ноды представляют собой компьютеры, которые объединяются для создания подсетей. В подсетях размещаются программные контейнеры, которые представляют собой интероперабельные вычислительные блоки, загружаемые пользователями и содержащие как код, так и состояние.

Одним из элементов, делающих ICP уникальным, является Network Nervous System (NNS), которая отвечает за контроль, конфигурирование и управление в сети.

Центры обработки данных присоединяются к сети путём подачи заявки в NNS, которая отвечает за их добавление. Хотя сама система NNS имеет открытую систему управления, она контролирует допуск к участию в сети.

В некотором смысле она играет роль, эквивалентную ICANN в интернете, которая, помимо прочего, присваивает номера автономных систем тем, кто хочет запустить BGP-маршрутизаторы.

NNS выполняет широкий спектр задач по управлению сетью, включая мониторинг компьютеров нод для поиска статистических отклонений в сети Internet Computer, которые могут указывать на недостаточную производительность или недобросовестное поведение.

NNS также играет ключевую роль в экономике токенов сети. NNS генерирует новые токены ICP (ранее они назывались токенами DFN) для вознаграждения нод, которые управляются центрами обработки данных и нейронами, участвующими в голосовании в рамках NNS – именно с их помощью принимаются решения по поступающим к ней предложениям.

Когда NNS создаёт новые токены ICP для вознаграждения центров обработки данных и нейронов, в сети образуется инфляция.

В конечном итоге владельцы центров обработки данных и владельцы нейронов могут забрать свои токены и передать их владельцам и управляющим контейнеров. Владельцы и менеджеры контейнеров принимают токены, конвертируют их в циклы и используют эти циклы для зарядки своих контейнеров.

Когда контейнеры выполняют вычисления или, например, хранят память, циклы сжигаются, и в итоге для продолжения работы контейнеры необходимо зарядить дополнительным количеством циклов. Это создаёт дефляцию.

Подсети

Чтобы понять, что такое Internet Computer, вам необходимо разобраться в концепции подсетей, которые являются фундаментальными строительными блоками всей сети. Подсеть отвечает за размещение отдельного подмножества программных контейнеров, размещённых в сети Internet Computer.

Подсеть создаётся путём объединения нод из разных центров обработки данных, причём процесс объединения контролируется NNS. Компьютеры нод взаимодействуют через ICP для симметричной репликации данных и вычислений из программных контейнеров, которые на них размещены.

При построении подсетей NNS объединяет ноды из независимых центров обработки данных. Это позволяет алгоритмам протокола ICP гарантировать, что подсети будут защищены от взлома и смогут работать без остановок, используя технологию Byzantine fault-tolerant и криптографию, разработанную DFINITY.

Хотя подсети являются фундаментальными строительными блоками общей сети Internet Computer, они прозрачны для пользователей и программ. Пользователям и программному обеспечению контейнера необходимо знать идентификатор контейнера только для вызова функций, которые он предоставляет для совместного использования.

Эта прозрачность является продолжением фундаментальных принципов дизайна интернета. В интернете, если пользователь хочет подключиться к какой-либо программе, ему нужно только знать IP-адрес компьютера, на котором работает программа, и TCP-порт, который она прослушивает.

В системе Internet Computer, если пользователь хочет вызвать функцию, ему достаточно знать идентификатор контейнера и сигнатуру функции.

Подобно тому, как интернет обеспечивает бесшовную связь, DFINITY предлагает бесшовную среду для работы программ, где любая программа, получившая разрешение, может напрямую вызывать любую другую программу, не зная ничего о работе сети в целом.

Internet Computer обеспечивает прозрачность подсетей и другими способами. Например, NNS может разделять и объединять подсети для того, чтобы сбалансировать нагрузку по всей сети. Эта функция также является прозрачной для размещённых контейнеров.

В примере мы возьмём воображаемую подсеть ABC, в которой находится 11 контейнеров. NNS приказывает ей разделиться. Подсеть ABC продолжает работать с контейнерами 1-6, при этом создаётся новая подсеть под названием XYZ, которая будет работать с контейнерами 7-11. Ни у одного из задействованных контейнеров не возникает перебоев в работе.

Когда вы загружаете свои контейнеры в Internet Computer, вам нужно выбрать определённый тип подсети. На самом деле существует специальная подсеть, в которой размещается NNS, но загрузить туда свои контейнеры вы не сможете. Вместо этого вы должны выбрать тип подсети, например, “data” (данные), “system” (система) или “fiduciary” (доверительное управление).

Каждый тип подсети предоставляет вашему контейнеру определённые свойства и возможности. Например, если ваш контейнер размещен в подсети “данные“, он может обрабатывать вызовы, но не может отправлять вызовы другим контейнерам. Для этого вам понадобится подсеть “система“.

Если вы хотите, чтобы ваш контейнер мог хранить какую-то сумму токенов ICP или отправлять циклы на другие контейнеры, вам понадобится подсеть ответственного хранения. По этим причинам контейнеры управления могут быть размещены только в подсетях типа “доверительное управление“.

Возможности подсетей частично зависят от заложенного в них механизма отказоустойчивости. Это чрезвычайно интересная область фундаментальной науки, которой мы надеемся вскоре поделиться с общественностью, в том числе новой криптографией, которая позволяет NNS восстанавливать повреждённые подсети.

Контейнеры

Задача подсети – размещение контейнеров. Контейнеры работают в выделенных гипервизорах и взаимодействуют друг с другом через общедоступный API. Внутри контейнера находится байткод WebAssembly, который может выполняться на виртуальной машине WebAssembly и на страницах памяти, в которых она работает.

Как правило, байткод WebAssembly создается путём компиляции кода, написанного на языке программирования, таком как Rust или Motoko. В этот байткод будет встроена среда выполнения, облегчающая разработчику взаимодействие с API.

Примечание: приведённый здесь пример является псевдокодом.

В сети Internet Computer функции, предоставляемые контейнерами, вызываются одним из двух способов. Они могут быть вызваны либо как вызовы обновления, либо как вызовы запроса.

Существенное различие между ними заключается в том, что когда вы вызываете функцию в качестве вызова обновления, сохраняются все изменения, которые она вносит в данные контейнера, но если функция вызывается в качестве вызова запроса, все изменения, которые она вносит в память, отбрасываются после её завершения.

Вызовы обновления вносят долгосрочные изменения, при этом они также защищены от взлома, поскольку компьютерные протоколы блокчейна ICP запускают их на каждой ноде в подсети.

Вполне логично, что вызовы выполняются в последовательном глобальном порядке, используя механизмы, поддерживающие их одновременное исполнение в полностью детерминированной среде. Вызовы обновления завершаются всего за две секунды.

В этом примере пользователь отправляет ордер на покупку на финансовую биржу, расположенную внутри контейнера.

Вызовы запроса, с другой стороны, не сохраняют изменения. Любые изменения, которые они вносят в память, отбрасываются после их завершения. Они отличаются высокой производительностью, стоят недорого и выполняются всего за несколько миллисекунд. Это связано с тем, что они работают не на всех нодах подсети, соответственно, они обеспечивают более низкий уровень безопасности.

В этом примере пользователь запрашивает пользовательскую ленту новостей и почти сразу же получает только что сгенерированный контент.

Ортогональное сохранение

Одной из самых интересных особенностей Internet Computer является способ долгосрочного сохранения данных разработчиками. Разработчикам не нужно думать о сохранении – они просто пишут свой код, и сохранение происходит автоматически.

Данная особенность называется ортогональным сохранением. Это происходит благодаря тому, что Internet Computer сохраняет в базе данных страницы памяти, в которых выполняется код.

Возможно, вам интересно, как всё это работает. Что касается вызовов обновления, которые могут изменять страницы памяти, то контейнеры являются программными субъектами. Это означает, что в любой момент времени внутри контейнера может находиться только один поток выполнения.

Хотя внутри канистры существует только один поток выполнения, по умолчанию вызовы обновления между канистрами могут чередоваться. Это происходит, когда выполняются кросс-контейнерные вызовы обновления, при этом они блокируются, позволяя переместить поток выполнения на новый вызов обновления.

Вызовы запроса, напротив, не вносят постоянных изменений в память. Это позволяет в любой момент времени иметь внутри контейнера любое количество параллельных потоков, обрабатывающих вызовы запроса. Вызовы запроса выполняются в отношении снапшота памяти, записанного в корне последнего завершенного состояния.

Наконец, обсуждение контейнеров не было бы полным без упоминания о том, что контейнеры могут создавать новые контейнеры, и что для любого контейнера можно сделать форк. Вы можете создать новый контейнер, просто указав байткод WebAssembly, при этом страницы памяти в нём сначала будут пустыми.

При форке контейнера создаётся новая копия, идентичная во всём, вплоть до страниц памяти внутри. Форки оказались очень мощным инструментом при создании масштабируемых интернет-сервисов.

Масштабируемость

Теперь давайте перейдём к высокоуровневому объяснению интернет-сервисов с поддержкой масштабирования. Контейнеры имеют верхние лимиты для различных типов ёмкости. Например, контейнер может хранить только 4 ГБ страниц памяти из-за ограничений реализации WebAssembly.

Читайте также Обзор Elrond: блокчейн с поддержкой шардинга, ориентированный на масштабирование

По этой причине, когда мы хотим создать интернет-сервисы с возможностью масштабирования до миллиардов пользователей, нам нужно использовать многоконтейнерные архитектуры.

Хотелось бы надеяться, что для создания масштабируемого интернет-сервиса достаточно создать некий специальный контейнер, сделать множество копий этого контейнера, а затем распределить сегменты пользовательского контента по разным контейнерам. К сожалению, эта архитектура слишком проста по ряду причин.

Действительно, каждый дополнительный контейнер увеличивает общий объём памяти. Верно и то, что каждый дополнительный контейнер увеличивает общую пропускную способность для вызовов обновления и запроса. Однако масштабировать запросы вызовов для контента конкретного пользователя нельзя.

Кроме того, необходимо перебалансировать пользовательский контент всякий раз, когда мы увеличиваем емкость системы, увеличивая количество сегментов в контейнерах, и это не очень хорошая архитектура.

Также нет очевидного способа обработки запросов конечных пользователей из копий, которые находятся в непосредственной близости от них. Нам понадобятся как “фронтенд“, так и “бэкенд” контейнеры.

Internet Computer предоставляет некоторые интересные возможности для подключения конечных пользователей к “фронтенд” контейнерам. Одна из этих функций позволяет сопоставлять доменные имена с несколькими “фронтенд” контейнерами через NNS.

Когда конечный пользователь хочет использовать такое доменное имя, Internet Computer просматривает совокупность нод-реплик во всех подсетях, в которых размещены “фронтенд” контейнеры, и возвращает IP-адреса нод-реплик, находящихся в непосредственной близости.

В результате конечный пользователь выполняет запросы на близлежащих репликах, что уменьшает задержку сети и улучшает пользовательский опыт, обеспечивая преимущества граничных вычислений без участия сети распределения контента.

Чтобы наилучшим образом использовать эту функциональность, нам нужна классическая архитектура, включающая “фронтенд” и “бэкенд” контейнеры для хранения данных. В данном примере веб-браузер хочет загрузить изображение профиля.

Первым делом происходит сопоставление веб-браузера с “фронтенд” контейнером, который работает в подсети ближайшей ноды. Затем веб-браузер отправит запрос на получение фотографии на эту ноду.

После этого “фронтенд” контейнер делает кросс-контейнерный запрос вызова к контейнеру данных, в котором хранится фотография.

Если ответ на запрос, возвращённый контейнером данных, включает статическое содержимое, например, фотографию, то данные могут сохраняться в кэше. В таких случаях нода-реплика, выполняющая запрос от “фронтенд” контейнера, может занести ответ на него в свой кэш запросов.

Разумеется, механизм кэширования запросов полностью прозрачен для кода “фронтенд” контейнеров. После того как “фронтенд” контейнер, к которому обратился пользователь, соберёт всю необходимую информацию, он может вернуть содержимое либо через ответ на запрос, либо через конечную точку HTTP.

Со временем кэш запросов ноды накапливает статическое содержимое и генерирует данные, представляющие интерес для близлежащих пользователей, обеспечивая для них более быстрый и качественный пользовательский опыт.

Таким образом, собственная архитектура сети Internet Computer обеспечивает преимущества сети распространения контента, при этом разработчикам не приходится делать что-либо особенное, а также нет необходимости прибегать к помощи отдельной проприетарной службы.

Для вызовов обновления классическая архитектура использует другой подход. Для того, чтобы предотвратить такие проблемы, как потеря обновлений, необходимо упорядочить обновления пользовательского контента и данных.

Обычно это достигается путём сопоставления пользователя с определённым “фронтенд” контейнером, например, через хеширование его имени пользователя.

Когда UX/UI, работающий в веб-браузере или на смартфоне, определит, какой внешний контейнер отвечает за координацию изменений определённого контента или определённых данных, он может изменить этот контент или данные, отправив вызов обновления в свой стандартный интерфейс.

Затем этот “фронтенд” контейнер обычно отправляет дополнительные вызовы обновления между контейнерами, чтобы внести необходимые изменения.

Читайте также Обзор Algorand: почему ALGO заслуживает вашего внимания

Открытые интернет-сервисы

В заключение давайте обсудим разработку открытых интернет-сервисов с использованием двухуровневой архитектуры с “фронтенд” контейнерами и “бэкенд” контейнерами для хранения данных. Прежде всего, при написании кода для “фронтенд” контейнера вы существенно облегчите себе жизнь, используя существующий библиотечный класс под названием BigMap.

BigMap позволяет хранить экзабайты данных, и вы можете записывать в него объекты с помощью всего одной строки кода. Эта архитектура будет прозрачно и динамически масштабироваться за счет того, что “фронтенд” контейнеры и контейнеры хранения данных могут дублироваться, чтобы разделить между двумя контейнерами ответственность за объекты, доверенные одному.

Наконец, чтобы создать настоящий открытый интернет-сервис, вы можете возложить ответственность за все свои контейнеры на открытый токенизированный управляющий контейнер. Если вы предприниматель, вы сможете собирать средства на развитие, продавая некоторые из токенов управления на ранних этапах.

И вы можете создавать схемы стимулирования ранних участников вашего интернет-сервиса, выдавая им токены управления, чтобы получить лучший сетевой эффект и выиграть за счёт этого.

Токен ICP

Что представляет собой утилитарный токен ICP?

Токен ICP (ранее известный как “DFN“) является основным механизмом, который позволяет обширному интернет-сообществу участвовать в управлении сетью Internet Computer. Токены ICP также могут быть преобразованы в циклы, которые затем используются для запуска веб-сайтов и приложений, а также для поддержки вычислений в Internet Computer через контейнеры.

Хотите заработать токены прямо сейчас? Нажмите здесь

Как и где можно купить ICP

Для начала вам нужно будет купить одну из основных криптовалют, обычно это Bitcoin (BTC), Ethereum (ETH), Tether (USDT) и так далее.

Для этой цели мы будем использовать биржу Binance, поскольку она является одной из крупнейших криптовалютных бирж, принимающих фиатные валюты.

СтейблкоиныФиат
Биржа
Актив
Цена
ICP/USDT
13.121

Binance – популярная криптовалютная биржа, которая была основана в Китае, но затем перенесла свою штаб-квартиру на дружественный к блокчейн-технологиям остров Мальта в ЕС.

Binance пользуется популярностью в основном благодаря сервису обмена криптовалют на другие криптовалюты. Binance появилась и быстро захватила огромную часть рынка во время ажиотажа 2017 года и с тех пор стала крупнейшей криптовалютной биржей в мире.

После завершения процесса KYC вам будет предложено добавить способ оплаты. Здесь вы можете выбрать кредитную/дебетовую карту или воспользоваться банковским переводом и купить одну из основных криптовалют, таких как Bitcoin (BTC), Ethereum (ETH), Tether (USDT).

Зарегистрироваться в Binance

После подтверждения депозита вы можете приобрести ICP на следующих биржах: Binance, Huobi Global, OKEx, Coinbase Pro и WBF Exchange.

Помимо перечисленных выше бирж, криптовалюта Internet Computer доступна на нескольких популярных платформах, которые имеют приличные ежедневные объёмы торгов и огромную пользовательскую базу. Это гарантирует, что вы сможете продать свои монеты в любое время, при этом плата за услуги будет максимально низкой.

Мы рекомендуем вам также зарегистрироваться на этих биржах, поскольку после включения в листинг ICP наверняка привлечёт большие объёмы от пользователей, а это значит, что у вас появятся отличные возможности для торговли!

Лучшие биржи для торговли токенами и монетами. Следуйте инструкциям и зарабатывайте неограниченные суммы денег

Дисклеймер: торговля криптовалютой является очень рискованным делом. Обязательно изучите все эти риски, особенно если вы новичок. Информация в этом сообщении является мнением автора, а не профессиональной финансовой рекомендацией. Вы сами несёте ответственность за то, что делаете со своими средствами.

Надеемся, что этот пост поможет вам. Если он вам понравился, обязательно поделитесь с другими. Спасибо!

Николай Заваров - АвторНиколай ЗаваровАвтор

Николай — опытный специалист в финансовых рынках и сооснователь IamForexTrader. С 2014 года он успешно торгует на Форексе и с 2017 года активно участвует в криптовалютном рынке.

Он разрабатывает инвестиционные стратегии, адаптируемые под любой уровень опыта, и с 2018 года активно инвестирует в акции, облигации и ETF.

0 комментариев

Читайте дальше: