Последняя тенденция в основной сети EOS, похоже, заключается в зарабатывании токенов на чем угодно: зарабатывайте EOS через REX и вознаграждения избирателей/прокси, токены DAPP через стейкинг в DSP-сервисах или EIDOS через «майнинг процессора».

Другой идеей для держателей токенов EOS может быть заработок, сдав неиспользуемое процессорное время в аренду децентрализованным приложениям или пользователям, нуждающимся в процессоре. Хотя по своей природе это похоже на идею EIDOS, это предлагаемое решение на самом деле поможет сети помимо пассивного заработка.

Сдавайте в аренду неиспользуемый ЦП и зарабатывайте токены ЦП

В зависимости от вашего мнения, основная сеть EOS в настоящее время находится в кризисе ЦП или работает отлично и так, как ожидалось. Однако мы все можем согласиться с тем, что в настоящее время в цепочке могут работать только три типа учетных записей:

  1. Аккаунты с большим количеством ЦП.
  2. Аккаунты, которые смогли вовремя арендовать ЦП у REX. Более 80% ссужаемых REX в настоящее время заимствованы, что привело к тому, что цены заимствований REX достигли новых рекордных максимумов. Так продолжалось до тех пор, пока стало невозможно брать взаймы у REX.
  3. Учетные записи, взаимодействующие с децентрализованными приложениями, которые платят за ЦП своих пользователей или полагаются на щедрость третьей стороны, оплачивающей их ЦП, как это делает Bloks со своими бесплатными 5 транзакциями в день.

Похоже, что большинство учетных записей заимствовали ЦП у REX, поскольку изначально это был дешевый способ получить больше ЦП с помощью алгоритма ценообразования, подобного Bancor. Большим недостатком является то, что аренда ЦП REX длится 30 дней. Среднестатистический пользователь просто хочет сделать перевод, одобрить сообщение или поиграть в децентрализованном приложении казино в течение 30 минут, пока не продолжит свою жизнь без блокчейна. Но им приходится арендовать ЦП у REX на 30 дней, большую часть времени не используя выделенную им долю пропускной способности сети. Вдобавок ко всему, трудно оценить, сколько процессорного времени и, следовательно, EOS нужно для их транзакций, что приводит к агрессивной чрезмерной аренде ресурсов REX. Это приводит к тому, что сеть EOS по-прежнему не работает на полную мощность, несмотря на высокие цены на ЦП и жалобы пользователей на то, что они не могут использовать блокчейн. Имеет смысл предоставить пользователям возможность сдавать в аренду свой ЦП другим пользователям, когда он им не нужен. К счастью, в EOSIO 1.8 появилась функция, которая позволяет любому оплачивать расходы по любой транзакции любого пользователя.

Идея заключается в том, что пользователи открывают пропускную способность ЦП для всех и получают токен ЦП всякий раз, когда кто-либо использует их ЦП. За этот токен ЦП платит тот, кто использует пропускную способность, то есть для использования этой услуги требуется сначала самостоятельно владеть токеном ЦП и передавать его плательщику ЦП. Токен ЦП будет зарегистрирован на DEX, и рынки будут развиваться вокруг него, поскольку он имеет ценность/полезность. На этом этапе пользователи могут решить «заработать» и обменять их на EOS или использовать его утилиту для отправки транзакции, когда им требуется ЦП.

♻️ Может показаться, что мы прошли полный круг: EOSIO отказывается от явных транзакционных издержек, реализованных в газовой модели Ethereum, заменяя их неявной моделью инфляции и ставок; но теперь мы могли снова заплатить за транзакцию, владея явным токеном CPU/GAS. Разница в том, что теперь у вас есть выбор. Либо разместите свои токены, либо платите явно за транзакцию.

Доказательство концепции

Прелесть этой идеи в том, что ее можно довольно элегантно реализовать в паре строк. Несмотря на токен ЦП, требуется только один метод смарт-контракта:

// pseudo code
ACTION payforcpu(name cpu_payer, name cpu_user) {
  require_auth2(cpu_payer, N(payforcpu));
  // make sure that payforcpu auth is not enough to bill
  require_auth2(cpu_user, N(active));

  // move 1 CPU token from user to payer
  transfer(cpu_user, cpu_payer, asset(1, CPU), "");
}

Любой, кто хочет зарабатывать на своем неиспользуемом процессоре, просто должен создать новое разрешение payforcpu и убедиться, что оно linkauth соответствует действию payforcpu.

А теперь они раскрывают свой закрытый ключ для действия payforcpu. Это звучит как огромная проблема безопасности, но это не так. Из-за linkauth единственным действием, для которого можно использовать ключ, является действие payforcpu. И всякий раз, когда кто-то использует ваш ключ и вызывает это действие для выставления счетов от вашего имени, вы получаете 1 токен ЦП. Как раз по желанию.

На самом деле, мы можем сделать этот процесс еще проще, если все договорятся об общей паре открытого и закрытого ключей ЦП. Допустим, каждый, кто хочет сдать в аренду свой ЦП, использует этот ключ для своего разрешения payforcpu:

Public key: EOS4utnVzEthwBJbn5DVoJL82jUb7Xh6YLdDfSpMMwsq1zB2iGjxe
Private key: 5Ji1r2eRS1zbB883Wt18m56fVUSsG83QerdVyUv7hou96AaEF8T

С точки зрения пользователя или заемщика децентрализованного приложения сервис работает следующим образом:

  1. Убедитесь, что у вас есть токены ЦП
  2. Найдите кого-нибудь, кто предлагает свой процессор. Это может быть сделано кредиторами, зарегистрировавшимися в смарт-контракте, или просто вызовом конечной точки get_key_accounts с общим открытым ключом ЦП. (Необходимо провести некоторую проверку, чтобы убедиться, что у кредитора на самом деле достаточно пропускной способности.)
  3. Подготовьте любую транзакцию и вставьте действие payforcpu в качестве первого действия. Объявите разрешение кредитора payforcpu в качестве первого разрешения, а разрешение плательщика в качестве второго разрешения. Подпишите его с помощью общего «закрытого» ключа процессора и вашего секретного ключа для разрешения плательщика. Из-за функции ONLY_BILL_FIRST_AUTHORIZER затраты ЦП на транзакцию выставляются только счету, указанному в качестве первого авторизатора, т. е. кредитора.

Проблемы

Есть пара задач, которые еще предстоит решить:

  1. Сделки не равны. Единицей измерения ЦП является время выполнения в микросекундах. В идеальном мире вместо этого вы должны платить 1 токен CPUMICROSECONDS за каждую выполненную микросекунду, но это технически невозможно в смарт-контракте. Умные заемщики объединят свои действия в одну транзакцию, и им все равно придется заплатить только 1 токен ЦП.
  2. Возможно, кредиторы хотят арендовать только часть своего ЦП до процента, чтобы по-прежнему иметь немного ЦП для своих собственных транзакций. Установка порога решила бы эту проблему, но кажется технически невозможным снова без выхода из сети. Однако проблема не такая серьезная, потому что они заработали токены ЦП и могут просто использовать их вместо этого.
  3. Кредиторы без оставшейся пропускной способности ЦП не могут использоваться и должны быть отфильтрованы. Хорошо, что кредиторы — это не NFT, они взаимозаменяемы 😃 Неважно, чей процессор мы используем. Кто-то, вероятно, придумал бы централизованный API, который всегда возвращает кредитора с достаточным количеством свободных процессоров.
  4. Что будет с РЕКСОМ? Я предполагаю, что кто-то будет арендовать ЦП у REX, чтобы снова сдавать его в аренду через эту систему, пока это выгодно.
  5. Возможно, есть и другие экономические вопросы, о которых я не подумал.

Первоначально опубликовано на cmichel.io