Доказательство деятельности Предложение
Я хотел бы, чтобы потушить альтернативное доказательство Выносить предложения, что я звоню Доказательство активности или РоА для краткости. Проблема с несколькими предложений PoS плавающими там прямо сейчас, что есть много дополнительных сетевой трафик и блок цепи наворотов распространять и хранить все эти подписи. С РоОй, нет необходимости для заинтересованных сторон, чтобы подписать все подписи блоков. Вместо этого, одна заинтересованных сторон случайным образом выбираются (и равномерно распределены по монетам, проведенных), чтобы быть счастливым представителем этого блока. И только он получает шанс "знак" блок. Если он подписывает блок, он получит награду за него. И в случае "51%" атака, вилка, которая имеет более агрегированные сложность и подписи блоков выигрывает. Это общая идея. Я объясню подробности ниже.
Случайные Равномерно Распределенные заинтересованные стороны
Причина, почему использование случайных равномерно распределенных заинтересованных сторон работает потому, что если злоумышленник не имеет огромный пакет, скорее всего, он не будет выбран в блоках он генерирует. Таким образом, его блоки будут подписаны. Было бы трудно для него, чтобы провести атаку против реальной сети с подписанными блоками. Так для того, чтобы атака на успех, злоумышленник должен иметь огромную скорость хеширования и огромный пакет.
Хэш предыдущего блока является достаточно случайным значением, что каждый узел знает, и может быть использован для выбора "везучий" заинтересованные стороны для следующего блока. Но для того, чтобы сделать эту работу, мы должны быть в состоянии выбрать случайные заинтересованные стороны с равномерным распределением, и каждый узел должен быть в состоянии проверить, что является правильным для заинтересованных сторон следующего блока. Если человек А имеет 200 монет распространяется в несколько адресов и человек B имеет 100 монет разбросаны в нескольких адрес, лицо А должно быть ровно в два раза, вероятно, будет выбран в качестве лица B, чтобы быть заинтересованными сторонами для следующего блока. Один из способов сделать это, чтобы выяснить все неизрасходованные выходы и случайным образом выбрать один с равномерным распределением. Вы можете модник предыдущего блока хэша общего satoshis когда-либо созданный до этого момента, и иметь остаточную стоимость детерминировано определить адрес из упорядоченного списка всех неизрасходованных выходов.
Другой способ (не уверен, что легче труднее вычислить), чтобы иметь моды предыдущего блока хэша детерминировано определить один Satoshi из coinbase сделки. Затем следует, что Satoshi, как он проходит от сделки сделки, пока она не достигнет неизрасходованного выхода. Тогда этот выходной адрес будет выбран в качестве следующих заинтересованных сторон. Вы можете сделать это детерминировано. Так как начальный Satoshi выбрал из coinbase выхода равномерно распределяются, в конечном итоге выбор будет равномерно распределен также. Я могу объяснить больше, если люди заинтересованы в том, как это будет работать.
Обратите внимание, что когда узлы получить новый блок, они могут начать расчет следующих заинтересованных сторон сразу. А когда следующий блок объявило, что они просто должны проверить, чтобы убедиться, что блок содержит правильные заинтересованные стороны. Таким образом, даже если вычисление следующих заинтересованного лица может быть интенсивным вычисление центрального процессора, это не повлияет на производительность узла много, потому что это может быть сделано в асинхронном режиме. И это не новый вектор для атаки DoS. Хотя первоначальный блок загрузки будет медленнее, когда он проверяет каждое заинтересованное лицо блока.
Награждение Доказательство деятельности
Самый простой способ вознаградить Poa заинтересованных сторон, чтобы отправить им монету в coinbase. Заинтересованные стороны и шахтеры будут разделены на 50 монет, сгенерированные в сделке coinbase. Я думаю, что дает заинтересованным сторонам 10% (5 монет) достаточно хорошая сумма, чтобы побудить заинтересованные стороны подписать блок еще не отнимать слишком много от шахтеров. Это число для обсуждения.
Мы можем динамически увеличивать / уменьшать этот коэффициент в зависимости от количества заинтересованных сторон подписали предыдущие блоки. Например, мы можем сделать это в течение дифф нацелить и попытаться достичь целевых 50% подписанных блоков. При наличии менее 50% подписали блоки в предыдущих 2016 блоков, а затем заплатить заинтересованные больше в следующих 2016 блоков. И наоборот.
Блок Подписание
Блок подписи достигается за счет расходования выход РоА coinbase. Если выбранные заинтересованные стороны проводят этот coinbase вывода, что он эффективно "подписание" этот блок. Он говорит, что сеть он соглашается, что эта цепь истинная цепь.
Для того, чтобы это работало, заинтересованные стороны должны подписать блок в определенном окне. Поскольку подписание блока от месяца назад действительно не делает ничего, чтобы защитить сеть. Поэтому мы хотим, чтобы эти coinbase операции истекает после определенного периода времени. Скажем, 120 блоков на данный момент, но это регулируется. Таким образом, если заинтересованное лицо вещает сделку провести coinbase вывода после того, как 120 блоков прошло, эта сделка будет считаться недействительной и будет отвергнута другими узлами.
Невостребованные РоА coinbase выходы могут быть возвращены или просто оставить как есть и рассматривается как часть естественного разрушения монет, что происходит. Обратите внимание, что из-за разрушения монеты, будут блоки, которые unsignable. Это происходит, когда мы случайно выбрать адрес заинтересованных сторон, которая теряется.
Лучший Цепная
Подписанные блоки должны иметь взвешенное значение, которое больше, чем неподписанные блоки при попытке выяснить лучшую цепь. В настоящее время мы делаем сумму (дифф) и цепь с большей суммой (дифф) выигрывает. С РоОй, подписанными блоки будут учитываться в Й раз нормального значения дифф. Если мы выбираем X = 2, то подписал блоки будут стоить в два раза больше, чем неподписанные блоки относительно вычисления наилучшей цепи. Таким образом, цепь с 6 подписанных блоков "дольше" чем цепи с 11 беззнаковыми блоками тех же сложности.
Я предлагаю мы используем X = 5. Причина, почему я выбрал 5, потому что, если мы предположим, что на реальной сети мы половина блоков подписали, то злоумышленник, без доли будет не менее 75% от общей скорости сети хэш, чтобы выполнить "51%" атака. Способ вычислить это, если сеть hashrate хешей 10 блоков и половина из этих блоков будут подписаны, то сила цепи 5 (без знака) + 5 * 5 (подпись) = 30 эффективных блоков. Злоумышленник должен соответствовать этому hashrate с беззнаковыми блоками, так что он нуждается в hashrate, который может производить 30 блоков в то же самое время, когда основная сеть производит 10 блоков. 30 / (30 + 10) = 75%.
Там есть вектор атаки, где счастливчики заинтересованных стороны могли бы удержать свои подписи для того, чтобы их, чтобы попытаться выполнить двойные расходы. Они могли бы хэширования в тайне и найти блок с их подписью. Когда они делают, они посылают сделку в реальной сети, что они планируют удвоить расходы, а затем отпустить их вилкой, которая будет "дольше" из-за их подписанный блок. Решением этой проблемы является возможность подписи (можно найти только в одной вилке) также будет использоваться для входа в блоке подписи на другой вилке, если это применимо. Например, если оба вилок имеют один и тот же блок подписи (т.е. вилка произошла после него) и подписи можно найти только на одной вилке, а затем и вилка становится 5xdiff для этой подписи блока.
Другой вектор атаки злоумышленник может добывать блоки, пока они не найдут блок, который хэш то, что будет выбирать себе в качестве следующих заинтересованных сторон. Когда они находят, что блок, они держат это в секрете, а затем начать строить свою вилку на верхней части этого блока и включают в себя транзакцию подписи. Таким образом, они могут начать двойные израсходуют с большой долей и только ~ 15% от скорости сети хэша. Решение этой проблемы заключается в увеличении веса подписанного блока, основанный на том, как глубоко сделка подписи в блоке цепи. Таким образом, злоумышленник вынужден строить больше блоков на вершине и должен опережать блоки основной сети, которая, вероятно, имеет больше подписей.
Вывод
Доказательство активности обеспечивает преимущества Доказательства кола без добавления сетевого трафика и блокировать цепи заворота. Это делает его более трудным для атакующего выполнить "51%" атака. Для того, чтобы выполнить успешную атаку, ему потребуется огромный hashrate и огромный пакет.
Хорошая вещь об этом предложении является то, что вам нужно будет изменить только 5 вещей:
- Узлам нужно рассчитать и проверить следующие заинтересованные стороны
- Новый coinbase выход для РоА
- РоА coinbase проводит ознаменует блоки, подписанные
- Invalidate сделок, которые пытаются провести просроченный PoA coinbase
- Новый расчет лучшей цепи
Было бы, конечно, цепь разветвления изменения, которое должно быть запланировано на некоторое время в будущем.
Мысли?
EDIT: Спасибо большого Идо за помощь мне конкретизации этого предложения.