Бумага про Стим. Часть 3

in #ru8 years ago (edited)

Оригинальный пост с полным переводом в следствие большого размера был обрезан клиентами. По вашим просьбам решил перепостить перевод разбив на 4 части:

Полная версия в PDF.

Предыдущая Часть

Защита от Ботнетов

Многие системы основанные на Proof-of-Work заканчивают на том, что майнятся ботнетами. Ботнет это коллекция тысяч или миллионов машин, которые были скомпрометированы хакерами. Эти хакеры воруют вычислительные и энергетические ресурсы скомпрометированных машин для майнинга криптовалютных токенов.

Стим обладает многими свойствами для предотвращения доходности вычислительными ворами. Операторы ботнетов получают выгоду в поисках авантюр и обычно продают украденные ресурсы тому, кто больше заплатит. Это означает, что те кто использует ботнет платит за вычислительные ресурсы таким же образом как и те, кто используют Amazon EC2. Инвестиционное требование Стима означает то, что капитал потраченный на покупку ресурсов ботнета будет заблокирован на длительный промежуток времени во время которого оператор ботнета обречен на волатильность цены.

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

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

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

Устранение Трансакционных Комиссий

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

Блокчейн технология в данный момент зависит от трансакционных комиссий для того, чтоб защищать сеть от спама. Эти сборы страдают всеми известными проблемами микротранзакций, и не дают блокчейнам быть использованными для транзакций с низкой ценностью. Истинно децентрализованные приложения должны предлагать пользователям чувство бесплатности транзакций, если они хотят конкурировать с их централизованными альтернативами. Эта бумага описывает подход используемый в Стим для устранения необходимости в трансакционных комиссиях, таким образом делая возможным широкий спектр невозможных в прошлом децентрализованных приложений.

Проблема с Комиссиями

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

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

Микроплатежи Не Работают

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

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

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

Микроплатежи, как все платежи, требуют сравнения: "Стоит ли такое-то количество X такого-то количества Y?". Существует понятие минимальных ментальных трансакционных издержек создаваемых фактом который не может быть оптимизирован, потому-что единственная транзакция которую пользователь будет желать подтвердить не думая, это та транзакция, которая не стоит ему ничего, т.е. как будто ее нет вообще.

Clay Shirky

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

Такие системы как BitShares, NXT, Ripple, Counterparty и Stellar позволяют пользователям размещать лимит ордера на блокчейне, и все они взимают небольшую комиссию с пользователей для того, чтобы осуществить это действие. Позднее, если пользователь желает отменить ордер, удерживается другая комиссия. Такие системы как Ethereum выводят микроплатежи на совершенно новый уровень взимая плату за вычисление. Все эти системы борются за привлечение новых мейнстримных пользователей таким же способом, как если бы децентрализованный поисковик пытался бы конкурировать с Google за новых мейнстримных пользователей и при этом удерживал бы небольшую комиссию за каждый поисковой запрос. Не важно на сколько хорош сервис, люди ожидают, что конкретные вещи будут бесплатными. Это правдиво даже если в итоге пользователь в итоге платит больше при измененной структуре комиссий.

Комиссии как Барьер для Входа

Любые комиссии создают барьер для входа новых пользователей. Перед тем как кто-либо может поэкспериментировать с Ethereum он должен приобрести несколько токенов эфира. Если кто-то хочет разработать децентрализованное приложение на Ethereum, то он должен переложить эти затраты на своих покупателей. Покупка криптовалюты не легкая задача и редко имеет смысл на сумму менее $10. Это означает, что новые пользователи, которые хотят попробовать новое децентрализованное приложение должны быть убеждены принять решение на $10.

Взимание Комиссий

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

Атаки Сибиллы

Централизованные сайты предотвращают спам при помощи ограничения количества запросов и некоторых форм идентификации. Даже такой простой способ как reCAPTCHA достаточен для ограничения создания фейковых аккаунтов. Если кто-то злоупотребляет их аккаунтами, тогда централизованные сайты могут заблокировать аккаунт.

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

Полное Резервирование против Частичного Резервирования

Давайте рассмотрим блокчейн как ISP (от англ. Internet Service Provider или поставщик услуг интернета) работающий как кооператив, который владеет всеми кабелями в городе, и имеет максимальную пропускную способность, которую он может обеспечить в любое время. Люди живущие в городе могут купить акции этого ISP в обмен на право использовать часть доступного пропускного канала.

У ISP есть две опции: использовать систему с полным резервированием или с частичным резервированием. При использовании системы с полным резервированием каждый пользователь может использовать какую-то часть максимального пропускного канала пропорционально его акциям. Т.к. никто не пользуется Интернетом в одно и то же время, городская сеть будет сильно недоиспользована.

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

Пропускная Способность Вместо Микроплатежей

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

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

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

Пример Реализации

Допустим B равняется средней пропускной способности пользователям за время T. Допустим W равняется числу секунд за неделю, и допустим N равняется размеру транзакции, которая случилась через S секунд после T. На основании этой информации блокчейн может вычислить новую среднюю пропускную способность для пользователям как:

Bnew = MIN(0,B * (W-S) / W) + N * S / W
Tnew = T + S

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

Let U = стим-мощь пользователям
Let S = общее количество стим-мощи
Let R = текущий резервный коэффициент между 1 и Rmax
Let C = максимальный размер блока устанавливаемый делегатами
Let L = общее количество блоков в неделю
Let M = C * L * R
Распределение = M * U / S

Пользователю будет установлена средняя пропускная способность M * U / S. Каждый раз когда транзакция будет приводить к увеличению установленного лимита выше этого значения, этот пользователь не будет иметь возможности осуществлять транзакции до тех пор, пока не пройдет достаточно времени для снижения его средней.

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

Минимальный резервный коэффициент 1, а максимальный резервный коэффициент должен быть вычислен для предотвращения малых акционеров от потребления всей доступной пропускной способности. Если никто не использует доступную пропускную способность, тогда резервный коэффициент может расти до тех пор пока пользователь с 1 сатоши стим-мощи не сможет делать транзакции в каждом блоке.

Изучаем на примере Биткоина

Для понимания того, как предлагаемый алгоритм работал бы в Биткоине необходимо оценить разумное значение для резервного коэффициента R на основе текущего использования. Основываясь на текущем количестве биткоинов в 15 миллионов и ежедневном объеме транзакций в размере 400 тысяч биткоинов мы может получить минимальный резервный коэффициент 38 для Биткоина. Используя формулы мы может вычислить недельную пропускную способность (в байтах), которая будет доступна на 1 биткоин.

Let C = 1MB = 1024*1024
Let L = 1008 (блоков в неделю)
Let R = 38
Let S = 14000000 BTC (количество биткоинов минус не двигающиеся)
Let U = 1 BTC
CLR/S = 2869 байтов в неделю, или около 5 транзакций в неделю на 1 биткоин

Так как R = 38 это нижняя граница на резервный коэффициент, CLR/S это нижняя граница на разрешенную пропускную способность. Самый простой кейс предполагает, что пользователям необходимо иметь максимум 0.2 биткоина (или около 5000 руб.) для того, чтобы делать транзакции раз в неделю. Тем не менее эта свободная верхняя граница получена из предположения что все биткоины равно перемещаемы. Это не так - пользователи с большим количеством биткоинов не обязательно делают транзакции десятки или сотни раз в неделю. Оставшиеся транзакции которые эти пользователи могли бы сделать увеличат резервный коэффициент, а это позволяет использовать свободную пропускной способность для малых пользователей.

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

Влияние на Пропускную Способность

Пропускная способность блокчейна не обязательно ограничена. Технологическая способность существующей интернет инфраструктуры вполне позволяет увеличить размер блока Биткоина до 10 мегабайт, что в свою очередь снизит минимальные требования к балансу в 10 раз. В то время как Биткоин на данный момент поддерживает 3 транзакции в секунду, альтернативные имплементации способны на более чем 1000 транзакций в секунду. Это уменьшает нашу консервативную верхнюю границу до 0.0006 биткоина или приблизительно 15 рублей. Это означает, что аккаунт, владеющий 15 рублями сможет делать транзакции в среднем как минимум один раз в неделю. А в реальности гораздо чаще, т.к. мы имеем дело с достаточно консервативной оценкой.

Максимальное Количество Пользователей

Мы можем использовать похожую математику для вычисления максимального количества уникальных пользователей, которым сеть может позволить делать транзакцию один раз в неделю: B*W/T. T отражает средний размер транзакции. Это означает что Биткоин мог бы поддерживать около 2 миллионов пользователей, которые делают транзакции один раз в неделю предполагая, что каждый пользователь имеет одинаковый баланс.

Сравнение с Комиссиями

Если мы предположим что пользователь со счетом 1500 рублей в биткоинах делает транзакции раз в неделю и платит 3 рубля комиссионных каждый раз когда он делает транзакции, получится что такое пользователь платит трансакционных комиссий на сумму 150 рублей в год. Пользователь должен обеспечивать 8% возврат на его 1500 рублей для того, чтобы окупить только трансакционные издержки. Пользователь в любом случае собирается держать свои деньги на блокчейне, так что пользователь с 1500 рублями в биткоинах сэкономит 150 рублей используя подход ограничения лимитов вместо комиссионных. С 15000 рублями люди могут делать транзакции каждый день и экономить около 1200 рублей в год.

Создание Аккаунтов

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

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

Для того, чтобы обеспечивать комфортный пользовательский опыт с минимальным количеством подвисших аккаунтов, все новые аккаунты должны создаваться с балансом в 10 раз превышающим минимально требуемый для еженедельных транзакций. Таким образом даже если спрос возрастет в 10 раз, счет все равно будет действующим.

Оправдание Минимальных Балансов

Концепт требования от пользователей в обеспечении минимального баланса вытекает натуральным образом из ценности пользователя. Все кто занимаются бизнесом знают, что каждый пользователь имеет высокую ценность. Где угодно бизнесы тратят от 2000 рублей до 15000 рублей за приобретение каждого пользователя. Иногда они платят пользователям напрямую, иногда они платят за рекламу, а иногда целые компании приобретаются только из-за их пользовательской базы. После того, как компания приобретает пользователя, она часто дает ему много бесплатных услуг только за то, чтобы он оставались с ней достаточно долго, чтобы сохранялась возможность монетизировать его под любым соусом.

Ripple использует минимальный баланс который подстраивается под использование используемых ресурсов, и требует чтобы новые аккаунты были пополнены минимальным балансом. На текущий момент их минимальный баланс в районе 10 рублей, что больше 6 рублей, которые по нашей оценке позволят людям делать транзакции раз в неделю.

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

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

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

Стимы использующиеся для создания аккаунтов сразу конвертируются в стим-мощь.

Корректировка Резервного Коэффициента

Ограничение лимитов требует, чтобы сеть корректировала резервный коэффициент достаточно быстро для предотвращения влияния атакующего, который пытается заспамить сеть. Давайте предположим, что у атакующего достаточно большой баланс, скажем, 1% доступных стимов. Если мы предположим что сеть нацелена на коэффициент использования 50%, тогда устойчивая атака позволит предоставить пользователю 25% пропускной способности сети в том случае если все другие пользователи также используют 25% пропускной способности. Говоря другими словами, самый большой пользователь никогда не будет способен потребить более 50% целевой пропускной способности до тех пор пока он не контролирует больше чем 50% стим-мощи.

Давайте попробуем использовать первоначальный резервный коэффициент 200x. Из-за частичного резервирования кто-то кто контролирует 1% токенов имеет право требовать транзакций в объеме превышающем максимальный размер блока в два раза. Для того чтобы снизить сетевое использование атакующего до 25% резервный коэффициент должен уменьшиться в 25 раз. Это приведет к тому, что минимальный баланс требуемый для транзакций вырастет в 8 раз.

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

В то время как снижения резервного коэффициента должны быть быстрыми и нелинейными для контрответов, повышения резервного коэффициента должно быть медленными и линейными. Если сеть будет подстраиваться в обоих направлениях за 30 секунд, тогда атакующий сможет расшатывать сеть. Поток транзакций должен быть скорректирован за 30 секунд, с тем чтобы быть восстановленным на уровень до атаки за целый час. При такой модели атакующий сможет заспамить сеть на 30 секунд в час или менее 1% от всего времени.

Также должна существовать медленная константа давящая на увеличение резервного коэффициента каждый раз, когда загрузка сети ниже 50% до тех пор, пока сеть не достигнет максимального резервного коэффициента. Максимальный резервный коэффициент определяет минимальную необходимую долю для заспамливания сети короткими импульсами.

Любой пользователь с количеством токенов, которое меньше чем ВСЕГО_ТОКЕНОВ / (2*РЕЗЕРВНЫЙ_КОЭФФИЦИЕНТ) не сможет произвести достаточно количество транзакций для наполнения даже одного блока. С резервным коэффициентов 200 это означает, что любой пользователь с балансом менее 0.25% валюты не сможет создать достаточное количество транзакций, чтобы остановить обслуживание других.

Эффективность по Отношению к Комиссиям

Для сравнения эффективности ограничения лимитов с трансакционными комиссиями мы должны проанализировать реагирование обоих систем на умышленную попытку атакующим заспамить сеть. В Биткоине атакующий с 500 тыс. рублями сможет уничтожить сервис на целый день заполняя каждый отдельный блок. Тот же самый атакующий не сможет остановить функционирование сети даже на один блок при подходе с динамичными частичным резервированием на базе ограничения лимитов.

Если мы рассмотрим более экстремальный случай и предположим, что атакующий контролирует 1% всех монет, тогда мы даем атакующему около 3.5 млрд. рублей. Такой атакующий может остановить обслуживание блокчейна Биткоина на 16 лет до тех пор пока майнеры не увеличат трансакционные комиссии или пропускную способность. Даже если трансакционные комиссии будут повышены до 1000 рублей за транзакцию, атакующий все равно сможет уничтожать сеть на протяжении 16 суток.

При подходе ограничения лимитов атакующий который контролирует 1% всех монет сможет достигнуть своей гнусной цели всего на 30 секунд.

Аренда против Покупки против Совместного Использования

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

Если дом находится в собственности у нескольких людей, эти персоны должны решить как они хотят его совместно использовать. Кто-то кто владеет 50% дома, но использует его только одну неделю в год может ожидать оплаты от тех персон, которые используют его в это время. Это менталитет системы основанной на трансакционных комиссиях.

С другой стороны, кто-то владеющий 50% дома может предполагать, что спрос на дом вырастет в будущем, и он сможет продать его долю дороже. Любой собственник, который владеет бОльшим количеством дома, чем его использует становится спекулянтом по недвижимости. С таким менталитетом вместо того, чтобы получать оплату, такой человек получает уважение.

Ценность доли происходит от количества времени, которое доля может потенциально дать своему собственнику. Владение 1% дома и возможность использовать его 1 неделю это минимальная цена доли. Однако, если половина акционеров никогда не используют их время, тогда ценность за минимальную цену увеличится до 2 недель в год. Если эти неактивные пользователи вместо этого захотят сдавать в аренду их неиспользуемое время, тогда ценность опять вернется на прежнюю отметку. Если все неиспользованные времядоли были бы проданы людям, которые бы пользовались ими, тогда ценность времядоли упала бы на 50%. До тех пор пока собранная арендная плата выше падения времядоли в цене собственники делают экономический просчет.

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

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

Говоря другими словами, трансакционные комиссии должны равняться минимальному балансу аккаунта необходимого для обеспечения транзакций раз в неделю и такой аккаунт должен пополняться каждый раз в конце недели. Давайте предположим, что минимальный размер баланса 100 рублей позволяет кому-либо делать транзакции один раз в неделю. Если кто-то с балансом 100 рублей желает делать 5 транзакций в неделю, тогда ему надо будет увеличить баланс до 500 рублей.

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

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

Производительность и Масштабируемость

Сеть Стим построена на Graphene, той же самой технологии которой заряжен BitShares. Graphene публично продемонстрировал способность обрабатывать больше 1000 транзакций в секунду в распределенной тестовой сети. Graphene может легко масштабироваться до 10 тыс. транзакций в секунду с относительно простыми улучшениями коммуникационного протокола и банального апгрейда серверного оборудования нод.

Масштаб Реддита

Стим способен обслуживать пользовательскую базу аналогичную Reddit. В 2015 году 8.7 миллионов пользователей создавали в среднем 23 комментария в секунду, со средним показателем 83 комментария в секунду. Было создано 73 миллиона постов верхнего уровня, со средним показателем 2 постов в секунду. В общей сложности если бы Reddit работал бы на блокчейне он бы требовал в среднем 250 транзакций в секунду.

Для того, чтобы достигнуть такой производительности (лидирующей в блокчейн отрасли) Стим позаимствовал уроки полученные от архитектуры LMAX Exchange, которая способна обрабатывать 6 миллионов транзакций в секунду. Ключевые пункты полученные из этих уроков:

  1. Держи все в оперативной памяти
  2. Держи ключевую бизнес логику в одном потоке
  3. Держи криптографические операции (хеши и подписи) вне бизнес логики
  4. Разделяй валидацию на проверки зависимые от состояния и независимые от состояния
  5. Используй объектно ориентированную модель данных

Следуя этим простым правилам Стим способен обрабатывать 10 тыс. транзакций в секунду без каких либо существенных усилий по оптимизации.

Использование оперативной памяти для хранения всего блокчейна жизнеспособно, особенно с учетом недавнего анонса технологии OptaneTM от Intel. Должно быть возможно использование общедоступного оборудования для обработки бизнес логики ассоциированной со Стим на одном ядре, а все посты должны держаться в оперативной памяти для быстрого индексирования. Даже Google держит их индекс всего Интернета в оперативной памяти. Использования блокчейн технологии делает тривиальным репликацию базы данных между машинами для предотвращения потерь. Как только технология OptaneTM станет общедоступной оперативная память станет еще быстрее при том, что станет еще и энергонезависимой. Другими словами, Стим разработан для архитектур будущего. Стим разработан для того, чтобы расти.

Дистрибуция и Денежная Масса

Сеть Стим стартует с нулевой денежной массы валюты и направляет стимы через доказательство работы (PoW) с приблизительной скоростью 40 стимов в минуту майнерам. Дополнительно 40 стимов в минуту создается для посевных фондов по вознаграждению создателей и кураторов контента. В общей сумме создается 80 стимов в минуту. Затем сеть начнет вознаграждать пользователей, которые конвертировали стимы в стим-мощь. В этот момент количество стимов растет приблизительно на 800 стимов в минуту из-за комбинированных эффектов применения следующих способов вознаграждать:

Награды за Контрибьюцию

  • Награды кураторам: 0.5 стим в блок или 5.8125% в год, смотря что больше (1 стим в блок до 4 июля 2016 года)
  • Награды авторам: 1.5 стим в блок или 1.9375% в год, смотря что больше (1 стим в блок до 4 июля 2016 года)
  • Награды производителям блоков: 1 стим за блок или 0.75% в год, смотря что больше
  • PoW награды перед блоком 864000: 1 стим за блок (награждается как 21 стим за раунд)
  • PoW награды после блока 864000: 0.0476 стим за блок (награждается как 1 стим за раунд) или 0.75% в год, смотря что больше
  • Награды за ликвидность: 1 стим за блок (награждается как 1200 стимов в час) или 0.75% в год, смотря что больше.

Награды за Стим-мощь

  • За каждый стим созданный вышеуказанными вознаграждениями, 9 стимов разделяется между всеми держателями стим-мощи

Стимбакс Операции

  • Стимбакс награды: Каждому держателю стимбаксов выплачивается доход на основании годовой процентной ставки (англ. APR) устанавливаемой делегатами
  • Количество стимов за которые может быть погашено общее количество стимбаксов будет меняться в зависимости от изменений ценового фида. Такое изменение это фактически уничтожение стимов когда ценность стимов (на основании измерений ценового фида) растет или создание стимов когда ценность стимов падает (на основании измерений ценового фида).

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

Общий эффект этих постоянных к распределению токенов в том, что темп приблизительно 800 стимов в минуту сохраняется некоторое время (в учетных единицах стим), но падает в процентном выражении (т.к. 800 стимов это все меньшая и меньшая часть в общем количестве токенов). Когда различные компоненты вырастут с 800 стимов в минуту рост достигнет соответствующих процентных потолков которые в дальнейшем будут поддерживаться. Также это означает, что долгосрочно номинальный рост вырастет с 800 стимов в минуту до значения необходимого для обслуживания постоянной величины в 10% годового роста денежной массы направляемой на стимуляцию контрибьюции и 100% годового роста денежной массы на комбинированный эффект стимуляции контрибьюции и инвестиций. Общий эффект это удвоение общего количества стимов каждый год (но как уточняется в следующей секции если большинство пользователей усилилось тогда эффект от удвоения это фактически сплит, который не перераспределяет собственность).

Картинка общего количества токенов усложнена последствиями операций со стимбаксом, которые могут приводить к массивному созданию или уничтожению стимов через следование цены фида, и вознаграждениями держателей стимбаксов. Это обсуждалось в разделе про стимбаксы. Другие, менее влиятельные эффекты существуют, включая неиспользованные вознаграждения (например, вознаграждения за пропущенные блоки), шум вызванные удачей майнеров при PoW производстве, а также эффект изменения длинны очереди майнеров вследствие изменений хеш производительности сети.

Следующая Часть


Ошибка, неточность, или просто хочется сделать статью лучше? Спасибо заранее за пул риквест!


Обо мне: Дима Стародубцев или 21xhipster. Архитектурю в кибер • Фонд, управляю инвестициями в Пирог • Сатоши, исследую технологию и экономику консенсус алгоритмов. Фоловьте, че!

Sort:  

Приятно читать, всё структурировано теперь, благодарю!

Спасибо, проделана отличная работа!

@hipster Great article again summarizing the economics of Steem and how future growth of the platform and inflation will affect each other.

Спасибо, отличный перевод

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.028
BTC 63033.54
ETH 2434.49
USDT 1.00
SBD 2.54