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

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

Блокчейн Internet Computer и специальные узловые машины, на которых размещена его сеть, работают под управлением NNS. Однако абсолютно любой человек в мире может подавать предложения в NNS, и когда они принимаются, они немедленно выполняются, полностью автоматически, что позволяет сети адаптироваться и развиваться в реальном времени. NNS может выполнять такие задачи, как обновление узловых машин для обновления протокола или применения исправлений безопасности, настройки экономических параметров или формирования новых блокчейнов подсети для увеличения пропускной способности сети в любое время. Поскольку NNS работает в рамках протоколов Интернет-компьютера, он может вносить изменения, не прерывая работу сети и не нарушая безопасности.

Сетевая нервная система работает, позволяя пользователям ставить токены управления ICP для создания голосующих нейронов. Любой может создать нейрон, и мы ожидаем, что после Генезиса будут созданы десятки тысяч нейронов, которые вместе будут реализовывать волю сообщества, опосредованную алгоритмами. Нейроны похожи на счета, в которых должно быть отправлено уведомление о снятии средств, где продолжительность периода уведомления представляет собой конфигурацию, известную как «задержка закрытия». Право голоса нейронов и их относительное право на вознаграждение за голосование пропорционально количеству поставленных ICP, длительности настроенной задержки растворения и их «возрасту». Нейроны можно заставить голосовать вручную или автоматически, следуя за другими нейронами в форме жидкой демократии.

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

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



Обзор

Цель NNS - позволить управлять компьютерной сетью Интернет открытым, децентрализованным и безопасным образом. Он имеет полный контроль над всеми аспектами сети. Например, он может обновлять протокол и программное обеспечение, используемые узловыми машинами, на которых размещена сеть; он может создавать новые блокчейны подсети для увеличения пропускной способности сети; он может разделять подсети, чтобы разделить их нагрузку; он может настраивать экономические параметры, которые определяют, сколько должны платить пользователи за вычислительные мощности; и, в экстремальных ситуациях, он может заморозить вредоносное программное обеспечение смарт-контрактов для защиты сети; и многое другое. NNS работает, принимая предложения и решая принять или отклонить их на основе активности голосования «нейронов», созданных участниками сети.

Участники также используют нейроны для подачи новых предложений. После подачи предложения либо принимаются, либо отклоняются, что может произойти почти сразу или после некоторой задержки, в зависимости от того, как проголосует совокупность нейронов. Каждое предложение является экземпляром определенного «типа предложения», который определяет, какую информацию оно содержит. Для каждого типа предложения NNS поддерживает соответствующую системную функцию, которую она вызывает всякий раз, когда принимается предложение этого типа. Когда предложение принимается NNS, она вызывает соответствующую системную функцию, извлекая информацию из содержания предложения для заполнения параметров. Каждый тип предложения относится к определенной «теме предложения», такой как «#NodeAdmin» или «#NetworkEconomics», которая определяет детали того, как оно будет обрабатываться. Чтобы пользователи (нейроны) не рассылали спам в NNS предложениями, взимается плата. взимается с нейрона, подавшего предложение, если оно отклоняется.

NNS решает, принять или отклонить предложения, наблюдая, как нейроны излучают голоса. Любой может создать нейрон, заблокировав балансы собственного служебного токена Интернет-компьютера (ICP), который размещен в реестре внутри NNS. Когда пользователь создает нейрон, заблокированный баланс ICP может быть разблокирован только путем расходования («уничтожения») нейрона. Пользователи заинтересованы в создании нейронов, потому что они получают вознаграждение, голосуя за предложения. Вознаграждения принимают форму новых ICP, созданных NNS. Количество вознаграждений ICP, выплачиваемых нейрону, зависит от таких факторов, как размер заблокированного баланса, минимальный оставшийся период блокировки («задержка растворения»), «возраст» нейрона, доля возможных голосов, в которых он участвовал, и сумма активности голосования по всем нейронам, поскольку общая сумма выплаченных вознаграждений ограничена и должна быть разделена между избирателями.

В любой момент у каждого нейрона есть текущая настроенная «задержка растворения». Это определяет, сколько времени потребуется для растворения, если он будет переведен в «режим растворения». После того, как нейрон переведен в «режим растворения», его задержка растворения уменьшается с течением времени, подобно кухонному таймеру, пока не достигнет нуля, после чего его владелец может выполнить последнее действие расходовать, чтобы разблокировать баланс ICP. Задержка растворения создает экономический стимул для владельцев нейронов голосовать с целью максимизации стоимости их заблокированных балансов ICP в будущем. ICP - это показатель успеха сети в долгосрочной перспективе, без краткосрочной волатильности, это создает экономический стимул голосовать в лучших интересах сети. Владельцы нейронов могут свободно настраивать более высокие задержки растворения, максимум до восьми лет, но не могут уменьшить задержку растворения, кроме как естественным течением времени. NNS выплачивает более высокие награды за голосование, чем выше задержка роспуска, побуждая пользователей вступать в игру, в которой создается экономический стимул голосовать в соответствии с очень долгосрочным видением.

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

Ожидается, что большая часть общего предложения ICP будет заблокирована для получения вознаграждений. Это обеспечивает управление сетью Интернет-компьютера, делая для злоумышленника сложным и непомерно дорогим приобретение достаточно большой доли, чтобы получить значительное влияние. Поскольку владельцы нейронов могут пожелать максимизировать свое вознаграждение, голосуя по всем предложениям, большинство нейронов будут либо активно управляться, либо настроены так, чтобы следовать за другими нейронами, чтобы они могли голосовать автоматически. На практике, как только доверенные нейроны проголосуют за предложения, большинство других нейронов также проголосуют в результате каскадных отношений следования. Это означает, что NNS обычно может быстро определить, желает ли большинство от общего числа голосов, представленных всеми нейронами, принять или отклонить предложение, и принять соответствующее решение по предложению. Однако NNS не может зависеть от получения такого большинства, поскольку, в принципе, владельцы нейронов могут не определять правила следования или они могут просто не голосовать.

Предложения

Формат

Каждое предложение, представленное в NNS, имеет следующие поля:

  • Резюме: текст, содержащий краткое описание предложения, состоящее из максимум 280 байтов.
  • URL: веб-адрес дополнительного содержания, необходимого для оценки предложения, указанный с помощью HTTPS. Например, адрес может описывать контент, поддерживающий присвоение DCID (идентификатор центра обработки данных) новому центру обработки данных.
  • Предлагающий: идентификатор нейрона, отправившего предложение. Когда предложение подано, на его баланс вносится «плата» в случае его отклонения. Таким образом, баланс должен быть достаточно большим, чтобы оплатить (все) отклонения. Мы требуем, чтобы нейрон имел задержку растворения ≥ 6 месяцев для голосования, и это относится и к подаче предложений.
  • Тип предложения. Тип предложения. Это определяет, к какой теме оно принадлежит (например, #NodeAdmin), системную функцию, которая будет обрабатывать предложение, если оно будет принято, а также тип и структуру параметров, которые будут переданы этой функции.
  • Параметры: параметры, которые будут переданы системной функции, которая будет вызываться, если предложение будет принято, в зависимости от его типа. Когда предложение подано, NNS проверяет параметры.

NNS присваивает уникальный идентификатор каждому полученному предложению.

NNS присваивает уникальный идентификатор каждому полученному предложению.

Темы

Тема предложения, которая определяется его типом, определяет, как оно будет обработано. Например, NNS может потребовать от избирателей большей степени согласия или попыток ускорить обработку предложений по некоторым темам. Кроме того, нейроны следуют за другими нейронами в зависимости от темы. Начальные темы включают:

  • #NeuronManagement: специальная тема, с помощью которой нейрон могут управляться подписчиками по этой теме (в этом случае нет возврата к умолчанию). Голоса по этой теме не включаются в историю голосования нейрона. В предложениях по этой теме голосование разрешается только тем, кто подписан на нейрон по теме, к которой относятся предложения. Поскольку набор допущенных к голосованию предложений по этой теме ограничен, предложения по этой теме имеют более короткий период голосования, чем обычно.
  • #ExchangeRate: Все предложения предоставляют информацию в «реальном времени» о рыночной стоимости ПМС, измеренной Специальным правом заимствования (СДР) Международного валютного фонда (МВФ), что позволяет ННС конвертировать ПМС к циклам (которые вычисляют мощность) со скоростью, которая сохраняет их реальную стоимость постоянной. Поскольку предложения по этой теме очень часты, у них более короткий период голосования, и голоса по этой теме не включаются в историю голосования нейрона.
  • #NetworkEconomics: Предложения, которые регулируют экономику сети - например, определяют, какие вознаграждения должны быть выплачены операторам узлов.
  • #Governance: Все предложения, которые управляют управлением - например, движения и конфигурация определенных параметров.
  • #NodeAdmin: все предложения, которые каким-то образом управляют машинами узлов, включая, помимо прочего, обновление или настройку ОС, обновление или настройку инфраструктуры виртуальных машин, а также обновление или настройку программного обеспечения реплики узла.
  • #ParticipantManagement: все предложения, которые управляют участниками сети, например, предоставление и отзыв DCID (идентификаторы центра обработки данных) или NPID (идентификаторы провайдера узлов).
  • #SubnetManagement: все предложения по администрированию сетевых подсетей - например, создание новых подсетей, добавление и удаление узлов подсети и разделение подсетей.
  • #NetworkCanisterManagement: Установка и обновление «системных» накопителей, принадлежащих сети, например обновление NNS.
  • #KYC: предложения, которые обновляют информацию о KYC в нормативных целях - например, во время первоначального распределения ICP Genesis в форме нейронов.
  • #NodeProviderRewards: Тема предложений по вознаграждению поставщиков узлов.

Типы

Типы первоначальных предложений включают:

  • ManageNeuron (#NeuronManagement, Restricted Voting)
    Этот тип предложения вызывает основную функцию указанного целевого нейрона. Только последователи целевого нейрона могут голосовать за эти предложения, что эффективно обеспечивает последующим контроль над целевым нейроном. Это может предоставить группе людей удобные и надежные средства управления важным нейроном. Например, нейрон может удерживать большой баланс или принадлежать к организации с высокой репутацией и быть опубликованным, чтобы многие другие нейроны могли следить за его голосом. В обоих случаях безопасное управление закрытым ключом принципала может быть проблематичным. (Либо хранится одна копия, что очень небезопасно и позволяет одной стороне взять на себя управление, либо группа лиц должна разделить ответственность - например, с использованием пороговой криптографии, что является сложным и трудоемким). Чтобы решить эту проблему, используя этот тип предложения, важный нейрон можно настроить так, чтобы он следил за нейронами, контролируемыми отдельными членами команды. Теперь они могут подавать предложения, чтобы заставить важный нейрон выполнять действия, которые принимаются тогда и только тогда, когда большинство из них голосует за принятие. (Отправка такого предложения стоит небольшого вознаграждения, чтобы предотвратить атаки типа «отказ в обслуживании».) Практически любая команда на целевом нейроне может быть выполнена, включая команды, которые изменяют следующие правила, позволяя набору членов команды быть динамичным. Только последний этап растворения нейрона после того, как его задержка растворения достигает нуля, не может быть выполнен с использованием этого типа предложения, поскольку это позволило бы передать контроль / «владение» заблокированным балансом. (Единственное исключение из этого правила относится к некоммерческим организациям, которым может быть разрешено растворять свои нейроны без использования начального закрытого ключа.) Чтобы нейрон случайно не попал под злонамеренный контроль закрытого ключа принципала, закрытый ключ может быть уничтожен, так что нейрон может контролироваться только его последователями, хотя это делает невозможным впоследствии разблокировать баланс.
  • ManageNetworkEconomics (#NetworkEconomics)
    Это отдельный тип предложения, который может обновлять один или несколько экономических параметров:
    —— Отклонить стоимость: количество ICP с автора отклоненного предложения будет взиматься плата - чтобы предотвратить рассылку необоснованных предложений.
    —— Минимальная ставка нейрона: Установите минимальное количество ICP, необходимое для создания нейрона. Тот же предел должен соблюдаться при увеличении задержки растворения или изменении состояния нейрона с растворения на старение.
    —— Плата за управление нейроном: стоимость в ICP на предложение по управлению нейроном. Здесь NNS выполняет работу от имени определенного нейрона, и будет взиматься небольшая плата, чтобы предотвратить чрезмерное использование этой функции (например, спам).
    —— Минимальная скорость ICP / SDR : Во избежание ошибок существует нижняя граница для скорости ICP / SDR, регулируемая экономическими предложениями сети.
    —— Задержка растворения порожденных нейронов: задержка растворения нейрона, порожденного из зрелость существующего нейрона.
    —— Максимальное вознаграждение поставщика узла: максимальное вознаграждение, которое будет распределено между поставщиками узлов в одном событии распространения (предложении).
    —— Операционный сбор: сбор за транзакцию, который должен быть оплачен за каждую транзакцию в бухгалтерской книге.
    —— Максимальное количество предложений для каждой темы: максимальное количество предложений, которые необходимо сохранить. , по теме. Когда общее количество предложений по данной теме превышает это число, самые старые предложения, которые достигли «окончательного» состояния, могут быть удалены для экономии места.
  • Предложение (#Governance)
    Предложение - это текст, который можно принять или отклонить. При принятии движения код не выполняется. Принятое движение должно определять будущую стратегию компьютерной экосистемы Интернет.
  • ApproveGenesisKYC (#KYC)
    Когда новые нейроны создаются в Genesis, у них GenesisKYC = false. Это ограничивает действия, которые они могут выполнять. В частности, они не могут порождать новые нейроны, и как только их задержки растворения равны нулю, они не могут быть выплачены, а их балансы разблокированы для новых учетных записей. Это предложение устанавливает GenesisKYC = true для групп участников.
    (Особое примечание: Событие Genesis распределяет все ICP в виде нейронов, принципалы которых должны быть KYCed. Следовательно, все нейроны, созданные после Для Genesis GenesisKYC = true устанавливается автоматически, поскольку они должны быть получены из балансов, которые уже прошли KYC.)
  • AddOrRemoveNodeProvider (#Participant Management)
    Назначьте (или отзовите) удостоверение поставщику узла, связав ключевую информацию о связанном юридическом лице, которая должна предоставить способ однозначной его идентификации.
  • RewardNodeProvider (#NodeProviderRewards)
    Предложите вознаградить поставщика узлов Gen-1 в размере ICP в качестве компенсации за предоставление узлов Gen-1 для IC.
  • SetDefaultFollowees (#Governance)
    Укажите список подписчиков, которые должен иметь только что созданный нейрон.

Ниже приведен список типов предложений, которые вызывают другие накопители NNS:

  • CreateSubnet (#SubnetManagement)
    Объедините указанный набор узлов, обычно взятых из центров обработки данных и операторов таким образом, чтобы гарантировать их независимость, в новую децентрализованную подсеть. Выполнение этого внешнего обновления сначала инициирует новый экземпляр протокола генерации распределенного ключа. Транскрипт этого протокола записывается в новую запись подсети в реестре вместе с информацией о начальной конфигурации для подсети, откуда узлы, составляющие подсеть, получают ее.
  • AddNodeToSubnet (#SubnetManagement)
    Добавьте новый узел в подсеть. В настоящее время узел не может быть назначен подсети. Выполнение этого предложения изменяет существующую запись подсети для добавления узла. С точки зрения NNS, это обновление представляет собой простое обновление записи подсети в реестре.
  • InstallNetworkCanister (#NetworkCanisterManagement)
    Предложение по добавлению нового накопителя для установки и выполнения в подсети NNS. Корневой накопитель, который контролирует все накопители в NNS, кроме самого себя, обрабатывает этот тип предложения. Вызов также ожидает установки модуля Wasm.
  • UpgradeNetworkCanister (#NetworkCanisterManagement)
    Предложение по обновлению существующего накопителя в подсети NNS. Этот тип предложения выполняется корневым накопителем. Помимо обновления модуля Wasm целевой канистры, в предложении также можно установить информацию авторизации и распределения.
  • BlessReplicaVersion (#NodeAdmin)
    Предложение благословить новую версию, до которой можно обновить реплики. Предложение регистрирует версию реплики (идентифицируемую хешем установочного образа) в реестре. Помимо создания записи для этой версии, предложение также добавляет эту версию в список «благословенных версий», которые можно установить в подсети. Само по себе это предложение не влияет на обновление. (В будущем в любой момент времени будет только одна благословенная версия программного обеспечения-реплики.)
  • RecoverSubnet (#SubnetManagement)
    Обновление CUP восстановления подсети (используется для восстановления подсетей, которые остановились). Узлы, которые находят CUP восстановления для своей подсети, загрузят этот CUP из реестра и перезапустят реплику из этого CUP.
  • UpdateSubnetConfig (#SubnetManagement)
    Обновление конфигурации подсети. Это предложение обновляет запись подсети в реестре, при этом изменения регистрируются узлами в подсети, когда они ссылаются на соответствующую версию реестра. Конфигурация подсети включает параметры протокола, которые должны быть согласованы во всей подсети (например, размеры сообщений).
  • AssignNPID (#ParticipantManagement)
    Назначает идентификатор оператору узла, связывая ключевую информацию, касающуюся его владения, юрисдикции, в которой он расположен, и другую информацию. Оператор узла хранится как запись в реестре. Он содержит оставшийся допуск узла для этого оператора узла, то есть количество узлов, которое оператор узла все еще может добавить к IC. Когда оператор узла добавляет дополнительный узел, оставшийся припуск уменьшается.
  • RootUpgrade (#NetworkCanisterManagement)
    Предложение по обновлению корневого накопителя в подсети NNS. Предложение обрабатывается канистрой Lifeline, которая контролирует корневую канистру. Предложение обновляет модуль Wasm, а также настройки авторизации.
  • SetICPSDR (#ExchangeRate)
    Сообщите NNS о рыночной стоимости 1 ICP, измеренной с помощью SDR МВФ. Этот параметр влияет на ценообразование за циклы (поскольку стоимость циклов должна быть постоянной по отношению к SDR IMF).
  • UpgradeSubnetToReplicaVersion (#SubnetManagement)
    Обновить версию реплики, работающую в данной подсети. Предложение изменяет версию реплики, которая используется в указанной подсети. Версия должна содержаться в списке благословенных версий реплик. Обновление выполняется, когда подсеть создает следующий регулярный CUP.
  • ClearProvisionalWhitelist (#NetworkEconomics)
    Очищает предварительный белый список, который позволяет перечисленным участникам создавать накопители с циклами. Механизм нужен только для начальной загрузки и тестирования, после чего его нужно деактивировать.
  • RemoveNodeFromSubnet (#SubnetManagement)
    Удаление узла из подсети. Затем он становится доступным для переназначения. Выполнение этого предложения изменяет существующую запись подсети для удаления узла. С точки зрения NNS, это обновление представляет собой простое обновление записи подсети в реестре.
  • SetAuthorizedSubnetworks (#Governance)
    сообщает накопителю циклов, что определенный принципал авторизован на использование определенных подсетей (из списка). Также может использоваться для установки списка подсетей «по умолчанию», которые могут использовать принципалы без специальной авторизации.
  • SetFirewallConfig (#SubnetManagement)
    Измените конфигурацию брандмауэра в реестре (настраивает, с какими граничными узлами будут взаимодействовать реплики блокчейна подсети).
  • UpdateNodeOperatorConfig (#NodeAdmin)
    Изменение разрешения оператора узла в реестре.
  • StopOrStartNNSCanister (#NetworkCanisterManagement)
    Остановите или запустите контейнер NNS.

Токены ICP

ICP - это собственные служебные токены, которые играют в сети три ключевые роли:

  1. Содействие управлению сетью
    Токены ICP могут быть заблокированы для создания нейронов, которые участвуют в управлении сетью путем голосования, благодаря чему они могут получать экономические вознаграждения.
  2. Производство циклов для вычислений
    ICP обеспечивает исходное хранилище значений, которое может быть преобразовано в «циклы», то есть вычисление мощности в роли топлива, которое сжигается при его использовании. NNS преобразует ICP в циклы с переменной скоростью, поэтому пользователи сети всегда могут создавать новые циклы с примерно постоянной стоимостью в реальном выражении, так что стоимость приобретения топлива предсказуема.
  3. Вознаграждение участников
    Сеть создает новый ICP для поощрения и стимулирования тех, кто играет важные роли, которые позволяют сети функционировать, в том числе: а) предоставление «наград за голосование» тем, кто участвует в управлении, и b) предоставление «вознаграждений поставщикам узлов» тем, кто эксплуатирует узловые машины, на которых размещается сеть.

Бухгалтерская книга

Реестр ICP размещен в NNS и записывает все балансы ICP в виде электронной таблицы. Каждая строка называется «учетной записью», в которой есть два поля (т. Е. Два «столбца»):

  1. Идентификатор учетной записи (в байтах)
    Уникальное значение, производное от идентификатора «принципала», который «контролирует» учетную запись. В настоящее время принципал должен быть либо: (i) владельцем пары открытых ключей, либо (ii) емкостным смарт-контрактом, который является частью NNS. Идентификаторы учетных записей получаются путем хеширования объединения разделителя домена, идентификатора участника и дополнительной учетной записи (или нулей, если дополнительная учетная запись не указана).
  2. Баланс (положительное целое число, представляющее одну сотую миллионной ICP)
    Количество ICP, назначенных основному лицу счета.

Если принципалом является открытый ключ или накопитель, они могут применить к учетной записи следующую операцию:

  1. Отправить
    Отправить часть баланса ICP в другой аккаунт. Если все ICP отправляются на другую учетную запись, то отправляющая учетная запись перестает существовать (т. Е. Удаляется из бухгалтерской книги).
  2. Уведомить
    Когда местом назначения отправленных средств является счет контейнера NNS (например, счет контейнера управления), отправитель может попросить бухгалтерскую книгу уведомить контейнер получателя о входящий перевод. Затем накопитель получателя может действовать в соответствии с этим уведомлением. Два примера использования этой способности - создание нейрона и обновление доли нейрона. Они подробно описаны ниже.

Операции, требующие взаимодействия между реестром и системой управления (нейроны):

  1. Создать нейрон
    Когда принципал является держателем открытого ключа, он может заблокировать часть своего баланса внутри нового нейрона. Технически создание нейрона происходит в два этапа. Сначала перенесите ICP, который будет зарезервирован, на учетную запись накопителя управления (который соответствует новому нейрону - детали ассоциации здесь опускаются). Затем уведомите накопитель управления о входящем переводе, который обновляет его внутреннюю учетную запись нейронов. Если весь баланс заблокирован внутри нового нейрона, учетная запись перестает существовать (т.е. удаляется из реестра). Чтобы переместить эти ICP в другую учетную запись, например, обратно в исходную учетную запись, где ими снова можно будет управлять, как обычным балансом, связанный нейрон должен быть полностью растворен и распределен (уничтожен). Новый нейрон, который был создан, управляется закрытым ключом принципала, который его создал.
  2. Обновить ставку
    Доля нейрона может быть увеличена путем перевода на его адрес / счет в реестре и уведомления управляющего накопителя о входящем переводе. Обновление ставки пропорционально изменит зрелость и возраст нейрона. Например, если ставка увеличена вдвое, зрелость и возраст будут уменьшены вдвое, поэтому нерест даст ту же сумму, а возрастной бонус будет таким же, как и раньше (в абсолютном выражении).

Нейроны

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

Атрибуты

Нейроны обладают следующими атрибутами:

  • Identity (uint64)
    Общая идентичность объекта нейрона. Когда нейрон настроен следовать за другим нейроном, используется именно это значение. Это случайное 64-битное значение, выбранное при создании нейрона.
  • Учетная запись (в байтах, личная)
    Учетная запись главной книги, на которой находится заблокированный баланс ICP.
  • Контроллер (идентификатор участника, частный)
    Принципал, который фактически управляет нейроном. Принципал должен идентифицировать пару открытых ключей, которая действует как «главный ключ», так что соответствующий секретный ключ должен храниться в полной безопасности. Директор может управлять многими нейронами.
  • Горячие клавиши (список идентификаторов принципала, частные)
    Ключи, которые можно использовать для выполнения действий с ограниченными привилегиями, таких как голосование, без раскрытия секретного ключа, соответствующего принципалу (например, быть ключом WebAuthn).
  • CreatedAt (timestamp)
    Когда был создан нейрон.
  • AgingSince (timestamp)
    Отметка времени, соответствующая времени начала старения нейрона. Это либо время создания, либо последний момент, когда нейрон перестал растворяться. Это значение не имеет смысла, когда нейрон растворяется, поскольку растворяющийся нейрон всегда имеет нулевой возраст.
  • DissolveState
    В любой момент указывается не более одного из WhenDissolved и DissolveDelay.
    ——WhenDissolved (timestamp)
    Когда растворяется таймер работает, он сохраняет метку времени в секундах с эпохи Unix, после чего нейрон растворяется. В любой момент, пока нейрон растворяется, владелец нейрона может приостановить растворение, и в этом случае DissolveDelay будет назначен: WhenDissolved минус метка времени, когда было выполнено действие.
    ——DissolveDelay (duration)
    Когда таймер растворения остановлен, в нем хранится время, по истечении которого таймер растворения будет запущен. Это может быть самое большее восемь лет. В любое время, находясь в этом состоянии, владелец нейрона может (повторно) начать растворение, и в этом случае WhenDissolved будет назначена метка времени при выполнении действия плюс DissolveDelay.
  • Зрелость (положительное число - процент)
    Зрелость нейрона, которая определяет его способность порождать новый нейрон и соответствующий заблокированный баланс вновь созданного ICP в ожидании. равное этому значению в процентах от доли порождающего нейрона. Когда создаются новые нейроны, их зрелость равна нулю. Когда нейроны голосуют, со временем NNS увеличивает свою зрелость, чтобы вознаградить их.
  • Связи с отслеживанием (сопоставление темы со списком подписчиков, частный)
    Нейрон можно настроить на автоматическое голосование, отслеживая другие нейроны по каждой теме. Для любой действительной темы может быть указан список подписчиков, и нейрон будет следить за голосованием большинства подписчиков по предложению с типом, принадлежащим этой теме. Если указана нулевая тема, это действует как универсальный инструмент, позволяющий нейрону следить за голосованием подписчиков, если правило не было определено.
  • Недавние голоса (общедоступные)
    Ведется запись последних голосов. Это может служить руководством для тех, кто хочет оценить, следует ли следовать за нейроном или как голосуют их последователи.
  • NotForProfit (boolean)
    Является ли этот нейрон «некоммерческим», что делает его растворяемым путем голосования.

Могут быть вычислены следующие атрибуты:

  • Возраст (секунды)
    | вычисляется из AgingSince и текущего времени
    Период времени, прошедший с момента создания нейрона или последней остановки растворения нейрона. Концептуально, когда нейрон начинает растворяться, его возраст сбрасывается до нуля и остается нулевым, пока он растворяется. Если растворение нейрона отключено, текущее время становится эффективной датой создания нейрона для целей расчета возраста.
  • Состояние (ЗАБЛОКИРОВАНО, РАСПРОСТРАНЕНИЕ или РАСПРОСТРАНЕНИЕ)
    | вычисляется из DissolveState и текущего времени
    ——LOCKED: В этом состоянии нейрон заблокирован с помощью определенного DissolveDelay. Возраст увеличивается с течением времени, и он может голосовать, если DissolveDelay составляет не менее шести месяцев. Метод start_dissolving может быть вызван для перевода нейрона в состояние DISSOLVING. Метод Increase_dissolve_delay может использоваться для увеличения задержки растворения, не влияя на состояние или возраст нейрона.
    —— РАСПРЕДЕЛЕНИЕ: в этом состоянии эффективная задержка растворения нейрона уменьшается с прохождением времени. При растворении возраст нейрона считается нулевым. В конце концов он перейдет в РАСТВОРИМОЕ состояние. Метод stop_dissolving может быть вызван для перевода нейрона в состояние LOCKED, и нейрон снова начнет стареть. Метод увеличения_dissolve_delay может использоваться для увеличения задержки растворения, но это не остановит таймер и не повлияет на возраст нейрона.
    —— РАСПРЕДЕЛЕННЫЙ: в растворенном состоянии, доля нейрона могут быть выплачены с использованием метода выплаты. Он не может голосовать, поскольку отсрочка его роспуска считается нулевой. Если в этом состоянии вызывается метод age_dissolve_delay, нейрон будет заблокирован с указанной задержкой растворения и снова начнет старение. У держателей нейронов есть стимул не удерживать нейроны в растворенном состоянии в течение длительного времени: если держатели хотят сделать свои токены ликвидными, они выплачивают долю нейрона, а если они хотят получить вознаграждение за голосование, они увеличивают задержку растворения. Если эти стимулы окажутся недостаточными, NNS может решить наложить дополнительные ограничения на растворенные нейроны.
  • ControlByProposals (логическое)
    | истина, если нейрон имеет непустой список подписчиков в теме #NeuronManagement
    Если нейрон указывает подписчиков в теме ManageNeuron, им можно управлять с помощью предложений типа ManageNeuron (#NeuronManagement), , за который могут голосовать только последователи нейрона. Это обеспечивает основу для управления нейронами с высокой степенью защиты, поскольку позволяет поддерживать их без горячих клавиш или секретного ключа принципала, который может храниться в холодном хранилище или даже уничтожаться (при условии, что соответствующий баланс ICP никогда не нужно разблокировать). Например, DFINITY Foundation или Интернет-компьютерная ассоциация могут публиковать адреса специальных нейронов, которые будут голосовать в соответствии с их желаниями, чтобы другие могли настроить свои нейроны так, чтобы они следовали за ними и использовали их опыт и усилия в управлении. Одна из проблем таких практик заключается в том, что они создают риск того, что секретные ключи, используемые для управления опубликованными нейронами, могут быть скомпрометированы, что позволяет хакерам взять под контроль и «обмануть» большое количество следующих нейронов для голосования в соответствии с их желаниями. Однако, если для опубликованных нейронов включены предложения администратора, то ими могут управлять нейроны, за которыми они следуют (их последователи), которые обычно контролируются большим количеством членов команды, которых нельзя вымогать одновременно, без необходимости использования секретные ключи вообще.

Команды

Принципал, управляющий нейроном, может дать ему указание выполнить следующие действия:

  • Начало растворения
    Задержка растворения похожа на кухонный таймер, который можно повернуть только в одном направлении. Его можно произвольно увеличить, но уменьшить можно только путем включения режима растворения и обратного отсчета. Нейрону можно дать команду начать «растворяться». Когда нейрон растворяется, его задержка растворения уменьшается с течением времени до тех пор, пока он не остановится или не достигнет нуля. Нейрон не может голосовать (или получать вознаграждение за голосование), если задержка его растворения опускается ниже шести месяцев. Как только задержка растворения достигает нуля, она перестает падать, и управляющий принципал может проинструктировать нейрон о выделении.
  • Прекратить растворение
    Нейрон, который растворяется, может получить указание остановиться, после чего его задержка растворения перестает уменьшаться со временем.
  • Выплата
    Когда задержка растворения нейрона равна 0, его управляющий принципал может дать ему указание выплатить долю нейрона. Его заблокированный баланс ICP переводится на указанную новую учетную запись главной книги, а нейрон и его собственная учетная запись книги исчезают.
  • Увеличить задержку растворения
    Задержку растворения нейрона можно увеличить максимум до восьми лет.
  • Создание
    Когда зрелость нейрона превышает пороговое значение, ему может быть дана инструкция создать новый нейрон. Это создает новый нейрон, который фиксирует новый баланс ICP в реестре. Новый нейрон может оставаться под контролем того же принципала, что и его родитель, или быть назначенным новому принципалу. Когда нейрон порождает новый нейрон, его зрелость падает до нуля.
  • Добавить горячую клавишу
    Добавьте новую горячую клавишу, которая может использоваться для управления нейроном. Это обеспечивает альтернативу использованию холодного ключа главного администратора для управления нейроном, что может быть обременительным и сложным для обеспечения безопасности, особенно если он используется регулярно. Горячая клавиша может быть клавишей WebAuthn, которая хранится внутри пользовательского устройства, например смартфона.
  • Удалить горячую клавишу
    Удаляет горячую клавишу, ранее назначенную нейрону.

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

  • Голосование
    Попросите нейрон проголосовать за принятие или отклонение предложения с указанным идентификатором.
  • Follow
    Добавьте правило, которое позволяет нейрону автоматически голосовать за предложения, относящиеся к определенной теме, путем указания группы последующих нейронов, за которыми следует большинство голосов. Конфигурация таких правил следования может быть использована для: а) распределения контроля над правом голоса между несколькими объектами, б) автоматического голосования нейрона, когда его владельцу не хватает времени для оценки вновь представленных предложений, в) автоматического голосования нейрона, когда он голосует самостоятельно. не имеет опыта для оценки вновь представленных предложений, и г) для других целей. Правило следования определяет набор подписчиков. Как только большинство подписчиков проголосуют за принятие или отклонение предложения, относящегося к указанной теме, нейрон голосует таким же образом. Если становится невозможным для большинства последователей принять (например, потому что они разделены на 50–50 на принятие и отклонение), то нейрон голосует за отклонение. Если правило указано, где тема предложения пуста, то оно становится универсальным правилом отслеживания, которое будет использоваться для автоматического голосования по предложениям, принадлежащим темам, для которых не указано конкретное правило. Если список подписчиков пуст, это эффективно удаляет правило подписки.

Криптоэкономика

Обзор

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

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

Задержка растворения

Нюанс криптоэкономики связан с задержками растворения нейронов. Когда кто-то желает продать заблокированный баланс ICP, он получит наибольшую выгоду, если он достигнет своей максимально возможной стоимости в точный будущий момент, когда его можно будет разблокировать и продать. При рассмотрении блокирующего нейрона этот момент всегда - это «дни задержки растворения» в будущем, которые приближаются с каждым днем ​​растворения нейрона. Между тем, долгосрочный успех сети будет лучше всего обеспечен, если владельцы нейронов проголосуют за долгосрочную перспективу максимизации ценности сети в отдаленном будущем. По этим причинам NNS побуждает владельцев нейронов делать их периоды растворения как можно более высокими, выплачивая тем больше вознаграждения нейронам, чем больше их периоды растворения, которые могут быть настроены до восьми лет.

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

51% Нападения на руководство

Ключевой проблемой безопасности является предотвращение того, чтобы злоумышленник получил 51 процент голосов, или даже достаточно, чтобы они могли склонить чашу весов в пользу тех, кто голосует неразумно, что нанесет ущерб успеху сети. (Термин «злоумышленник» здесь в равной степени относится к субъекту, который желает нанести вред сети, субъекту, чье влияние случайно окажется злым, и субъекту, который может просто чрезмерно централизовать власть.) К счастью, при прочих равных условиях колоссальная ценность ICP, заблокированный внутри NNS, делает приобретение такой доли непомерно дорогим. Кроме того, требуемые финансовые вложения будет трудно окупить, поскольку ICP, который был куплен и заблокирован, резко потерял бы ценность, если бы сеть была повреждена. Даже если бы ресурсы не вызывали беспокойства - например, если злоумышленник был злонамеренным государственным субъектом, - разблокированный ICP нельзя было быстро купить на финансовых биржах, поскольку подавляющая часть общего объема ICP заблокирована в нейронах для получения вознаграждения. Это заставит такого злоумышленника постепенно наращивать свои позиции, при этом давление покупателей, создаваемое значительными покупками, также приводит к росту цены, так что последующие покупки становятся все дороже.

По этим причинам вряд ли удастся собрать 51 процент голосов без получения доступа к заблокированным балансам ICP. Это отражает то, почему важно не создавать рынки для нейронов. В этом случае злоумышленник может попытаться создать рыночную панику, чтобы быстро получить заблокированные ставки в массовом порядке по низкой цене. Например, они могут сочетать серьезную и продолжительную DoS-атаку на сеть с широким распространением фейковых новостей и негативного мнения в социальных сетях, чтобы убедить владельцев нейронов в том, что их заблокированные доли рискуют обесцениться, так что грандиозная «огненная распродажа» " происходит. Хотя маловероятно, что государственный субъект проведет такую ​​атаку на практике, политика открытых сетей и цифровых активов гарантирует, что массовые мании и рыночные крахи гораздо более вероятны. Сеть не заинтересована в том, чтобы такое событие приводило к реорганизации права голоса, особенно если это приводит к его внезапной централизации в пределах нескольких хорошо финансируемых рук. Это еще раз отражает, почему рынки нейронов были бы нежелательными.

Расчет награды за голосование

Обзор

Мы начинаем с того, что решаем, что 90 процентов общего количества ВЧД должно быть сосредоточено в нейронах. Затем мы оцениваем, какие доходы в виде вновь созданных ПМС должны быть предоставлены тем, кто блокирует свои ПМС, чтобы стимулировать 90-процентное участие. Это позволяет нам рассчитать общую сумму вознаграждения, которую необходимо выплатить, если мы добьемся успеха. Затем мы решаем распределить это количество вновь созданных ICP независимо от текущего уровня участия, так что участники будут получать более крупные вознаграждения, пока участие не достигнет 90 процентов, что позволяет рынкам убедить тех, кто в настоящее время не участвует, принять участие.

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

Алгоритм

Зрелость нейрона начинается с 0, но увеличивается с активностью голосования. Когда зрелость нейрона превышает определенный порог, он может порождать новый нейрон, содержащий недавно созданный ICP, который сбрасывает свою зрелость обратно на ноль. Количество вновь созданных нейронов ВЧД в порожденном нейроне ожидаемо равно количеству ВЧД, заблокированных внутри родительского нейрона, с учетом зрелости родительского нейрона. Так, например, нейрон, который содержит 100 ICP и имеет зрелость 10 процентов, может породить новый нейрон, который содержит 10 ICP в ожидании. Вновь порожденные нейроны имеют задержку растворения в семь дней, что позволяет при желании легко извлечь заблокированный внутри ICP. Конечно, у только что порожденного нейрона нулевой возраст.

Существует приблизительная эквивалентность зрелости нейрона и полученных им голосов за голосование, которые еще не были отозваны путем порождения другого нейрона. (Эквивалентность является приблизительной, поскольку зрелость определяет только то, сколько ICP будет внутри порожденного нейрона в ожидании, поскольку существует определенная степень неопределенности в операции «порождения».) Каждые 24 часа мы должны рассчитывать, на сколько нужно увеличить зрелость каждого нейрона, участвовавшего в голосовании. Мы начинаем с расчета номинального максимального количества ICP, которое может быть создано и распределено в качестве вознаграждения, что будет отражаться в увеличении зрелости нейронов. Получив это количество, мы можем рассчитать, какую относительную долю вознаграждения должен получить каждый нейрон с учетом таких вещей, как количество заблокированных ICP, настроенный период растворения и возраст.

Мы выводим номинальное максимальное количество ICP, которое может быть отчеканено и распределено в качестве вознаграждения, из текущего предложения ICP и дней, прошедших после Genesis. Начнем с того, что это равно 10 процентам предложения ПМС, разделенным на количество дней в году (365 обычно, 366 в високосном году). За восемь лет этот показатель упадет до 5 процентов. Обратите внимание: поскольку предложение ICP может вырасти или упасть в течение этого времени, на практике вознаграждение за голосование не может уменьшиться вдвое.

  • Мы хотим, чтобы ставка Genesis составляла 10 процентов в год.
  • Мы хотим, чтобы ставка Genesis + восемь лет составляла 5 процентов в год, а затем оставалась неизменной.
  • Мы хотим, чтобы скорость была квадратичной функцией времени.
  • Мы хотим, чтобы ставка была дифференцируемой по времени в момент, когда она становится плоской.

Вызывая время возникновения G, для любого времени t между G и G + 8y, общее вознаграждение R (t) в момент t определяется выражением

R(t) = 0.05 + 0.05[ (G + 8y – t) / 8y ]²

или, в более общем смысле,

R (t) = Rf + (R0 - Rf) [(T - min (t, T)) / (T - G)] ²,

где R0 - начальная ставка (10%), Rf - окончательная ставка (5%), а T - время, когда ставка становится постоянной (G + 8y).

Обратите внимание, что:

R(G) = Rf + (R0 – Rf) [ (T – G) / (T – G) ]² = Rf + (R0 – Rf) = R0
R(T) = Rf + (R0 – Rf) [ (T – T) / (T – G) ]² = Rf
R’(t) = 2 (R0 – Rf) (T – t) / ( T – G )²
R’(T) = 0

fn nominal_voting_rewards_available(icp_supply, days_since_genesis)
{
  // 8 years times 365.25 days is 2922 days
  let day = min(days_since_genesis, 2922);
  let as_perc_of_annual = 0.05 + 0.05 [ (2922 — day) / 2922 ]^2
  icp_supply*as_perc_of_annual / 365.25
}

Сила голоса нейрона в данный момент времени вычисляется следующим образом:

нейрон_стейка * растворение_delay_bonus * age_bonus

Бонус за задержку растворения представляет собой значение от 1 до 2 и линейную функцию от задержки растворения (которое имеет максимальное значение восемь лет), а бонус за возраст представляет собой значение от 1 до 1,25 и линейную функцию от возраста нейрон (возраст ограничен четырьмя годами). Нейрон начинает стареть, когда входит в заблокированное состояние. Таким образом, нейрон может получить повышение своей избирательной способности до 100 процентов за счет увеличения задержки растворения и до 25 процентов за счет старения. Эти бонусы являются кумулятивными, поэтому максимальная сила голоса нейрона с 100 ICP составляет 250; это достигается, когда нейрон заблокирован с максимальной задержкой растворения, равной восьми годам, и стареет не менее четырех лет.

Чтобы распределить вознаграждение за голосование на определенный период вознаграждения (обычно один день), мы начинаем с определения набора предложений, которые включены в этот период вознаграждения: это предложения, которые (1) еще не урегулированы в отношении вознаграждения за голосование, и (2) больше не открыты для голосования (т. е. срок их голосования истек). Затем складывается общее количество голосов, внесенное в эти предложения нейронами, голосующими за принятие или отклонение. Наконец, каждый нейрон получает вознаграждение пропорционально количеству голосов, которое он внес в эти предложения.

Присоединяйтесь к нашему сообществу разработчиков и начните создавать на forum.dfinity.org.