Публичная сеть EOS, первая итерация EOSIO, с большим отрывом лидирует в списке наиболее широко используемых публичных блокчейнов, и в последнее время она обрабатывала стабильные 800 транзакций в секунду, при этом используя только часть своего технического потенциала. В какой-то момент спрос на транзакции был настолько высок, что у биржи ресурсов REX кончились токены EOS, предназначенные для лизинга. В этом посте я рассматриваю причины, по которым у REX не хватает EOS, и предлагаю решение, обеспечивающее постоянную доступность ресурса CPU по разумной рыночной цене.
Токены EOS дают вам возможность пользоваться функциональностью пропускной способности CPU, когда они размещены в доле. Однако капитальные затраты на полезный функционал CPU были оценены рынком достаточно высоко, вследствие чего теперь большинству людей необходимо арендовать EOS, чтобы получить необходимый им CPU по доступной цене с минимальным риском потери капитала, связанным с волатильностью цены EOS.
Биржа REX (Resource Exchange) нацелена на автоматизацию торговли между теми, кто владеет функциональностью CPU EOS, и теми, кто хочет использовать процессорное время без владения EOS. Непростой задачей оказалось установление цены на аренду EOS при сохранении ценности функциональности для владельцев EOS: если цена будет слишком высока, то никто не захочет ничего арендовать, и поэтому сеть будет использоваться недостаточно, а если цена будет слишком низкой, тогда доступное предложение EOS чрезмерно увеличится, не оставив доступного CPU ни за какую цену.
Мы встроили в REX алгоритм, который поднимает цену до бесконечности, когда оставшееся предложение EOS, доступное для аренды, приближается к нулю. Недавно на REX сложилась ситуация, когда EOS для аренды не были доступны ни по какой цене, потому что те, кто одалживает свои EOS другим, в любой момент могут отозвать их обратно по своему желанию. Мы не предполагали, что с REX будет выведено столь большое количество EOS даже с учётом ожидаемого спроса на прибыль.
Хорошая новость заключается здесь в том, что REX работает так, как задумано, и что она будет выполнять обещания, прописанные в коде, который позволяет арендодателю вернуть все свои EOS, размещённые на REX, в течение 30 дней. Реакция алгоритма ценообразования на внезапный запрос на вывод заметно большего количества EOS, чем было доступно для аренды, выражалась в бесконечном повышении их цены.
Это произошло из-за первоначальных предположений, сделанных ещё на этапе проектирования REX:
- На бирже будет нормальное распределение спроса на аренду между большим количеством аккаунтов.
- На REX установится нормальное распределение спроса на сдачу в аренду.
- Повышение арендных ставок вызовет новую волну спроса и обеспечит REX дополнительными EOS для аренды.
- Вывод средств с REX будет компенсироваться за счёт депозитов, при этом общее предложение токенов для аренды будет относительно стабильным.
Ситуация в реальности:
- Депозиты на REX регулируются распределением по принципу Парето.
- Выводы средств с REX также распределяются по Парето.
- Спрос на одалживание у REX тоже регулируется распределением по Парето.
- Доход от аренды своих токенов можно получить, выведя его ещё до истечения 30-дневного периода аренды.
Результатом несоответствия между первоначальными предположениями и реальностью использования REX стала изменчивая цена на аренду ресурсов и недоступность EOS для аренды.
Дизайн с чистого листа для распределения CPU
Текущее состояние REX является результатом постепенной эволюции стратегий распределения ресурсов для публичных сетей на базе EOSIO. Чтобы максимизировать свою гибкость в подборе решений, мы должны рассмотреть, что можно сделать по-другому, если бы у нас не было ограничений, обусловленных прошлыми моделями. Если всё же можно придумать лучшее решение, то мы можем спроектировать всё от него в обратном порядке, базируясь на текущем состоянии сети EOS и биржи ресурсов REX.
Самая частая причина жалоб сводится к тому, что CPU слишком дорогой, и далее следует тот факт, что он слишком непредсказуем в плане того, какую пропускную способность процессора вы получите в любой отдельный момент времени. Источник этих жалоб может находиться в предыдущих попытках удешевить CPU с учётом высоких капитальных затрат и низкой загрузки. Дизайн EOSIO использует токен для представления модели владения, где 1% EOS позволяет вам бесплатно использовать 1% CPU. Такая ресурсная модель похожа на покупку дома, в котором вы можете жить вечно.
Модель владения CPU обеспечивала EOS большую функциональность, однако приводила к тому, что для использования сети людям приходилось владеть большим количеством EOS. Поскольку рынок придал всем передаваемым криптоактивам спекулятивную стоимость, значительно превышающую предполагаемую функциональную ценность, размер капитала, необходимого для получения функциональности процессорного времени EOS, оказался больше, чем готовы предоставить большинство пользователей. Кроме того, риск, связанный с волатильностью, означает, что истинная стоимость CPU непредсказуемым образом связана с приростом или потерей капитала на чрезвычайно нестабильном рынке.
В стремлении снизить стоимость CPU, EOSIO представила “CPU с частичным резервированием”, который распределяет неиспользуемые циклы процессора между активными пользователями. Это снизило воспринимаемую стоимость CPU почти в 1000 раз при низкой загрузке сети. Тем не менее, эта же схема выдавала непредсказуемые результаты, когда загруженность сети повышалась, блокируя аккаунты людей за то, что они уже использовали больше ресурса, чем предполагается их минимально гарантированным CPU.
В конце прошлого года мы представили возможность занести все аккаунты в серый список и убрать 1000-кратную надбавку количества свободного CPU, а затем попробовали убедить людей использовать REX, где они могли бы арендовать EOS с гораздо меньшими рисками и затратами, чем при покупке EOS для размещения в своей доле. В то же время некоторые пользователи EOS арендовали у REX подавляющую часть EOS и начали использовать свой законный процессорный баланс. Даже с устранением 1000-кратного бонуса в виде бесплатного CPU, предсказуемость количества времени CPU на один EOS зависела от процента всех EOS, размещённых в CPU.
Представьте, что вы единственный пользователь, который разместил EOS в CPU, и вам выделено 100% ресурсов процессора. Теперь представьте, что другой пользователь разместил в CPU сумму, в 100 раз превышающую количество ваших EOS, в результате чего ваш баланс CPU снизился до 1% от первоначального. Именно это и происходит, когда кто-то арендует на REX большое количество EOS и размещает их в CPU.
В итоге помимо бонуса в 1000x образовался дополнительный 3-5-кратный бонус, основанный на неразмещённых EOS, которые можно разместить в любой момент. Эти факторы сделали распределение CPU непредсказуемым для людей, разместивших в нём EOS, независимо от того, арендовали ли они их или являлись владельцами.
Идеальный алгоритм
При идеальном алгоритме CPU не имел бы добавочной спекулятивной стоимости, а зарезервированное вами время CPU было бы фиксированным и предсказуемым. Кроме того, вы могли бы использовать CPU, не замораживая большие объёмы капитала (в форме токенов EOS) и не подвергая его рискам волатильности. Наконец, CPU всегда был бы доступен по той или иной цене, и, следовательно, цена CPU была бы относительно стабильна с течением времени.
Для достижения подобной ситуации 100% всего процессорного времени должно арендоваться из системного контракта по цене EOS, растущей в геометрической прогрессии по мере того, как увеличивается процент арендованного CPU. EOS, заплаченные за аренду процессорного времени, будут распределены между размещёнными токенами EOS (например, пулом REX). Такая модель сохранит распределение CPU между держателями размещённых EOS путём компенсации дохода от размещения и расходов на аренду CPU. Предположим, что ваши размещённые EOS генерируют доход 1 EOS в месяц, значит вы можете потратить 1 EOS на рынке аренды и получить некоторое количество CPU. Количество CPU будет динамически меняться в зависимости от текущих цен. Очевидно, что вам будут компенсированы некоторые расходы на аренду CPU, исходя из вашего процента размещённых в доле токенов.
Благодаря распределению 100% CPU путём лизинга, устраняется динамичность предложения токенов, размещённых в CPU, а вместе с ней исчезает и необходимость беспокоиться о том, что люди, выводящие EOS с REX, вызовут шок на рынке аренды CPU и его алгоритме ценообразования.
Кроме того, CPU становится непередаваемым, потому что всё процессорное время распределяется через лизинг из системного контракта, а не путём размещения EOS. Это устраняет спекулятивный компонент цен на CPU и гарантирует, что все работают в рамках одной модели распределения ресурсов.
Чтобы определить сумму, уплачиваемую за аренду фиксированного процента от всего процессорного времени на период 30 дней, можно использовать простое уравнение.
На приведенной ниже диаграмме отображена плата за аренду в размере 100 млн EOS * PercentUsage2. С этим уравнением доход от аренды превысит инфляцию EOS, как только сеть сдаст в аренду около 10% мощности. Вполне возможно, что будущие версии управления EOSIO могут предпочесть выплачивать производителям блоков процент от арендного дохода, что будет соответствовать их интересам в максимизации функциональной ценности сети. В принципе, сообщество может использовать для определения кривой цен любой постоянный показатель. Более высокие показатели позволят использовать больший процент сети по низкой цене, но будут повышать цены быстрее по мере приближения коэффициента использования к 100%. Идеальный показатель будет балансировать спрос и предложение, дабы максимизировать общий доход от аренды за вычетом эксплуатационных расходов блокчейна.
Процентов арендовано / Общий доход с аренды
Поскольку те, кто арендует CPU, распределяются по принципу Парето, можно ожидать, что будет много крупных арендаторов, которые одновременно арендуют и/или обновляют аренду. Это может привести к внезапному снижению арендных ставок с последующим увеличением. Отсутствие “биржевого стакана”, позволяющего выявить падение арендных ставок, может создать нежелательное ценовое преимущество для крупных арендаторов. Поэтому мы предлагаем, чтобы цены на аренду падали медленнее, чем они растут. Учитывая приведённую выше функцию ценообразования P(TotalUsage), цена, по которой будет осуществляться новая аренда CPU, будет MAX(P(CurrentUsage), P(DailyAvgTotalUsage)). Если цены станут слишком высокими, то значение CurrentTotalUsage (текущий уровень использования) будет падать, а со временем также будет снижаться значение DailyAvgTotalUsage (среднесуточный уровень использования). Если произойдёт внезапное увеличение CurrentTotalUsage, тогда цены начнут быстро расти, чтобы предотвратить полное потребление ресурса CPU.
Также можно рассмотреть вариации этого алгоритма, такие как сброс DailyAvgTotalUsage до CurrentTotalUsage каждый раз, когда CurrentTotalUsage оказывается больше, чем DailyAvgTotalUsage. Это заставило бы алгоритм усреднения быстро реагировать на увеличение спроса, в то же время постепенно снижая цену в течение 24 часов, если не возникает новой волны спроса.
Пользователь, желающий приобрести 1% от ресурсов CPU на срок 30 дней, заплатит цену, равную:
MAX(P(CurrentTotalUsage + 1%), P(DailyAvgTotalUsage + 1%))) - MAX (P(CurrentTotalUsage), P(DailyAvgTotalUsage)))
Или, проще говоря, он должен будет заплатить дельту между общей суммой дохода от аренды, полученной при текущем уровне использования, и общей суммой дохода от аренды, ожидаемой на новом уровне использования.
Миграция с REX
Реализация нового дизайна стала возможна за счёт того, что, в отличие от ситуации на REX, актив CPU не может быть выведен с рынка аренды. Алгоритм REX должен сбалансировать потребности как арендаторов, так и арендодателей. В процессе арендодателям приходилось ожидать 30 дней, пока не истечет срок аренды, иначе потенциальные арендаторы не получали EOS в аренду, потому что арендодатели попросили вернуть свои EOS. В рамках текущей модели REX не существует простого решения, которое создало бы идеальную гармонию для обеих сторон процесса.
Самый прямой способ решить эту проблему – постепенно смещать процент CPU, выделенный в соответствии с текущей моделью, в сторону новой модели с помощью “инфляции” предложения CPU с течением времени. Это может быть реализовано путём добавления в системный контракт нового действия, которое позволит арендовать размещённый CPU, а затем выделит вам “виртуальную долю CPU”, тем самым размывая соотношение всего размещённого CPU (независимо от того, во владении ли он или арендован) относительно существующего CPU. Это не увеличивает предложение EOS, а просто регулирует параметры, которые определяют соотношение CPU, выделенного каждому аккаунту. В настоящее время в системном контракте задано соотношение 1:1 с EOS, размещёнными в CPU, однако базовый протокол EOSIO знает только об относительном весе CPU (вес, приписанный вашему аккаунту, делённый на сумму всех весов, приписанных всем аккаунтам).
Если предложение CPU, создаваемое новым рынком ресурсов, постепенно возрастёт до 100-кратного размера предложения EOS, размещённых в CPU, то новый рынок аренды фактически будет контролировать 99% процессорного времени EOS. В конечном итоге размещение EOS в CPU и NET может быть признано неактуальным и удалено, по мере того как все переходят на рынки аренды CPU/NET.
Доходы от нового рынка аренды CPU можно направить людям, разместившим средства в REX, точно так же, как это реализовано в аукционах имен и комиссиях рынка RAM. Это решение способно сделать CPU доступным по первому запросу и, что немаловажно, по разумным ценам. Со временем уровень использования рынка REX будет снижаться, и на его место придёт новый рынок CPU.
В случае принятия этой схемы сообществом, те, кто владеет EOS и сам размещает средства в доле, будут вынуждены перейти к аренде CPU с нового рынка, поскольку их существующие размещённые EOS будут обеспечивать всё меньшую долю в общем рынке CPU. Я предлагаю постепенно выводить CPU на новый рынок в течение одного года, чтобы дать людям возможность перенести свою стратегию использования ресурса CPU.
В конечном счёте, возможность размещать EOS в CPU и арендовать EOS на REX может быть упразднена в пользу предлагаемого здесь нового рынка CPU. Всё, что относится к CPU, можно также применить к рынку NET, который имеет такую же динамику, как и рынок CPU.
Удобство использования для конечных пользователей
Многие приложения и кошельки уже перешли на модель распределения CPU “кто первый авторизовал, тот и платит”, что устраняет головную боль конечного пользователя, которому приходится выбирать между арендой или размещением средств для получения пропускной способности CPU. Это новое предложение будет схоже с моделью аналогичных платформ, где поставщики приложений, которые арендуют услуги у облачных провайдеров, покрывают свои расходы с помощью ряда стратегий монетизации, таких как подписка, реклама или продажа продукта.
Заключение
Описанный здесь рынок аренды CPU заметно стабилизирует цены, снизит стоимость аренды и повысит предсказуемость доступа к CPU. Доходы от аренды CPU и NET по-прежнему могут быть распределены между теми, кто разместил средства в REX. Тем не менее, самым большим изменением будет постепенная потеря способности “завладеть CPU навсегда”, разместив EOS в доле CPU. В сочетании со способностью поставщиков услуг покрывать затраты своих пользователей на CPU на базе отдельных транзакций, это сделает сети на основе EOSIO наиболее простым и экономически эффективным решением на рынке.
Оригинал поста: ЗДЕСЬ
@blockchained, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество комментариев
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@blockchained, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество полученных комментариев
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@blockchained, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество полученных комментариев
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@blockchained, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество полученных комментариев
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Hello, @blockchained. You received 100% upvote from UPRomo for burned GBG. Promoted this post in the queue: @blockchained.
The instruction for burning, for promotion or a drop of posts, Invest in UPRomo, Agreement on the use of service.
Здравствуйте, @blockchained. Вы получили 100% апвот от UPRomo за сожженные GBG. Продвигали этот пост в очереди: @blockchained.
Инструкция по сжиганию GBG для продвижения или задвигания постов, Для инвесторов, Соглашение об использовании.