Ответы на вопросы о CyberWay часть 4. Принцип работы Bandwidth в CyberWay


Уважаемые делегаты и члены комьюнити!

Данная статья акцентирует ваше внимание на вопросах от пользователей @denis-skripnik и @ksantoprotein, заданных в комментариях под публикацией аналогичной рубрики и telegram-чате, посвященному транзиту Голоса на платформу CyberWay.

@denis-skripnik: Если у аккаунта DApp 1% токенов, он будет иметь 1% пропускной способности и 1% ресурсов сети, если не учитывать возможное получение токенов из фонда для приложений? Или всё иначе?

@ksantoprotein: Если меня есть 1000 токенов и я проголосовал за валидатора, за хорошего валидатора, чтобы получать процент с его дохода за подписание блоков. то сколько это будет в токенах и будет ли у меня свой bandwidth или он условно заморозится? Другими словами могу ли одновременно выбирать валидатора и пользоваться личным bandwidth или придется пользоваться двухподписным?

Выражаем благодарность @ksantoprotein за вопросы в чате Голос Кор в пятницу ночью.

В CyberWay подсистема bandwidth состоит из трех видов ресурсов (RAM, NET, CPU). В отличие от EOS, пользователю не следует стейкать (замораживать, блокировать) токены на каждый ресурс по-отдельности. Он стейкает определенное количество токенов на bandwidth, в то время как система автоматически рассчитывает суммарное потребление через механизм динамических цен, в зависимости от того, какой ресурс в данный момент потребляется активнее. При проведении больших транзакций дороже NET (например, при размещении объемных постов), при проведении долгих транзакций (например, при сложных вычислениях или работе с памятью) дороже CPU, когда много данных записано в памяти (например, при сохранении постов целиком в стейте) - дороже RAM.

Давайте рассмотрим bandwidth в упрощенной модели на примере игры “Рулетка”, реализованной в виде смарт-контракта.

Начальные условия таковы, что данному контракту не понадобится сохранять большие объемы данных. В основном, все потребление памяти сводится к сохранению кода смарт-контракта в чейне. Следовательно, данное приложение не будет активно конкурировать с другими приложениями за RAM. В результате автоматического расчета потребления, часть застейканных на bandwidth токенов, требуемых для оплаты памяти, заморозится и не будет участвовать в оплате за остальные ресурсы. Ресурс NET имеет несколько иную специфику работы, однако, в случае игры “Рулетка”, объем отправляемых в блокчейн транзакций является небольшим. Это не блог-платформа, поэтому в отношении этого ресурса смарт-контракт не будет конкурировать с другими аккаунтами на платформе.

Основной ресурс, который будет потреблять смарт-контракт, - это CPU. Блокчейн считывает CPU как время выполнения транзакции. Количество транзакций, записываемых в блок, максимально зависит от мощности нод валидаторов. При росте конкуренции в сети валидаторы будут вынуждены покупать более мощное оборудование, и количество транзакций на один блок будет увеличиваться.

Для упрощения модели возьмем 1 000 среднестатистических транзакций в секунду (реально достижимый показатель для CyberWay), или 3 000 транзакций в блок. Все аккаунты в системе не смогут уместить свои транзакции в один блок. Для этого вводится понятие “окно” для подсчета ресурсов. Окно для CPU равняется 1 суткам. Количество транзакций, которое может совершить аккаунт, вычитается от максимального количества транзакций в сутки. Т. е. 1 блок единожды, каждые 3 секунды, в течении суток - это 24 60 60 / 3 = 28800 блоков. В эти блоки поместится максимум 28 800 * 3 000 = 86 400 000 транзакций.

Допустим, смарт-контракт имеет на своем балансе 1 000 CYBER, застейканных на bandwidth (уже с учетом замороженных на хранение контракта), а в системе застейкано всего 150 000 000 CYBER (текущее количество токенов Голос, которое “переедет” на CyberWay). Токены, которые предлагается добавить в Фонд приложений, в распределении bandwidth на старте системы участвовать не будут.

Таким образом, доля контракта “Рулетки” равна 86 400 000 * 1000 / 150 000 000 = 576 транзакций в сутки. Естественно, что реальные транзакции “Рулетки” могут быть разной сложности и “длины” по сравнению со среднестатистическими (например, одна транзакция может обрабатываться в течение 5 среднестатистических транзакций).

Важный момент: игра “Рулетка” - про ставки на выпадающее число, определение выпадающего числа и распределение выигрыша. Соответственно, участники могут оплачивать ставки своим bandwidth. Определение выигрышного числа оплачивает контракт “Рулетки”, а за выигрышем участники могут приходить сами за “свой счет” (оплачивать своим bandwidth). То есть контракту “Рулетки” с балансом 1 000 CYBER весь ресурс CPU на 576 среднестатистических транзакций может и вовсе не понадобиться.


Теперь представим, что к CyberWay присоединится несколько приложений, которым суммарно будет выделено 10% системных токенов из общего Фонда приложений (предполагается выделение до 3% на приложение). Приложения застейкают их на bandwidth, в результате от 576 транзакции контракта “Рулетка” отнимутся 58 транзакций.

В условиях органичного развития сети ноды валидаторов станут мощнее из-за конкуренции между валидаторами. Команда Голос Кор оптимизирует код, и транзакции начнут обрабатываться быстрее, что неизбежно приведет к росту количества транзакций в секунду. Но, вместе с тем, мы предполагаем, что контракт “Рулетка” тоже будет развиваться, и количество системных токенов, которые накопятся на его счету к этому моменту, будет значительно выше начальной 1 000 CYBER в 2 или 3 раза, например.

Обращаем особое внимание на эту статью делегатов и разработчиков приложений: @vik, @arcange, @ropox, @primus, @dmilash, @vvk, @steepshot, @semasping, @captain, @lex, @asuleymanov, @solox, @jackvote, @cats, @denis-golub, @alexna, @ksantoprotein, @eee, @on1x, @sterh, @p2psynergy, @space.creator, @uncleandyv

Также просим внимательно прочесть эту статью всех активных пользователей, которые хотят разобраться с ценностью токенов CYBER, получаемых пользователями Голоса при транзите - мы ждем представителей сообществ Vox Populi @poesie, @istfak, @vp-handmade, @vp-music, @vp-painting, @vp-kulinar-club, @vp-pedsovet, @vp-photo.pro, @vp-zarubezhje, @fractal, @vp-liganovi4kov, @just-life, @rblogger, @vox.mens, руководителей и участников независимых сообществ @chaos.legion и @liga.avtorov; активных блогеров, кураторов и инвесторов @anela, @alexna, @anri, @varwar, @smotritelmayaka, @ksantoprotein, @shenanigan, @chugoi, @olegst, @nikulinsb, @sofya, @eldar-adov, @kudesnikaltay, @biorad, @teeves, @yamoskva, @oagalakova, @evgeny-zaikin, @slon21veka, @frodogrodno, @fainder, @karavai, @galina1, @mishka, а также всех пользователей, которым интересна эта тема.

Каналы коммуникации с Golos•Core

  • https://t.me/goloscoretc (решение технических вопросов, связанных с работой блокчейн, нод, api и др.)
  • https://t.me/joinchat/BLwf_A118xQ57nsM1Q4MPA (канал для вноса предложений от комьюнити, обсуждение перехода на кодовую базу EOS)
  • https://t.me/golos_tools (решение вопросов по различным интерфейсам и дополнительным инструментам, создаваемым Golos•Core)
  • https://t.me/goloscore_analytics (решение вопросов по работе экономики блокчейн, статистическим экономическим данным, аналитике данных)
  • https://t.me/goloscoretech (новостной канал, с актуальной информацией от Golos•Core)

Мы будем очень рады, если вы поддержите делегата @goloscore. Заходите на страничку /~witnesses голосуйте за делегата Golos•Core!
Спасибо за внимание и хорошего дня!

С уважением,

Команда Golos•Core: @andreypf, @korpusenko, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev, @eugin, @dedbaraded, @jimak.


Comments 11


Добавьте, пожалуйста, в список разработчиков @uncleandyv . Спасибо)

09.04.2019 13:34
0

@anela Добрый день! Добавили! :)

09.04.2019 13:38
0

Правильно ли я понял, что текущие аккаунты пользователей БЧ Голос после транзита на БЧ CyberWay будут иметь свой личный bandwidth (согласно кол-ва застейканных токенов CYBER) и только новые аккаунты, создаваемые приложениями (напр. golos.io) будет иметь "спонсируемый ими" bandwidth?

09.04.2019 14:54
0

@lex да, именно так. все текущие пользователи получат свой личный бендвич.

10.04.2019 14:37
0

@andreypf, ясно, спасибо!

10.04.2019 14:40
0

Благодарю. Теперь всё понятно.

09.04.2019 15:05
0

ВОПРОС
Анонсируемое новой командой ГолосКлассик приложение golos.id, после перехода ГОЛОСа на СайберВей, собирается подхватить цепочку блокчейна проекта "ГОЛОС" и продолжать выпускать токены golos и gbg, торгуя ими на бирже Рудекс.

В связи с чем у меня вопрос: Будут ли изменены названия токена нового приложения ГОЛОС в рамках перехода на платформу СайберВей, который тоже будут торговаться на бирже Рудекс, или у нас могут появится одинаковые токены на одной и той же децентрализованной бирже от двух разных проектов !?

09.04.2019 19:27
0

@smotritelmayaka хороший вопрос!

09.04.2019 21:05
0

хм... все равно многое непонятно, видимо из-за физического непонимая что есть NET CPU и RAM на кибервей (ибо отличие от EOS есть и так понимаю они существенные)/

поэтому видимо надо начать с совсем простых вещей... и вопросов

  1. Для рулетки, чтобы сделать ставку юнит должен отправить со своего аккаунта на аккаунт рулетки условно 1 токен. на голосе считается размер транзакции... это примерно 0.3 кБ и умножается на мультипликатор 10 (в случае transfer). то есть чтобы сделать перевод аккаунт должен владеть не менее 3кБ бендвиша. а как это будет происходит на кибервей? что необходимо "потратить" NET CPU RAM чтобы передать токены от одного пользователя другому? или это бесплатно по бендвиш?
  2. А можно отправить токены другого приложения так же на рулетку? и в трансфере нужно будет просто указать иной asset или необходимо обратить к смарту самого приложения?
  3. далее скрипт рулетки сканирует блоки и находит этот перевод... и исходя из подписи делегата и подписи юнита (на голосе) скрипт вычисляет выпавшее число и сохраняет это число у себя локально, так как для вычисления нового числа помимо сигнатур делегата и юнита в моем скрипте требуется еще так называемая соль (предыдущее значение). то есть я могу и на кибервей спокойно использовать скрипт на своем сервере, а могу попытаться оплатить смарт. то есть мне нужно арендовать RAM где будет хранится смарт и видимо CPU в ходе которого будут происходить необходимые вычисления над каждым спином и видимо еще RAM, чтобы хранить то самое предыдущее число и каждый раз перезаписывать его. при этом смарт реагирует на каждый трансфер в блокчейне, чтобы сгенерировать выпавшее число (ну вот такая логика скрипта, которую сам же разработал и оттестировал как наиболее пригодную, ибо как ни крути подпись юнита можно саму по себе "подогнать", равно как технически можно "подогнать" и подпись делегата под игру.

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

в таком случае для рулетки необходимо, чтобы юнит сделал трансфер токена (это оплата на его совести), а рулетка делает трансфер обратно если проигрыш, то 0.001 токен, если победа, то поболее.

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

на голосе я спокойно могу рассчитать сколько надо, и даже упаковывать трансферы разным игрокам в одну транзакцию, немного экономя свой бандвиш. не получится ли на кибервее, что на рулетку сделают десятки тысяч переводов в виде ставок (так понимаю 3000 переводов можно поместить в один блок, который раз в 3 секунды) и в итоге сгенерируется очередь выплат... ну пусть на 1500... (делали ставки на равные шансы). когда мне сейчас не хватает бендвиша, то выплаты я храню локально в стейте и потом отправляю юнитам, когда восстанавливается бендвиш. а что произойдет на кибервее при такой ситуации... скопится вот так 10000 выплат, а перевести не получается, так как нехватает бендвиша.

11.04.2019 09:56
0