Phala Network Gatekeeper и Collator
4.6 Collator (колатор)
Предполагается, что колаторами на Phala (Khala) должны быть Gatekeepers, которые также запускают pRuntime в качестве роли Gatekeeper, помогая управлять ключами в сети. Однако сейчас выборы для Gatekeeper закрыты.
Концепция
В настоящее времяPhala Networkколаторы запущены на основе консенсуса Aura. Aura — это простой механизм создания блоков, который чередует производителей блоков среди зарегистрированных кандидатов-сопоставителей один за другим.
В блокчейне создание блоков обрабатывается совместно Session и CollatorSelection. Палитра Session контролирует, как создаются и проверяются блоки. Поэтому она имеет список выбранных авторов блоков. Однако Session не определяет список самостоятельно. Вместо этого делегирует это палитре CollatorSelection .
Палитра CollatorSelection реализует трейт SessionManager и внедряется как менеджер Session во время выполнения.
Палет CollatorSelection это минимальная система PoS. Он имеет настраиваемую связанную сумму для всех collator кандидатов. Любой может запустить колатора, если он соответствует минимальной границе. Не отвечающий требованиям колатор удаляеися после каждого сеанса. Помимо публичных колаторов, он также содержит специальную группу колаторов, называемых неуязвимыми (invulnerables), которые не уязвимы к кикам, даже если они не в сети.
Подготовка нового колатора
-
Создайте учетную запись с минимальным количеством доступных привязок (по умолчанию 16 PHA)
-
Разверните полный узел сортировщика активировав - -collator
-
Создайте ключ сеанса. Два варианта:
-
Вызвать RPC api.rpc.author.rotateKeys() , чтобы сгенерировать новый ключ сеанса в узле, и записать открытый ключ, который он выводит.
-
Сгенерировать ключ сеанса извне (опасно), вычислить открытый ключ и записать его.
4. Вызов сеансового (открытого) ключа учетной записи колатора session.setKeys()
5. Запустите ноду колатора.
Активация неуязвимого колатора
Эту операцию можно выполнить только с разрешением Sudo. Чтобы подать заявку на общедоступный колатор, обратитесь к следующему разделу.
Вызовите collatorSelection.setInvulnerables(list), где list — это полный список всех неуязвимых колаторов, включая старых. Текущий список неуязвимых колаторов можно найти изcollatorSelection.invulnerables().
Заявку на публичного колатора
Чтобы стать публичным колатором необходимо внести фиксированную сумму депозита. Депозит можно найти по адресу collatorSelection.candidacyBond(). Разрешено определенное количество публичных колаторов(без учета генезисных колаторов). Номер можно найти в collatorSelection.desiredCandidates(), а текущих кандидатов можно найти в collatorSelection.candidates(). На момент написания залог составляет 1000 PHA, а желаемый номер кандидата — 12.
После правильной настройки учетной записи колатора и узла отправьте предложение, вызвав collatorSelection.registerAsCandidate() из учетной записи. После того, как он будет отправлен, вам нужно будет подождать две сессии, чтобы стать колатором.
Блокчейн будет обнаруживать офлайн колаторов. Если созданные блоки в сеансе ниже порогового значения, они будут исключены из списка кандидатов на подбор, а залог будет возвращен в полном объеме.
В любое время учетная запись колатора может сигнализировать о намерении покинуть список кандидатов , вызвав collatorSelection.leaveIntent().
4.7 Gatekeeper (привратник)
Gatekeeper — это особая роль, которая управляет секретами в сети и запускает модель токеномики. Предполагается, что гейткиперы избираются держателями токенов PHA с NPoS, а также должны выполнять функции колатора. Однако на данный момент гейткиперы назначаются советом напрямую, а не связаны с колаторами, поскольку привязка колатора и NPoS все еще находятся в стадии разработки.
Чтобы настроить гейткипер, выполните следующие действия:
-
Подготовьте учетную запись с токеном PHA для оплаты комиссии за транзакцию.
-
Подготовьте сервер с надлежащей поддержкой Intel SGX
-
Разверните рабочий стек: полный узел, pherry и pRuntime.
-
Внесите предложение совета о добавлении рабочего процесса в список привратника.
-
Наконец, ваш привратник должен быть запущен и работать. Как оператор, вы должны продолжать мониторинг.
Подготовьте учетную запись оператора Gatekeeper
Для работы гейткипера требуется учетная запись с некоторым балансом PHA. Программа Gatekeeper запускается во время выполнения в Secure Enclaves. Он взаимодействует с блокчейном в двух направлениях. Он считывает события из блокчейна, запускает алгоритм и периодически записывает обратно в блокчейн, отправляя транзакции. И счет с некоторыми остатками используется для оплаты комиссии за транзакцию.
Возможно, у вас уже есть учетная запись. Или вы можете создать учетную запись на расширении Polkadot.js или некоторых других кошельках. В любом случае вам нужно будет сохранить мнемоник фразу (иногда называемую SURI) или необработанный закрытый ключ, потому что он будет использоваться на следующем шаге.
В аккаунте рекомендуется иметь не менее 10 PHA. Гейткиперы могут потреблять комиссию за транзакцию с разной скоростью. Он может сжигать до 5–10 PHA в день, но также может иметь почти нулевую транзакцию в день. Гейткиперы постоянно генерируют сообщения, но только первый, кто отправит сообщение, будет платить (остальные транзакции просто дедуплицируются). Таким образом, теоретически каждый гейткипер имеет равные шансы оплатить комиссию за транзакцию.
Требования к серверу
- 500 ГГб SSD для запуска полного узла Khala в режиме архива
Большое пространство в основном предназначено для полной ноды Kusama, который занимает более 300 ГГб. Если вы можете запустить полную ноду на другом сервере рядом с сервером Gatekeeper, требование к диску можно смело игнорировать. В таком случае сетевая задержка и пропускная способность имеют значение. Всегда рекомендуем диск SSD, потому что при синхронизации гейткипера будет много случайного доступа к базе данных.
- Хорошее подключение к Интернету
Рекомендуется пропускная способность 50 Мбит/с или выше. В противном случае начальная загрузка блока займет очень много времени. Рекомендуется общедоступный IP-адрес, поскольку в противном случае у вас может быть слишком мало одноранговых подключений, что приведет к зависанию полного узла на некоторое время. Всегда требуется стабильная сеть. Когда включено онлайн-обнаружение гейткипера, любое обнаруженное автономное событие может вызвать значительный слэш. (Пока это все еще находится в стадии разработки.)
- Аппаратное обеспечение, совместимое с Intel SGX, с уровнем достоверности >= 3.
Gatekeeper запускает свою pRuntime внутри Secure Encalve (Intel SGX), что является тем же требованием для майнинга в сети Khala. Пожалуйста, обратитесь к руководству по майнингу, чтобы узнать больше о совместимости Intel SGX и оценке достоверности. Гейткиперы управляют особо конфиденциальными данными. Поэтому требуется наивысший уровень достоверности (1, 2 или 3).
Хотя SGX является функцией CPU, некоторая настройка в BIOS все же необходима. Пожалуйста, обратитесь к руководству по майнингу, чтобы при необходимости настроить BIOS.
- ОС Linux
Пока поддерживается только Linux. Мы предлагаем развернуть стек Gatekeeper на Ubuntu 21.04. Хотя другие версии Ubuntu или другой дистрибутив Linxu могут поддерживаться, в этом документе предполагается, что вы работаете в Ubuntu.
Требуется драйвер Intel SGX. Однако вам не нужно устанавливать его вручную в Ubuntu 21.04, поскольку он поставляется с собственным драйвером ядра SGX. Однако драйвер ядра не поддерживает все устаревшие процессоры SGX. Для устаревших процессоров вам может потребоваться запустить более старое ядро Linux без собственного драйвера и вместо этого установить драйвер iSGX.
- DockerSGX virtualization (vSGX)
Есть поддержка vSGX. VMWare and KVM based vSGX успешно тестируется. Однако чем больше экземпляров нужно виртуализировать, тем меньший размер EPC может получить каждая виртуальная машина. Меньший EPC может привести к снижению производительности. Пожалуйста, используйте с осторожностью.
Развертывание полного стека
Убедитесь, что вы выполнили все вышеперечисленные требования, чтобы вы могли начать развертывание трех компонентов с помощью Docker.
Сначала запустите полный узел и дождитесь его синхронизации. Если у вас уже есть полная нода, этот шаг можно пропустить.
Приведенная выше командная строка запустит Khala node docker, управляемый командой Phala. Узел работает в режиме архива Archive mode (specified byNODE_ROLE=MINER
). Затем экспортируются два набора портов, включая порты p2p ports (30333, 30334), Prometheus metrics (9615, 9616), ws rpc (9944, 9945), and http rpc ports (9933, 9944). Для каждой пары портов первый принадлежит Khala, а последний — Кусаме. Каталог данных /root/data сопоставляется с диском. Не стесняйтесь изменить его на что-то лучше.
Полная синхронизация узла может занять несколько дней. Восстановление из резервной копии может значительно сократить время синхронизации, если она у вас есть.
Далее запустите pRuntime:
Команда запускает pRuntime с его RPC-портом 8000 . Обратите внимание, что если вы работаете с драйвером iSGX (старый драйвер), существует только один файл устройства SGX /etc/isgx. Обратите внимание, что pruntime будет хранить свои учетные /root/data, на локальном диску. Учетные данные шифруются с помощью ключей CPU. Важно сделать резервную копию ключа, чтобы сохранить идентификацию worker (экземпляр pRuntime). Однако восстановить учетные данные на другом CPU (vCPU) невозможно.
В приведенной выше командной строке мы предположили, что вы работаете с драйвером ядра SGX. Если вам нужно работать с установленным вручную драйвером на более старом ядре, вы можете рассмотреть возможность переключения на другие аргументы устройства:
-
Standalone DCAP driver
-
--device /dev/sgx/enclave
-
--device /dev/sgx/provision
-
Standalone iSGX driver
-
--device /dev/isgx
Наконец, запустите pherry, ретранслятор для подключения узла и pRuntime (укажите свой mnenomic).
Команда запускает ferry, связанный с контейнерамиkhala-node
иphala-pruntime
. Он считывает блокчейн с khala-node:9944 и синхронизирует данные с phala-pruntime:8000. Если вы запускаете полную ноду удаленно, просто измените имя узла khala-node на endpoint rpc. Мненомика задается переменной окружения.
ferry обычно требуется 1–2 дня для синхронизации истории блокчейна. Однако, поскольку pRuntime не сохраняет состояние, в случае если процесс не был завершен вам потребуется выполнить синхронизацию с нуля в следующий раз.
Указанная вами учетная запись будет использоваться для отправки транзакций от имени гейткипера. Как только он будет полностью синхронизирован, он инициирует PhalaRegistry.registerWorker() вне блокчейна. Гейткипер идентифицируется своим рабочим открытым ключом (рабочим открытым ключом). Вы можете найти его наhttp://phala-pruntime:8000/get_infoRPC и проверить статус регистрации в блокчейне на PhalaRegistry.workers().
Резюме:
-
Запустите полный узел в Archive mode и синхронизируйте его
-
Запустите pRuntime с правильно настроенным устройством SGX
-
Запустите pherry для подключения полного узла и pRuntime.
С первоисточником статьи можно ознакомитьсяздесь 1издесь 2
💎 —Discord PhalaNetwork|Телеграм|Telegram en
Информация о проктах дотсамы
0 comments