Author

Topic: NovaCoin (scrypt PoW + PoS hybrid) - page 303. (Read 600912 times)

legendary
Activity: 3108
Merit: 1359
March 24, 2013, 11:38:19 AM
* время - подделывается (на коротком промежутке времени, на время атаки, можно делать что угодно в пределах этого промежутка)
Нет "короткого" промежутка. Для stake могут использоваться только монеты с возрастом не менее 30 дней, а значит обработанные раньше чем ~ 4320 блоков назад. Чтобы подделать время в начале такой цепочке, нужно порядочно попотеть (даже если забыть о пересчетах nStakeModifier). Разумный выход - использовать для атаки "честный" стейк, но в любом случае в силу вступает принцип экономической целесообразности.

базовых адресов с монетами в качестве базовых для PoS? заранее нагенерим 1кк адресов и постепенно раскидаем на них монеты, и во время перебора просто перебираем эти адреса (но я так понимаю там есть что перебирать и так, те же транзакции)
Есть элемент экономической выгоды от подобной атаки. Если у человека есть достаточное количество монет ("раскидаем на них монеты"), то ему не нужно всем этим заниматься. Он может просто генерировать цепочку в оффлайне и опубликовать когда будет нужно. Но результат будет очевиден - сильный удар по стоимости его собственных активов в этих монетах. С асиками в биткоине, кстати, та же история.

Кстати, не забываем главную деталь, которую многие почему-то забывают. Ни в биткоине, ни в его клонах, ни в PPC/NVC сама по себе длина цепочки не имеет никакого значения.

  • В Bitcoin и других PoW-системах приоритетной является цепочка с наибольшей кумулятивной сложностью (bnChainWork), которая вычисляется сложением nBits всех входящих в цепочку блоков.
  • В PPC/NVC определяющую роль играет bnChainTrust, вычисляемый исходя из объема прошедших через генерационные транзакции монет.

Аналогично тому, как если бы в PoW системе неудачу потерпел атакующий, сгенерировавший более длинную цепочку на меньшей сложности, в PoS системе проиграет атакующий, сгенерировавший более длинную цепочку, задействовав при этом меньший объем монет. При выборе между цепочками выиграет та, в которой больше денег.
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 11:01:32 AM
Дефляционная.
1% монет минимум. в год выбывает из обращения
( утрата кошельков , переводы в "молоко")
 эти потери ведь ваш алгоритм не компенсирует ?

Да и стабильная масса денег не достаточна
нужен ее плавный рост( о чем я писал уже выше)

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

Или вы считаете по Кейнсу ?
5% новых денежных единиц создается посредством PoS генерации + есть еще PoW генерация. Вопрос лишь в том, каковы будут объемы сделок в системе и сколько в итоге монет будет уничтожаться комиссией.

Я не одобряю Кейнсианство, но оно все же заслуживает изучения. Хотя бы потому что неоконсерватизм - гораздо большее зло.
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 10:51:04 AM
Так как появление новых PoS блоков у атакующего не ограничена
Ограничена, это является одним из основных базисов модели безопасности. Атакующий в сети на базе протокола PoS v0.3 не может генерировать блоки быстрее, чем остальная сеть с оставшимися держателями монет в то же время. Точнее может, но только при условии если у него больше монет. В сети на базе PoS v0.2 мог, но позволявшая это ошибка исправлена.
Я все равно не понимаю, чем именно ограничена скорость генерации PoS блоков!?

* время - подделывается (на коротком промежутке времени, на время атаки, можно делать что угодно в пределах этого промежутка)
* хеш перебирается под нужную сложность (не сложнее типичного PoW), базовых адресов с монетами в качестве базовых для PoS? заранее нагенерим 1кк адресов и постепенно раскидаем на них монеты, и во время перебора просто перебираем эти адреса (но я так понимаю там есть что перебирать и так, те же транзакции)
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 10:45:40 AM
Так как появление новых PoS блоков у атакующего не ограничена
Ограничена, это является одним из основных базисов модели безопасности. Атакующий в сети на базе протокола PoS v0.3 не может генерировать блоки быстрее, чем остальная сеть с оставшимися держателями монет в то же время. Точнее может, но только при условии если у него больше монет. В сети на базе PoS v0.2 мог, но позволявшая это ошибка исправлена. Возможно, конечно, что найдутся новые недочеты... Ну что же, будем искать, находить и исправлять если найдем.  Smiley
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 10:26:16 AM
Почитайте топик про stake generation tournament. Все не так просто, как кажется, и не настолько прямолинейно.  Wink Кстати, возраст монет ограничен сверху, он обрезается на границе 90 дней при подсчете веса.

NVC же будучи дефляционной
Да не дефляционная она настолько жестко. Smiley Тут нет строго запрограммированной дефляции, равно как и инфляции. Объем монет зависит от ситуации на рынке.
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 10:16:44 AM
Это может показаться забавным, но для генерации proofhash используются:

1) Таймстамп блока, содержащего точку входа
2) Номер транзакции - точки входа в содержащем ее блоке
3) Таймстамп транзакции - точки входа
4) Таймстамп coinstake-транзакции

Хэш от (модификатор + эти значения) сравнивается с таргетом, вычисляемым исходя из веса использованных точек входа, и если он меньше, то PoS сгенерирован. Зависимость от таймстампов является причиной того, что в PPC/NVC политика таймстампов сильно ужесточена в сравнении с BTC и его клонами. К примеру, у транзакций в PPC/NVC тоже есть таймстампы, и они не могут находиться в будущем относительно времени генерации соответствующего блока. У coinbase/coinstake они еще и сильно далеко в прошлом не могут находиться.  Roll Eyes
Ага, это уже проходили, все что привязывается ко времени, атакуется количеством узлов с ложной информацией, хотя все равно клиент атакуемого сервиса просто не примет блоки со данными о времени отличающиеся от его собственного. Да это и не важно.

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

В случае с PoS скорость появления блоков ограничена только количеством монет (даже хуже - весом, произведением объема на возраст). Таймстамп ничего не решает!

На время генерации цепочки блоков, атакующий может не помещать в нее никакие транзакции, кроме своих, за исключением последнего, решающего, в который закидываются все транзакции, которые настоящая сеть набрала за это время (минус отменяемая транзакция, естественно). Так как появление новых PoS блоков у атакующего не ограничена (в отличии от настоящей, которая ограничена скоростью, я так понимаю просто проверяется количество блоков за интервал, и не принимаются новые блоки, если с ними это количество выйдет за определенные пределы)?
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 09:42:04 AM
Существование PoS без PoW невозможно?
Возможно. Можно запустить сеть на одном только PoS, сделав достаточный объем премайна и раздав его. Но она будет более централизованной, так что вариант с децентрализованной начальной эмиссией через PoW более демократичен.

Что же подбирается в той формуле при вычислении PoS?
Это может показаться забавным, но для генерации proofhash используются:

1) Таймстамп блока, содержащего точку входа
2) Номер транзакции - точки входа в содержащем ее блоке
3) Таймстамп транзакции - точки входа
4) Таймстамп coinstake-транзакции

Хэш от (модификатор + эти значения) сравнивается с таргетом, вычисляемым исходя из веса использованных точек входа, и если он меньше, то PoS сгенерирован. Зависимость от таймстампов является причиной того, что в PPC/NVC политика таймстампов сильно ужесточена в сравнении с BTC и его клонами. К примеру, у транзакций в PPC/NVC тоже есть таймстампы, и они не могут находиться в будущем относительно времени генерации соответствующего блока. У coinbase/coinstake они еще и сильно далеко в прошлом не могут находиться.  Roll Eyes

NVC унаследовал дефляционную модель Bitcoin, количество эмиссии ограничено.
Модель эмиссии в NVC совсем другая. Тут нет заранее предопределенных "уполовиниваемся раз в столько-то блоков".
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 09:15:25 AM
nStakeModifier не имеет смысла перебирать, этот модификатор пересчитывается всей сетью раз в 6 часов, при этом PoW блоки тоже участвуют в расчете его значения.
Существование PoS без PoW невозможно?

Что же подбирается в той формуле при вычислении PoS?
В данном случае мы имеем близкий по эффективности к "чистому" PoS компромисс, для PoS блоков делается проверка по такому условию:

Quote
hash(nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime) < bnTarget * nCoinDayWeight
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 09:13:20 AM
Ага, сейчас, я так понимаю, каждый раз генерируется новый адрес для PoS?
На данный момент монеты отправляются на тот же адрес, с которого пришли. Но это изменится в будущем, когда клиенты начнут подключать дополнительные входы в coinstake-транзакции по мере роста PoS-сложности.

при необходимости, код перебора nStakeModifier разработывается с использованием GPU
nStakeModifier не имеет смысла перебирать, этот модификатор пересчитывается всей сетью раз в 6 часов, при этом PoW блоки тоже участвуют в расчете его значения. Аналогично тому, как в биткоине пересчитывается сложность, с той разницей, что следующее его значение очень трудно предсказуемо.

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

Вообще, на эту тему есть целевой топик:

https://bitcointalksearch.org/topic/ppcoin-stake-generation-tournament-152809

Можно попробовать поднять отдельный тестнет с премайном в нулевом блоке и выключенным PoW (т.е. сетку с голым PoS), и провести несколько экспериментов. Подготовка к подобному эксперименту там обсуждается.
sr. member
Activity: 462
Merit: 250
Clown prophet
March 24, 2013, 09:04:55 AM
Мои размышления. Поправьте, если не прав.

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

Но у NVC есть еще один дефляционный дополнительный стероид - PoS. Ну это как в МММ. Вы обязуетесь не снимать деньги такое то время и вам за это будет профит. В виде PoS блоков.

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

Грубо говоря, "Ponzi-шность" Bitcoin возведена здесь в квадрат.

Это так?
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 08:45:26 AM
раз NVC таки не платежная монета, а инвестиционная
Ну почему же... Текущее положение дел не означает, что так будет всегда. Мы работаем в этом направлении. Smiley

Также было бы здорово понять от чего
 все-таки зависит общий равновесный объем
 денежный массы в обращении,
А в этом вся соль. Данная монета является справедливой интерпретацией капитализма, освобожденной от влияния центробанков и прочих "управлятелей". Это капитализм в самом чистом из возможных виде, а в капитализме не существует серебряной пули. Wink Если эмиссию можно спрогнозировать, исходя из закона Мура и текущего объема доступных для интеграции в систему мощностей, то предсказать темпы работы шреддера является более сложной задачей, но ее решение возможно. Потому что они косвенно зависят от спроса на деньги.
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 08:42:22 AM
Эм, получается блок PoS будет собран тем клиентом, кто успел предложить монеты с наибольшим 'весом' (пропорционально: объем * время неиспользования).

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

В свете вышеизложенного предлагаю следующую схему проведения double spent атаки:
1. подготавливается сеть клиентов (или специальная модификация клиента), с размазанными географически точками выхода в интернет
2. при необходимости, код перебора nStakeModifier разработывается с использованием GPU (особенно если количество точек формирования PoS блоков понадобится очень большим)
это повышает скорость/шансы формирвания и рассылки PoS блоков

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

4. модифицируется алгоритм выбора монет для формирования PoS блоков, монеты придерживаются на кошельке с целью накопить вес и возможностью управляемого использования, так же монеты равномерно размазываются адресам (чем равномернее монеты будут размазаны по адресам, тем больше нод могут одновременно пытаться сформировать PoS)

5. в специально подобранный момент (когда количество монет выйдет из заморозки и/или наберет необходимый вес по сравнению с глубиной предполагаемой ямы, так же можно подгадать поблочный выход монет из заморозки) производится целевая трата монет на атакуемом сервисе и запускается последовательное формирование цепочки PoS блоков (в которой формируется повторная транзакция тех же монет но уже на свой адрес или на иной сервис), без ее публикации
6. если цепочка необходимой длины собрана - она публикуется и отменяет целевую трату.

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

Оценка средств, необходимых для проведения атаки равна:
p.s. упростим вычисления, будем считать что возраст монет минимальный, иначе нужно сравнивать не монеты а их вес
* n - количество узлов для формирования PoS сравнимо с количеством подтверждений, используемых атакуемым сервисом (длина цепочки)
* M - количество монет, которые должны быть свободны к моменту формирования цепочки
* H - максимальное количество монет, которое может быть использовано при формировании PoS блоков сетью на момент атаки (статистику можно собрать из blockchain)

Подбираем такой M < H, тогда n*M - необходимые суммы для проведения атаки

Нет смысла на разных нодах в сети использовать разные монеты, а количество нод (выходов в интернет) в сети должно быть сравнимо с количеством всех клиентов (чем больше тем выше шансы что они успеют сообщить о своих PoS блоках легальным клиентам).
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 08:10:14 AM
Эм, получается блок PoS будет собран тем клиентом, кто успел предложить монеты с наибольшим 'весом' (пропорционально: объем * время неиспользования).

Тогда следующее утверждение, где то в теме было, - после формирования блока PoS, монеты, которые использовались в нем дробятся пополам. Я так понимаю на адреса, которые пожелает выбрать клиент, собравший блок, или дробить необязательно?
Дробить обязательно, у coinstake-транзакции должно быть как минимум два выхода. Адреса большого значения не имеют, единственное требование - у создающего блок должен быть приватный ключ для адреса в vout[1].

Для PoW блоков есть аналогичное условие, адрес в выходной точке coinbase-транзакции обязательно должен принадлежать автору блока, в PPC это обязательно адрес в vout[0]. В NVC это условие выглядит по-другому - адрес по крайней мере одной произвольной выходной точки vout[n] в coinbase-транзакции должен принадлежать автору блока, остальные адреса могут быть любыми.
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 08:02:57 AM
А зачем и на какую функцию менять предполагаете ?
Пока менять не планируется, но если возникнет такая необходимость, проблемы с этим не возникнет.
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 08:00:02 AM
Эм, получается блок PoS будет собран тем клиентом, кто успел предложить монеты с наибольшим 'весом' (пропорционально: объем * время неиспользования).

Тогда следующее утверждение, где то в теме было, - после формирования блока PoS, монеты, которые использовались в нем дробятся пополам. Я так понимаю на адреса, которые пожелает выбрать клиент, собравший блок, или дробить необязательно?
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 07:39:29 AM
Возможно, я мог ввести в заблуждение предыдущим постом. Имелось в виду, что процессорное время при генерации PoS блока расходуется, но не оно является главным определяющим скорость генерации фактором. Определяющая роль в скорости генерации остается за "весом" использованных для генерации блока монет, а зависимость от сложности линейна как и в случае PoW.

Наиболее простая интерпретация по Sunny King'у:

proof-of-work difficulty 1 represents 4 billion (2**32) hashes.
proof-of-stake difficulty 1 represents 4 billion (2**32) coin-day-second

P.S. Поговорю с Sunny King на тему асимптотического анализа.
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 06:29:50 AM
Еще раз задам вопрос, даже не обязательно отвечать на него с точными формулами и кодом:

Трудоемкость поиска и сборка текущих PoS блоков зависит от их сложности? Линейная ли зависимость? Можно ли считать это операцию O(1)? особенно если сравнивать с PoW, где эта линейно напрямую зависит от сложности.
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 06:16:20 AM
Опа, я похоже совсем не понимаю что такое PoS. Ведь его основная плюшка - независимость от требования электроэнергии.

Какой алгоритм используется, какие вычисления проводятся? Значит ли это что ожидается отдельный PoS-майнер? или 5% 'годовых' слишком мелкая сумма чтобы заморачиваться?
У "чистого" PoS да, но реализация "чистого" PoS пока считается невозможной из-за уязвимости к DoS атакам у такой системы. В данном случае мы имеем близкий по эффективности к "чистому" PoS компромисс, для PoS блоков делается проверка по такому условию:

Quote
hash(nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime) < bnTarget * nCoinDayWeight

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

Реализация отдельного майнера не имеет большого смысла из-за технической сложности, такой майнер должен иметь полный доступ ко всем транзакциям юзера и его приватным ключам, чтобы подбирать соответствующий условию кернел.
legendary
Activity: 1120
Merit: 1069
March 24, 2013, 05:42:36 AM
На генерацию PoS блоков требуется время, и с ростом PoS-мощности оно будет расти. У PoS блоков тоже есть сложность и проверка по ней, сложность вычисляется независимо от PoW сложности, но по тем же правилам, что и PoW.
Опа, я похоже совсем не понимаю что такое PoS. Ведь его основная плюшка - независимость от требования электроэнергии.

Какой алгоритм используется, какие вычисления проводятся? Значит ли это что ожидается отдельный PoS-майнер? или 5% 'годовых' слишком мелкая сумма чтобы заморачиваться?
legendary
Activity: 3108
Merit: 1359
March 24, 2013, 05:16:29 AM
Если я все верно понял, PoS блоки генерируются только когда запущен клиент, и достаются тому, кто первый собрал блок (на это не требуется времени, по сравнению с PoW естественно). Значит ли это, что вероятность успешного создания pos блока напрямую зависит от качества связи клиента с другими нодами? А ведь это значит, что можно запустить огромное количество клиентов (или специальную модификацию имеющегося) по которым будут размазаны адреса с монетами и которые будут конкурировать со всей сетью за создание блоков, т.е. задавят массой.
На генерацию PoS блоков требуется время, и с ростом PoS-мощности оно будет расти. У PoS блоков тоже есть сложность и проверка по ней, сложность вычисляется независимо от PoW сложности, но по тем же правилам, что и PoW.

Quote
$ /opt/novacoin/novacoind getblockbynumber 12311
{
    "hash" : "bac2460a1ee9c4a89d2b92b72e85b71d024225bd7ab89db445d9c7de9da47cf7",
    "size" : 490,
    "height" : 12311,
    "version" : 2,
    "merkleroot" : "c8ea9af98a3254743a86402622b1e8690190d505f4dc204714497034bcff1ed1",
    "time" : "2013-03-23 23:27:08 UTC",
    "nonce" : 0,
    "bits" : "1e0fe020",
    "difficulty" : 0.00024605,
    "mint" : 0.00000000,
    "previousblockhash" : "fb45747a4f943f1ada66aa173893e2b4ab1a2ddab1f2560e821c461d8077790d",
    "nextblockhash" : "3d3850bb055af6787b087a2317e5ab7b47a5c5fcc7a8e98758fa7fdd09bfef80",
    "flags" : "proof-of-stake",
    "proofhash" : "000018b6afe1c4fd1e44792667df13cd7894ed81d1dab3d0d0b3df34f2d090f3",
    "entropybit" : 1,
    "modifier" : "412c0556bc186676",
    "modifierchecksum" : "fb9225f5",
    "tx" : [
        "3363655aa1f03627d8e26604ce925aceccd4b1952cbd6d98f72bcbcab6779884",
        "dcadfc11aa49879509d36673343f3747e232b3bc8a9aa9ea526129f30fbba4f5"
    ]
}
Jump to: