Бумага про Стим. Часть 2
Оригинальный пост с полным переводом в следствие большого размера был обрезан клиентами. По вашим просьбам решил перепостить перевод разбив на 4 части:
Полная версия в PDF.
Предыдущая Часть
Дистрибуция Валюты
Существует два способа, которым кто-то может быть вовлечен в криптовалютное сообщество: долю в сообществе можно купить или заработать. В обоих случаях пользователи добавляют стоимость к валюте, тем не менее, бОльшее количество людей располагают свободным временем, нежели свободными финансовыми ресурсами. Представьте себе цель разворачивания валюты в бедном сообществе без денежных средств, но с большим количеством времени. Если люди могут заработать деньги работая друг на друга они создадут стоимость через взаимный обмен поддерживаемый справедливой учетной и валютной системой.
Дистрибуция валюты как можно бОльшему количеству людей способом который в общем случае воспринимается как справедливый является сложной задачей. Задачи которые могут быть полностью оценены компьютерными алгоритмами ограничены по своей природе, и вообще говоря, имеют ограниченное количество применений. В случае с майнингом Биткоин это может приводить к производству специализированного оборудования, и вынуждать людей инвестировать время для разработку более эффективных алгоритмов. Такой способ мог бы помогать находить простые числа, но ни одно из этих применений не обеспечивает осмысленную ценность для общества или валюты, держателем которой это общество является. Что еще более важно, это то, что в таких системах экономия от масштаба и рыночные силы приведут к исключению из дистрибуции всех, за исключением экспертов. В конечном счете, майнинг основанный на вычислениях это просто один из способов покупки доли в сообществе, потому что он требует денег для оплаты электрических счетов и разработку необходимого аппаратного обеспечения.
Чтобы дать равную возможность зарабатывать валюту всем людям всем должна быть дана возможность работать. Сложность возникает при суждении об относительном качестве и объеме работы, которые обеспечиваются индивидом. Также сложно сделать так, чтобы это суждение эффективно аллоцировало вознаграждения миллионам пользователей. Это требует создание масштабируемого процесса голосования. В частности такой подход требует чтобы авторитет по перераспределению средств должен быть настолько децентрализован и распределен, на сколько это возможно.
Первый шаг в вознаграждении миллионов пользователей это принять дистрибуцию фиксированного количества валюты в не зависимости от того, сколько работы в действительности сделано пользователям или от того, сколько пользователей голосует. Это радикально меняет вопрос на который нам нужно ответить с "Должны ли мы платить?" на "Кому мы должны платить?". Такой подход также сигнализирует рынку, что деньги распределяются и достанутся тому, кто "поставит" больше работы. Такой подход очень похож на подход Биткоина в котором на данный момент 12.5 биткоинов достаются тому, кто вычислит самые сложные хеши. Также как и Биткоин, вся работа должна быть сделана до выплаты и ничто не должно оплачиваться спекулятивно на обещании сделать работу в будущем.
Следующий шаг это вознаграждение всех кто делает что-либо даже удаленно положительное с чем-нибудь. Это достигается ранжированием всей выполненной работы и дистрибуции пропорционально ее стоимости. Чем больше конкурентоспособным становится рынок, тем сложнее становится зарабатывать те же самые выплаты.
Голосование за Дистрибуцию Валюты
Предположим, что существует фиксированное количество денег для дистрибуции, а те у кого есть долгосрочный инвестиционный интерес в будущей стоимости и полезности валюты это те, кто должны решить как ее распределить. Каждый инвестировавший пользователь кастует свои голоса на тех, кто сделал лучшую работу, а в конце дня количество доступных денег на этот день делится пропорционально поступившим голосам таким образом, чтобы даже если у кого-то есть хотя бы один положительный голос то он получает что-нибудь.
Наивный процесс голосования создает Дилемму Заключенного в которой каждый голосующий индивид имеет стимул голосовать за себя за счет бОльших целей сообщества. Если каждый голосующий начнет голосовать за себя валюта не сможет быть распределена, и в итоге не сможет приобрести сетевой эффект. С другой стороны, если только один голосующий казлит, в таком случае случае голосующий выиграет незаслуженные прибыли, в общем не оказывая эффекта на общую ценность валюты.
Для того, чтобы сместить стимулы и отговорить индивидов от простого голосования за самого себя, деньги должны распределяться нелинейно. Например, на основании квадратической функции голосования, т.е. кто-то с количеством голосов в два раза превышающим количество голосов кого-то другого должен получить вознаграждений в четыре раза больше, а кто-то у кого количество голосов в три раза больше должен получить в девять раз больше. Другими словами вознаграждение пропорционально голосам в квадрате, а не просто голосам. Это отражает ценность сетевого эффекта который растет квадратично с количеством участников в соответствии с Законом Меткалфа.
Предполагая, что все пользователи будут иметь равную долю, кто-то кто получит только свой голос получит гораздо меньше, чем тот кто получит голосов от 100 разных пользователей. Это мотивирует пользователей кооперировать при голосовании за одну вещь, чтобы максимизировать выплаты. Такая система также создает финансовые стимулы сговориться, чтобы группа голосовала за какую-то вещь, а потом получала вознаграждение пропорционально между друг другом.
Сговоры при Голосовании
При том, что кооперация при распределении фондов за лучшую работу это желаемая цель, сговоры которые подрывают эту цель должны быть минимизированы. Существует два типа сговоров: самый простой это когда один пользователь просто покупает бОльшую долю чем другие, а другой способ включает в себя потребность в координировании большого количества малых держателей работать совместно. Крупные держатели могут иметь влияние в 100 или даже в 1000 раз больше чем малые, что означает что у них есть еще бОльшая мотивация казлить через голосование за себя, еще большую мотивацию, чем была бы у них при линейной дистрибуции.
Не зависимо от того сколько денег имеет любой индивид, всегда будут другие товарищи со схожим состоянием. Даже самые богатые редко располагают бОльшим количеством средств, чем следующая пара чуть менее богатых совместно. Более того, те у кого есть крупные инвестиции в сообщество, всегда рискуют потерять больше всего, пытаясь обыграть систему голосования в свою пользу. Это как если бы генеральный директор решил бы остановить выплату зарплат для того, чтобы положить ее себе в карман. В таком случае любой человек решил бы работать на другую компанию. Таким образом все бы стали работать на другую компанию, а такая компания перестала бы что либо стоить, оставляя такого CEO банкротом, а не состоятельным человеком.
К счастью, любая работа которая получает большую концентрацию голосов также становится и самой популярной. Т.к. всегда есть возможность голосовать негативно, большое количество малых акционеров смогут обнулить голосующую силу сговорившейся группы или крупных акционеров, которые казлят. Более того, крупные акционеры больше теряют если валюта падает в цене по причине злоупотреблений, чем приобретают от голосования за самих себя. По факту честные крупные акционеры скорее всего будут более эффективны в противодействии злоупотреблениям, и будут чаще использовать отрицательные голоса, чем малые акционеры.
Использование негативных голосов для того, чтобы сдержать людей от злоупотреблений компенсирует "ментальность краба" которой многие люди страдают, когда воспринимается что один индивид получает доходы за счет всех других. В то время как ментальность краба обычно касается недальновидных людей, которые принижают хороших людей, это также то, что позволяет хорошим людям противодействовать плохим. Единственная проблема с ментальностью краба это когда люди ошибочно полагают что кто-то получает прибыль за счет всех других.
История о Корзинке с Крабами
Человек прогуливался вдоль пляжа и увидел другого человека который рыбачил. Рядом с рыбаком находилась корзинка с крабами для приманки. Как только он подошел поближе, он увидел, что на корзинке нету крышки, а внутри находятся живые крабы.
"Почему ты не закрываешь свою корзину крышкой, чтобы крабы не убежали?", - он сказал.
"Ты не понимаешь.", - ответил человек. "Если бы в корзине был один краб, то он мог бы вскарабкаться достаточно быстро. Тем не менее, когда в корзине много крабов, если кто-то пытается вскарабкаться, другие его держат, чтобы он разделил такую же судьбу как и все другие оставшиеся."
Так же и с людьми. Если один человек пытается что-то делать по-другому, получить лучшие оценки, улучшить себя, выскочить из окружения, или мечтать большие мечты, другие люди будут стараться держать его, чтоб он разделил их судьбу.
Полностью устранить злоупотребления невозможно, да и не должно являться целью. Даже те, кто будет пытаться злоупотребить системой все равно продолжают делать работу. Любая компенсация за их успешные попытки злоупотребить, или сговориться как минимум не менее ценно для целей дистрибуции валюты, точно также как у Биткоина существует майнинг через пулы и одиночный майнинг. Все что необходимо это убедиться, что злоупотребления не настолько угрожающие, что подрывают стимулы делать реальную работы в поддержке сообщества и ее валюты.
Цель создания валюты сообщества в получении большего количества крабов в корзине. Пытаться принимать экстремальные меры, чтобы устранить злоупотребления, это как пытаться накрыть корзинку крышкой, чтобы предотвратить побег нескольких крабов в ущерб простоте добавления новых крабов в корзину. Достаточно просто сделать стены скользкими и дать другим крабам достаточно власти, чтобы они предотвращали побеги других крабов.
Голосование Ограниченное Лимитом
Главный компонент минимизации злоупотреблений это ограничение возможности голосовать. Индивид может прочитать и оценить ограниченное количество информации в день. Любые попытки голосовать чаще это признак автоматизации и потенциального злоупотребления. При помощи установления лимитов на голосование, акционеры, которые голосуют чаще, с каждым новым голосом уменьшают свой вес, в отличие от акционеров которые голосуют реже. Попытки разделить токены на несколько счетов также разделяет и влияние и в итоге не приводит ни к увеличению влияния ни обходит лимиты.
Приведенные графики отражают каким образом сила голоса пользователя уменьшается каждый раз, когда он голосует, и как она регенерируется со временем при отсутствии голосов. Этот график отражает номинальный временной юнит и может быть масштабирован для любого темпа голосования. Имейте ввиду, что сила голосования быстро падает в периоды продолжающего голосования, а потом медленно восстанавливается.
Сила голосования умножается на количество стим-мощи для определения доли в пуле вознаграждений направляемой на конкретный пост или комментарий.
Отложенные Выплаты
Чтобы предотвратить больше злоупотреблений, все выплаты отложены на 24 часовую взвешенную на стим-мощь среднюю прошедшую с момента каждого голосования. Это обеспечивает защиту от кражи наград крупными акционерами голосующими на последней секунде до того, как другие голосующие (как крабы) смогут противодействовать потенциальному злоупотреблению. Когда выплата совершена все голоса сбрасываются на 0. Если голоса поступают после выплаты, процесс начинается заново.
Этот график отражает каким образом период истечения голосования изменяется в ответ на поступающие позитивные или негативные голоса. Новые голоса расширяют период выплат пропорционально их размеру относительно уже поступивших голосов. При наступлении времени 40 большая часть новых голосов была добавлена, что увеличило период голосования на 12 часов. Последующее меньшее количество голосов оказало меньше влияния на период голосования.
Распределение Выплат
Одна из ключевых целей системы вознаграждения Стим это производство лучших дискуссий в Интернете. Каждый год 10% рыночной капитализации Стима распределяется пользователям, которые публикую статьи, участвуют в дискуссиях и курируют статьи других. При условии капитализации Стима на уровне текущей капитализации Биткоина выплаты вознаграждения лучшим контрибьюторам составят 100 млн. рублей каждый день.
В реальности дистрибуция будет зависеть от паттернов голосования пользователей, но мы подозреваем, что большинство вознаграждений будет распределено в пользу самого популярного контента. Стим взвешивает выплаты пропорционально n2 количеству стим-мощи голосующего за пост. Другими словами, пост x получит награду пропорционально:
голоса [x]2 / сумма ( голоса [O...n]2)
Закон Зипфа одно из таких эмпирических правил, которое характеризует удивительный диапазон применений этого феномена в реальном мире достаточно хорошо. Этот закон говорит о том, что если мы упорядочим какую-нибудь коллекцию по размеру или популярности, второй элемент в этой коллекции будет приблизительно в два раза меньше от измерения первого элемента, третий элемент в коллекции будет 1/3 от измерения первого элемента и так далее. В общем случае k ранжированный элемент будет измеряться как 1/k от первого элемента.
Если мы возьмем популярность как грубое измерение ценности, в таком случае ценность каждого отдельного элемента определяется Законом Зипфа. То есть если у нас один миллион элементов, тогда топ 100 самых популярных контрибьютят треть от общей ценности, следующие 10000 элементов вторую треть, и оставшиеся 989900 оставшуюся треть. Ценность коллекции из n элементов пропорциональна log(n).
Результат такого голосования и распределения выплат это предложение больших наград за хороший контент, в то же время вознаграждая малых игроков в длинном хвосте контрибьюции.
Экономический эффект этого подобен лотереи, в которой люди переоценивают их вероятность получить голоса, таким образом делая больше работы чем ценность ожидаемого вознаграждения, тем самым максимизируя общее количество работы произведенной в сообществе. Тот факт, что каждый выигрывает "что-нибудь", играет похожую психологию, которые используют казино, чтоб удерживать людей в игре. Другими словами, меньшие вознаграждения помогают усиливать идею, что возможно зарабатывать бОльшие награды.
Вознаграждение Родительских Постов
Хорошая дискуссия требует очень активного постинга. Когда ты отвечаешь кому-нибудь он получает 50% любой выплаты, которую ты получишь в этой ветке. Это правило применяется в плоть до 6 уровней вложенности. Начало большой дискуссии хорошо вознаграждается.
Ошибка в корректности наследования постов во время дискуссии это отличный способ быть заминусованым.
Предлагаемая структура стимулов мотивирует людей контрибьютить таким образом, чтобы другие тоже вовлекались. Это поощряет людей задавать хорошие вопросы таким образом, чтобы другие люди находили ценные ответы.
Выплаты
Посты получают выплаты в следующей форме: 50% в стимбаксах и 50% в стим-мощи. Стим-мощь дает пользователю голоса и пропускную способность, в то время как стимбаксы дают пользователю моментальную выгоду в стабильной валюте. Мы уже обсудили что и стим-мощь и стимбакс спроектированы для поощрения долгосрочных инвестиций, а не краткосрочной продажи.
Консенсус Алгоритм
Консенсус Алгоритм это процесс при помощи которого сообщество приходит к всеобщему недвусмысленному согласию относительно какого-либо кусочка информации. В обществе существует много алгоритмов для достижения согласия относительно того, что кому принадлежит. Каждое правительство на Земле это примитивный консенсус алгоритм, посредством которого население соглашается подчиняться определенному набору правил, который бережно зафиксирован в конституции. Правительства устанавливают суды, судей и присяжных для интерпретации субъективных фактов и постановления финальных решений. В большинстве случаев люди подчиняются решению даже если оно было неверным.
Алгоритмы используемые в криптовалютах обеспечивают лучший способ достигнуть согласия. Криптографически подписанные доказательства поступают от индивидов и записываются в публичную книгу, которая устанавливает абсолютный глобальный реестр событий. Детерминистический компьютерный алгоритм затем может обрабатывать эту книгу для того, чтобы вычислить универсально принимаемое заключение. До тех пор пока члены сообщества соглашаются с этим алгоритмом, результат работы этого алгоритма авторитетен.
Ключевая проблема это определение какое доказательство дозволено для записи в публичную книгу. Система должна быть разработана с целью минимизации потенциального цензурирования. Цензурирование в публичных реестрах это тоже самое, что препятствование кому-либо голосовать на выборах. В обоих случаях индивиду ограничиваются права на влияние на публичный консенсус.
Консенсус в Стиме
Концептуально, алгоритм консенсуса используемый в Стиме очень похож на консенсус алгоритм адаптированный компаниями во всем мире. Люди с инвестиционным интересом в будущей ценности Стима голосуют за индивидов ответственных за включение доказательств в публичный реестр. Голоса взвешиваются пропорционально доле каждого человека в инвестиционном мешке.
В мире криптовалют публичный реестр принято называть блокчейном. Блок это группа подписанных транзакций.
В Стиме производство блоков осуществляется раундами. Каждый раунд для создания и подписания блоков с транзакциями выбирается 21 делегат. 19 из этих делегатов избираются, 1 делегат выбирается на основании вычислительного доказательства работой, а один распределяется между всеми делегатами, которые не вошли в топ 19 на основании количества их голосов. 21 активный делегат перемешиваются каждый раунд для предотвращения того, чтобы не было возможности игнорировать блоки производимые тем же самым делегатом.
Этот процесс разработан для обеспечения лучшей надежности в тот же момент гарантируя, что каждый имеет возможность участвовать в производстве блоков в не зависимости от того насколько он популярен для того, чтобы подняться в топ. Люди имеют три опции для того, чтобы обойти цензуру 19 избранными делегатами:
терпеливо ждать со всеми, кто не в топ 19
купить больше вычислительных мощностей для решения доказательства работой быстрее чем другие
купить больше стим-мощи, чтобы поднять силу голосования.
В общем, цензурирование делегатами это отличный способ потерять их работы. Поэтому маловероятно, что это будет реальной проблемой в сети Стим.
Стим способен составлять расписание по производству блоков каждые 3 секунды потому-что активные делегаты известны наперед. Делегаты синхронизируют производство блоков через протокол NTP. Вариация подобного алгоритма была использована сетью BitShares более года и доказала свою надежность.
Майнинг в Стиме
Традиционные блокчейны Proof-of-Work совмещают производство блоков с решением Proof-of-Work. Т.к. процесс решения доказательства работы занимает непрогнозируемое количество времени, результатом является непредсказуемое время производства блоков. Стим нацелен иметь целостный и надежный процесс производства блоков каждые 3 секунды с потенциально нулевой вероятностью производства форков.
Для того, чтобы достигнуть такого Стим разделяет производство блоков от решения доказательства работы. Когда майнеры решают доказательство работы для Стима, они транслируют транзакции содержащие работу. Следующий по расписанию делегат включает транзакции в блокчейн. Когда транзакций включены майнер добавляется в очередь майнеров которые включены в расписание по производству блоков. Каждый раунд один майнер выбирается из очереди и включается в активный список делегатов. Майнер получает оплату когда он производит блок в соответствии с расписанием.
Сложность доказательства работой удваивается каждый раз когда очередь майнеров вырастает на 4. Т.к. один майнер выбирается из очереди каждый раунд, а каждый раунд занимает 21*3 = 63 секунды, сложность автоматически уменьшается вдвое, если не найдено ни одного доказательства в течение 21 * 3 * 4 = 252 секунд.
Вознаграждения Майнеров Требуют Стим-мощь
После первого месяца майнеры в Стиме оплачиваются в стим-мощи. Стим-мощь ликвидируется через двух летний процесс который называется ослаблением. Это означает, что майнеры должны ожидать достаточно долго, вероятно многие месяцы, перед тем как достаточное количество наград будет ослаблено для того, чтобы можно было компенсировать затраты на электроэнергию и вычислительные ресурсы. Процесс ослабления отбивает охоту создавать майнинг пулы, т.к. операторам пулов нужно будет рассредоточить выплаты на многие года.
Оплата вознаграждений за майнинг в стим-мощи используется для того, чтоб майнеры не могли использовать сегодняшнюю цену для определения прибыльности майнинга. Мало кто согласится относительно того, какая цена в будущем будет. Это означает то, что сложность майнинга будет обеспечиваться теми, у кого самая высокая оценка будущей стоимости. У майнеров без долгосрочного интереса в платформе будет отбита охота от соревнования. В итоге это означает что событие по сбросу намайненного на рынок маловероятно, потому-что намайненые награды могут быть приобретены только долгосрочными верующими в платформу.
Алгоритм майнинга
Алгоритм майнинга используемый в Стиме требует того, чтобы у майнера был доступ к приватному ключу счета, который будет получать награды. Это требование имеет несколько важных последствий. Во-первых он поощряет оптимизацию алгоритма по верификации цифровой подписи на основании эллиптических кривых. Во-вторых он делает сложным создание майнинг пулов, потому-что оператор пула должен будет разделить награду со всеми анонимными майнерами. В-третьих он делает бессмысленным использование ботнетов, потому-что оператор ботнета должен будет распределить свой приватный ключ по всем скомпрометированным машинам.
Следующий псевдокод описывает каким образом вычисляется хеш значение доказательства работой:
Let H = Head Block ID
Let H2 = SHA256 (H+NONCE)
Let PRI = Приватный ключ производителя
Let PUB = Публичный ключ производителя
Let S = SIGN (PRI, SHA256( H ) )
Let K = RECOVER_PUBLIC_KEY ( H2, S )
Let POW = SHA256( K )
Следующая часть
Ошибка, неточность, или просто хочется сделать статью лучше? Спасибо заранее за пул риквест!
Обо мне: Дима Стародубцев или 21xhipster. Архитектурю в кибер • Фонд, управляю инвестициями в Пирог • Сатоши, исследую технологию и экономику консенсус алгоритмов. Фоловьте, че!
Спасибо, проделана отличная работа!
подниму
Возможно вы сможете более подробно ответить про расчет награды за пост. У вас написано, что награда поста рассчитывается исходя из n^2/сумму проголосовавших. Но судя по комментарию ниже, если я правильно понимаю, так рассчитывается награда поста по ранжиру относительно других постов.
А как собственно суммируются голоса пользователей, это просто сумма, или это сумма квадратов?
Каждый голос взвешивается на Ваши весты (это стим-мощь, но во внутренней единице учета). Затем вычисляется сумма квадратов всех голосов по посту. Так же происходит по каждому посту, поэтому посты борятся между собой за фиксированное количество вознаграждений.
Получается что голос кита весомей моего не прямо пропорционально его весу, а пропорционально разницы квадратов весов?
Хороший график зависимости частоты голосования и силы голоса. Сам голосовал очень много и часто, потом долго VP восстанавливалась