заметил странный глюк с кошелем 4.4.6 - изредка перестает принимать новые блоки от сети, пишет синхронизация, осталось 3 блока, 9 активных соединений с сетью, но так и висит и не синхронизируется, пока не перезапустишь. соответственно и pos не майнит, так же?
такая же хрень после гибернации и выхода win7 x32
В таких случаях клиент обычно таки синхронизируется с сетью после того, как сеть найдет еще один блок. Это наблюдается, если соединений не очень много... К примеру, в тестнете это фактически норма. Посмотрим, что можно сделать с выходом из гибернации.
Кстати, некоторые тестовые сборки имели визуально похожую проблему, причина которой была совсем другой и была устранена. Если используется тестовая сборка, следует попробовать обновиться.
Суть подобной атаки в том, что можно стейкхолдеру или пулу отправить одну транзакцию, а продавцу другую. В итоге продавец засчитает одну транзакцию, а майнеры подтвердят другую. Предотвратить подобное можно, если дать возможность продавцу убедиться в том, что эту транзакцию получили майнеры, а не только он. Добиться этого можно посредством генерации параллельной цепочки proof-of-stake блоков с пониженной сложностью, которые и будут этими-самыми proof-of-existence. Они докажут продавцу, что сгенерировавшие их майнеры видели ту же транзакцию, что и он. И он сможет выбрать для себя, верить ли конкретному майнеру о том что транзакция включана в его шаблон, или нет. Но вопроса о том, видел ли он эту транзакцию вообще, уже не будет стоять.
Ну то есть, как я понял, появляется дублирующая цепочка быстрых (до 30 сек) блоков, которая по сути бесплатна. Таким образом можно полностью избавиться от понятия "орфан" в этой цепочке. Орфан он или не орфан - один фиг с него нет профита. Я правильно понял?
Вопрос еще и в другом: Сколько майнеров должны участвовать в создании такого блока, чтобы его можно было считать надежным? Явно одного майнера маловато будет, правильно? А ведь с точки зрения кошелька все PoS-майнеры равнозначны. Что солирующие, что в пуле. Нет никакого доказательства, что это именно пул блок запечатал. Вполне мог и один человек. То есть, вообще-то еще требуется подтверждение от нескольких "узлов" сети. Если народ майнит в нескольких пулах - то от нескольких пулов. Правильно?
Все майнеры уже в этом участвуют. Ведь для создания этих блоков можно использовать некоторую долю хэшей, которая не подошла к текущей сложности, но подошла бы к требованиям более низкой. Самая простая аналогия - майнинг шар в пуле. Далеко не каждая шара соответствует сложности сети, однако сама по себе отправка шар доказывает наличие у пользователя определенных мощностей.
Вся разница между текущим вариантом и вариантом с proof-of-existence в том, что некоторая часть неподходящих к требованиям текущей сложности хэшей может принести пользу - сообщить другим нодам сети, что майнер имеет определенный набор транзакций в своем пуле, к примеру. Или какое-то другое сообщение в стиле "мой хозяин сейчас почесал левое ухо", и можно будет с достоверностью говорить, что это сообщение отправил именно этот клиент.
я что то не понимаю, как доказательство того что какие то майнеры получили транзакцию сможет защитить сеть от ее отмены по классической схеме 'атаки двойной траты при наличии значительных мощностей', понятно что в данном случае помимо PoW мощностей понятно потребуются и средства для PoS.
Никак не поможет, не в том его предназначение. Дело в том, что для двойной траты неподтвержденной транзакции атакующему вообще не нужны ни мощности, ни стейк. Ему достаточно послать две транзакции, хорошо подобрав для них точки входа в сеть, и это все что от него требуется. Если же позволить stake майнерам генерировать временную цепочку с пониженной сложностью, то наблюдающий со стороны сможет увидеть, что они в эту цепочку блоков положили. А так как невозможно положить в блоки что-то, не получив его, можно будет сделать вывод, что транзакция действительно до этого майнера дошла. Остается вопрос, включит ли конкретный майнер интересующую продавца транзакцию в реальный блок в случае его нахождения, но это уже вопрос доверия к майнеру, а не к покупателю. Именно в этом смысл - доверие/недоверие к покупателю заменяется доверием/недоверием к майнеру.
Как выглядит процесс майнинга для транзакций старше 90 суток?
Вес перестает расти по достижении данного возраста, в остальном попытки генерации идут как обычно.
как именно происходит перебор транзакций для склейки?
Значение kernel hash вычисляется с использованием нулевого входа coinstake транзакции. Остальные входы не играют роли в этом плане.
Перебираются ли все варианты (факториал от количества задействованных входов)?
Нет, не перебираются. Дополнительные входы подклеиваются лишь в случае, когда удачный нулевой инпут с удовлетворяющим сложность хэшем уже найден. Подклеиваются инпуты, не смогшие найти блок в течение отрезка времени, в пределах которого их вес растет. Эта операция нужна для того, чтобы доступный майнеру пул инпутов постепенно обновлялся. Назначение её примерно эквивалентно обновлению extra nonce в proof-of-work майнинге.
Очень заинтересовало сообщение о возможной реализации Zerocoin в novacoin. @Balthasar, нет ли у вас в планах реализовать этот функционал быстрее или паралельно с ребятами собственно разработавшим эту технологию?
Тестовая версия существует и пробовалась в testnet, но пугает размер proof-of-knowledge, составляющий около 35 килобайт. В настоящий момент думаем, как его уменьшить, в том числе рассматриваются возможности использования gzip-компрессии для таких подписей.
Я верно понимаю, что в этой технологии будет использоваться принцип совершения математических операций (в данном случае сравнение) над зашифрованными данными без их расшифровки?
Нет, все открыто и ничего шифрованного в блокчейн не добавляется, да и добавление шифрованных данных противоречило бы идеологии... В блокчейне не должно быть ничего закрытого или зашифрованного.
Весь смысл в том, что пользователь может сгенерировать длинное секретное число, обладающее определенными свойствами, и использовать в качестве назначения транзакции результат применения к нему односторонней функции. Эта функция позволит сохранить и опубликовать некоторые свойства числа, сохранив при этом само число в тайне. Затем, в случае необходимости, пользователь сможет раскрыть свой секрет и получить обратно монеты, которые до этого отправил на результат применения односторонней функции к числу. При этом извне нельзя провести параллели между отправкой монет на значение функции и получением монет при публикации ранее секретного числа, потому что для стороннего наблюдателя между этими двумя операциями нет никакой связи. Все, что может проверить наблюдатель - это то, что свойства данного секретного числа действительно использовались ранее при создании выхода
какой-то из не потраченных ZeroCoin транзакций. Нельзя установить какой именно, поэтому на транзакции налагаются серьезные ограничения. К примеру, сумма используемых для них монет всегда одинакова, и жестко зафиксирована в требованиях протокола.