Ответы на вопросы о 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. Заходите на страничку https://golos.io/~witnesses голосуйте за делегата Golos•Core!
Спасибо за внимание и хорошего дня!
С уважением,
Команда Golos•Core: @andreypf, @korpusenko, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev, @eugin, @dedbaraded, @jimak.