Управление EOS разрешениями
Оригинал: https://medium.com/coinmonks/eos-permission-management-2c0c1634fe39
Одним из главных отличий EOS от других блокчейнов - это система учетных записей. Между Вашими средствами и Вами существует аккаунта. Имя, состоящее из 12 символов. Когда Вы хотите потратить эти средства, Вам необходимо подписать транзакцию в аккаунте, который не связан, непосредственно, с ключом. В одном аккаунте Вы можете иметь один или несколько ключей, находящихся на чейне и Вы можете изменять их. Также, вы можете менять их на разных уровнях разрешений. Это действительно удивительно. Это также означает, что Вы можете управлять правами доступа к учетной записи. - Александре Боргет
Настройка разрешений по умолчанию
Как описано выше, EOS имеет уникальную систему учетных записей, которая позволяет пользователям управлять правами на своем аккаунте. Каждое разрешение требует действительной транзакции или нескольких действительных транзакций, которые должны быть переданы в блокчейн. По умолчанию, в аккаунте EOS есть 2 разрешения, для active и owner ключей.
Active разрешение используется для перевода денежных средств, голосования за Блок-продюсеров и внесения других изменений в учетные записи на высшем уровне.
Owner разрешение символизирует право собственности на счёт. Есть только несколько транзакций, которые нуждаются в этом разрешении, но наиболее важными являются действия, которые вносят любые изменения в сведения о владельце. Вообще, предлагается, чтобы owner хранился в "холодном" хранилище, и не передавлся никому. Owner разрешение может быть использовано для восстановления active разрешения, которое могло бы быть скомпрометировано.
По умолчанию ключи для active и owner разрешений имеют вес в 1, и, как active и owner разрешения, имеют по умолчанию ограничения в 1. Это означает, что требуется только одна подпись от owner ключа необходимого для выполнения любых действий, которые требуют owner разрешения. То же касается active разрешения. Существует только 1 подпись с active ключа, необходимого для выполнения какого-либо действия, которую требует active разрешение.
Вот как настроен стандартный аккаунт EOS
Изменение и добавление разрешений
К счастью, Вы можете добавлять и изменять разрешения, позволяя создавать мульти подписной аккаунт, создавать новые разрешения и многое другое. Чтобы показать Вам возможности изменений и добавления разрешений, мы разъясним на следующем примере.
Мультиподписной аккаунт
В этом примере мы объясним, как работает мультиподписной кошелек и как настроить его самостоятельно
Взято из EOSIO Wiki
В приведенном выше изображении Вы сможете увидеть возможную настройку мультиподписной учетной записи. В этом примере owner разрешение имеет ограничение в 2, и имеет 2 ключа, оба весом в 1. Это означает, что необходима подпись двух ключей для выполнения какого-либо действия, которое требует owner разрешение.
Active разрешение имеет ограничение в 1, и имеет 2 ключа, оба весом в 1. Это означает, что только одна подпись, любого из двух ключей, необходима для выполнения какого-либо действия, требующегося для active разрешения.
Как все это настроить на своем счету (инструментарий)
Предполагая, что вышеприведенное имеет смысл, мы сейчас объясним, как настроить мультиподписной аккаунт самостоятельно, используя EOSToolkit от Genereos. Мы настроим аккаунт так же, как мультиподписной счет, который описан выше.
Прежде всего, Вам необходимо загрузить расширение браузера Scatter. Вы можете получить Scatter здесь. Следуйте инструкциям по настройке учетной записи в Scatter и процедуры входа в расширение Scatter. Затем перейдите в набор инструментов и подключите существующий аккаунт EOS.
* Не забудьте добавить «@permission» под открытыми ключами, измените разрешение на фактическое разрешение (active, owner и т.д.)
После того, как Вы подключили свой счет в Scatter, Вы можете посетить вкладку "Дополнительные разрешения". Начнем с изменений owner разрешений в аккаунте. Заполните бланк правильной информацией и ключами, и нажмите обновить. Вы также можете добавить больше ключей и изменить ограничения, и вес ключей, если хотите.
* Не забудьте добавить «@permission» под открытыми ключами, измените разрешение на фактическое разрешение (active, owner и т.д.)
После обновления owner разрешения Вы можете обновить active разрешение. Заполните бланки правильной информацией и ключами и нажмите обновить. Так же, как и с owner разрешением, Вы можете добавить другие ключи и изменить ограничения и вес ключей, если хотите.
Теперь у Вас есть мультиподписной аккаунт, такой же, как и тот, который изображен в первом примере.
Специальные разрешения
Мультиподписной аккаунт - это лишь одна из многих возможностей разрешений в EOS. Для создания мульти подписных учетных записей необходимо лишь изменить обычные разрешения, которые были по умолчанию. Чтобы создать более расширенные структуры разрешений, Вы можете создавать новые разрешения или управлять и устанавливать существующие разрешения. Мы покажем Вам, как создать новые разрешения с помощью the tooklit by Genereos і cleos.
Как создать новые разрешения (инструментарий)
Управление, настройка и создание новых разрешений стало действительно простым и доступным благодаря инструментариям (toolkits). Допустим, у Вас есть учетная запись EOS, но Вы не хотите использовать актив ключ для голосования с этого аккаунта, поскольку компроментация этого ключа может стать катастрофическим для Вас. Вы можете предоставить другой учетной записи право голоса от этой учетной записи. (Для справки: Вы можете делать подобные вещи с помощью прокси делегирования голоса).
На вышеприведенном изображении можно увидеть, как надо заполнить бланки, чтобы второй аккаунт смог использовать разрешение на голосование от главного аккаунта. Здесь требуется лишь доступ к active разрешению на втором аккаунте.
После подтверждения указанной транзакции, Вам придется связать Ваше новое разрешение на голосование с действием eosio. Поскольку мы хотим, чтобы второй аккаунт имел разрешение для возможности голосования, для основного аккаунта, мы связываем разрешение для голосования с действием "votesproducer" с помощью инструмента "Link Auth".
Теперь второй аккаунт сможет использовать разрешение на голосование на главном аккаунте.
Как создать новые разрешения (cleos)
Вы также можете создать новое, специальное разрешение, используя cleos. Ниже мы покажем Вам пример от EOS Canada о том, как создать новое разрешение на получение вознаграждения с помощью cleos.
Блок-Продюсеры EOS получают вознаграждение ежедневно, а поэтому они должны истребовать эти вознаграждения каждый день. Если они не истребуют свое вознаграждение, оно исчезает, поэтому каждый Блок-Продюсер (который подпадает под финансирование) претендует на свое вознаграждение каждый день. По умолчанию, чтобы затребовать вознаграждение необходим актив ключ, однако размещение актив ключа на сервере, который собирает награды каждый день, очень рискованно. Вот почему желательно установить новое разрешение на это событие и использовать другой, гораздо менее важный ключ для этих манипуляций.
Для этого необходимо выполнить следующую команду используя cleos:
cleos set account permission PRODUCERACCT claimer '{"threshold":1,"keys":[{"ey":"YOUR_PUB_KEY","weight":1}]}' "active" -p PRODUCERACCT@active
PRODUCERACCT
это имя учетной записи из 12 символов, которые будут собирать награды, сlaimer
это имя нового разрешения, «key»: «YOUR_PUB_KEY», «weight»: 1
это новый публичный ключ, с весом в 1, который имеет новое разрешение, и "active" -p PRODUCERACCT@active
означает, что "родительское" разрешение нового разрешения является active разрешением.
После выполнения вышеупомянутой команды необходимо связать разрешение к определенному действию. Для этого вам необходимо запустить такую команду.
cleos set action permission PRODUCERACCT eosio claimrewards claimer
Выполнение этой команды связывает действие claimrewards
к разрешению claimer
, а eosio
является смарт-контрактом.
Теперь необходим только новый ключ для использования действия по истребованию вознаграждения claimrewards
, а если этот ключ будет скомпрометирован, это не будет большой проблемой, поскольку единственное, что Вы можете сделать с этим ключом, это требовать вознаграждение в аккаунте Блок-Продюсера.
Используйте это руководство и эти инструментарии НА СВОЙ СТРАХ И РИСК, неправильное использование этих инструментов может привести к потери ВАШИХ аккаунтов
Следует помнить, что использование этих настроек может привести к созданию неудобств при использовании Ваших аккаунтов. Существует не так много инструментов, которые бы поддерживали такие специальные разрешения (пока)
Спасибо Натану Ремпель от Genereos за помощь в подготовке этого руководства.
Переведено CryptoLions