Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ropox
5 лет назад
cyberway

Про ключи на Cyberway

Осторожно, многа букав

Я долго не мог понять, отчего такая петрушка была с ключами в golos.io после переезда. Залогинился я по привычке POSTING ключем, и местами не работал сайт. Потом там что то поправили, сайт стал просить ключ, если требовалось выполнить операцию требующую ACTIVE ключ. А потом начал заниматься смарт-контрактами и вообще запутался. Что то сделал, что бы смарт контракт моего голосовального бота @fomka смог апвоутить, но что это было, тогда я не понял. Потом спасибо кто то из терпеливых разработчиков мне все и растолковал. Вот и пишу тут.

Как это было на голосе

Многие знают, что на голосе было три ключа (MEMO ключ для заметок я не рассматриваю, он стоит особняком и практически никем не использовался)

  • OWNER или ключ владельца, с самым высоким уровнем. Этим ключем можно менять все остальные ключи и подписывать любую операцию. Но это не точно
  • ACTIVE - активный ключ, по уровню доступа идет после OWNER, им можно было например переводить монеты, запускать понижение СГ и прочие телодвижения с монетами. Этим ключом нельзя было сменить OWNER ключ, но все другие.
  • POSTING - этим ключом можно было создавать посты, писать комментарии, апвоутить и вести прочую социальную деятельность. Нельзя было делать переводы и прочие операции.

Была жесткая система. У каждой операции в блокчейне было жестко записано, какого одного из трех уровней доступа требовался ключ, чтобы записать операцию в блокчейн. Можно было к примеру передать POSTING ключ боту или другому пользователю, чтобы он от вашего имени голосовал или постил и не боятся, что ваши монеты будут украдены. Потому я предпочитал логиниться на сайте golos.io постинг ключем, да и сайт не давал залогиниться активным ключом, предупреждая, что это не очень хорошая практика.

Как это устроено в cyberway

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

В EOS и соотвественно в Cyberway-Блокчейнах гибкая система разрешений (permission). Это уже не жестко заданные три уровня доступа, теперь пользователь может сам создавать любые уровни доступа и любые разрешения и назначать их под определенные действия.

При создании аккаунта в cyberway надо обязательно указать минимум два уровня разрешений OWNER и ACTIVE. Причем ACTIVE получается подчиненным иерархически ключу владельца. То есть ключом владельца вы можете поменять активный ключ, но не наоборот. ACTIVЕ ключем по умолчанию вы можете совершать любые действия. Это регулируется на уровне блокчейна.

Пока все так же, как и на Голосе, но где же POSTING ключ? Спросит мой маленький читатель. А все оказывается очень просто.

Пользователь может сам создавать другие разрешения (permissions) и назначать им действия.

Практически все аспекты работы cyberway регулируются смарт-контрактами. К примеру переводом токенов занимается смарт-контракт cyber.token, для этого у него есть специальный экшен (ang. action) "transfer". За постинг и голосование отвечает другой смарт-контракт - gls.publish у которого есть экшены createmssg и upvote для создания поста или комментария и для голосования соответственно.

Так вот вы можете создать разрешение, назвать его как хотите и назначить его на выполнение определенной операции. К примеру создать разрешение VOTEKEY и назначить его только для голосования (смарт-контракт gls.publish, экшен upvote).

При транзите со старого Голоса на Cyberway, чтобы сильно не путать людей, были портированы все три ключа. OWNER и ACTIVE понятно, плюс создали разрешение (permission) POSTING и привязали его ко всем экшенам смарт-контракта gls.publish.

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

Создание и назначение ключей

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

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

cleos get account ropox@@gls

image.png

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

Для начала я генерирую новый ключ.

cleos create key --to-console

image.png

И вновь сгенерированным ключом создаем новое разрешение botvote. Название можно выбрать любое, лишь бы подчинялось правилам имен (состояло исключительно из латинских знаков).

cleos set account permission \
    zhm555xmzkd3 \
    botvote \
    GLS8emx25sc9eH9SuCY2BPttd2yzRbP3PmpRSKJWw9ZzmrT4v8v9D \
    active

Создается новое разрешение командой cleos set account permission. Первым параметром идет имя моего аккаунта, для которого я создаю новое разрешение. Далее я указываю имя нового разрешения - botvote. Затем идет новый ключ и последним параметром указывается вышестоящее разрешение, которому будет подчиняться новое разрешение. То-есть удалить его или поменять я смогу только своим активным ключом.

Смотрим, что получилось.

image.png

Как видно теперь у меня в ауторити новое разрешение, которое я могу использовать при выполнении экшенов. В кошельке я могу задать, каким ключем воспользоваться, указав параметр -p zhm555xmzkd3@botvote

Попробуем проголосовать за пост пользуясь новым разрешением botvote

cleos push action gls.publish upvote \
        '["zhm555xmzkd3",{"author":"jyrnxqhjzjmb","permlink":"probnyi-post-1569708474792"}, 10000]' \
        -p zhm555xmzkd3@botvote

image.png

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

cleos set action permission zhm555xmzkd3 gls.publish upvote botvote

cleos set action permission мы выставляем ассоциацию ключа с экшеном.

Указываем zhm555xmzkd3, это мой аккаунт. Далее идет смартконтракт (на самом деле это аккаунт) gls.publish и экшен upvote. Ну и последним параметром указываем новое разрешение botvote.

И пробуем снова проголосовать.

image.png

Получилось.

Разрешение убрать можно следующей командой

cleos set account permission zhm555xmzkd3 botvote NULL

Заключение

Система разрешений в сайбервее мне нравится больше конечно. Можно точечно разрешать разным приложениям, которым слабо доверяешь выполнять только определенную функцию. Система гибкая очень и к сожелению golos.io пока не в полной мере поддерживает все возможности cyberway блокчейна. Как надеюсь стало ясно из всего выше написанного, POSTING ключ является опциональным. Я думаю поэтому golosio отказалась от создания постинг ключей для новых пользователей. Возможно смена ключей через сайт в данный момент приведет к тому, что у вас останется только OWNER и ACTIVE ключи.

Надеюсь современем все утрясется. Хотелось бы отдельную страницу под управление разрешениями, либо в explorer.cyberway.io либо на golos.io. Думаю первое было бы правильнее.

Голосуйте за меня и все будет хорошо в тридесятом государстве

cyberwayцарьобъясняет
135
993.612 GOLOS
На Golos с February 2017
Комментарии (12)
Сортировать по:
Сначала старые