Pages:
Author

Topic: Асикостойкий алгоритм PoW - page 5. (Read 6250 times)

sr. member
Activity: 770
Merit: 305
Я кстати пока пост амаклина не прочитал, думал что хэш меркла это тупо хэш всех txid. А вот сейчас засомневался что-то...

Хэш меркла это действительно хэш всех txid
Но не тупо, а очень даже элегантно.
sr. member
Activity: 770
Merit: 305
http://90.188.88.19:3001/api/getblock?hash=000078813027ce8c83ac53e7d651c96a30c10737b3860f81865167fdd00e3a5d
getblock выдаёт merkleroot и список всех txid транзакций дерева меркла, т.е. блока.
Для доказательства того что я сказал - эта информация избыточная.
Зачем вам нужен список всех транзакций в блоке, если вас интересуют
только те, которые относятся к вашему кошельку? По API можно и весь
блок получить. Но на хуя козе баян?

Добавлю - дерево меркла используется не только в биткойне. Сама по себе
эта технология давно снискала почитателей. Ну, из разряда того, что программисты
должны изучать в институтах (я не изучал)
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange

http://90.188.88.19:3001/api/getblock?hash=000078813027ce8c83ac53e7d651c96a30c10737b3860f81865167fdd00e3a5d

getblock выдаёт merkleroot и список всех txid транзакций дерева меркла, т.е. блока.



Я кстати пока пост амаклина не прочитал, думал что хэш меркла это тупо хэш всех txid. А вот сейчас засомневался что-то...
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
а как решается проблема если честный генерал всего один?


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

Или вопрос был что ему делать в этом случае?  Wink Ну исходя из контекста задачи - не атаковать город (крепость)...




Ну я вот подумал, что если 100500 генералов предатели и будут действовать рэндомно, то какая разница честному генералу что делать?
legendary
Activity: 3556
Merit: 1100

http://90.188.88.19:3001/api/getblock?hash=000078813027ce8c83ac53e7d651c96a30c10737b3860f81865167fdd00e3a5d

getblock выдаёт merkleroot и список всех txid транзакций дерева меркла, т.е. блока.

sr. member
Activity: 770
Merit: 305
Еще вопрос:
Есть дерево меркла, и только одна транзакция из этого дерева. Можно ли по транзакции и дереву понять что транзакция принадлежит дереву, если другие транзакции от этого дерева нам не видны. Я предполагаю что да, поскольку electrum кошельки полагаю так и работают. Я прав?

А что вы имеете в виду под тем что у вас "есть дерево меркла"?
Что такое "есть транзакция" - это я понимаю - это такой массив байт, который человеку
не прочитать, но как правило его записывают в HEX-виде и там все понятно

А что такое дерево меркла в вашем вопросе?

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

Итак. У клиента есть транзакция или её хэш, который называется txid
У клиента есть также меркль-хэш блока.
Клиент знает что транзакция в блоке, но без доказательства этот факт ему не нужен.
Клиенту нужно доказательство. Неопровержимое.
Клиент спрашивает у сервера - "а докажи мне, что эта транзакция в этом блоке! сука, быстро!"

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

Но это долго и неэффективно. Зачем гонять мегабайт данных, если можно использовать
меркль дерево? Клиенту передается (я не знаю как точно - в json или в xml или еще каким-то
образом) достаточно короткая структура, представляющая из себя нужные уже посчитанные
узлы меркль-дерева справа и слева от заданной транзакции. Буквально несколько сотен байт, ну
может быть килобайт. И эта информация является достаточной для того чтобы клиент провел
сравнительно небольшие вычисления и имел бы доказательство.

Это также в стратум-протоколе употребляется.
full member
Activity: 411
Merit: 139
а как решается проблема если честный генерал всего один?


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

Или вопрос был что ему делать в этом случае?  Wink Ну исходя из контекста задачи - не атаковать город (крепость)...


kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
а как решается проблема если честный генерал всего один?
full member
Activity: 411
Merit: 139
Раз мы пошли на умные темы говорить, то спрошу, знаете ли вы такие два факта:
1. Использование криптографии позволяет решить проблему византийских генералов в общем случае даже если честный генерал всего один.
2. Консенсус в децентрализованной сети достижим только если сеть синхронная.
До этого момента не знал. К чему всё это?
Верны они или нет это уже другой вопрос.

Как понять к чему это? Просто чтобы люди знали. Вы написали про частный случай с биткоином, я написал про общий случай...



Мат. часть (гуглится): Распределенные алгоритмы - Tel_Distributed_Algorithms.pdf
https://bitcointalksearch.org/topic/m.31615090

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


legendary
Activity: 3556
Merit: 1100
Раз мы пошли на умные темы говорить, то спрошу, знаете ли вы такие два факта:
1. Использование криптографии позволяет решить проблему византийских генералов в общем случае даже если честный генерал всего один.
2. Консенсус в децентрализованной сети достижим только если сеть синхронная.
До этого момента не знал. К чему всё это?
Верны они или нет это уже другой вопрос.


Мат. часть (гуглится): Распределенные алгоритмы - Tel_Distributed_Algorithms.pdf
https://bitcointalksearch.org/topic/m.31615090
full member
Activity: 411
Merit: 139
member
Activity: 60
Merit: 10
sr. member
Activity: 770
Merit: 305
Quote
Но разве с таким же успехом, нельзя утверждать что в существующей биткоин-сети консенсус идет по бороде, потому что другие пиры могут вообще от другого дяди получить решенный им блок и признать ту ветку истинной. В результате победит та ветка которая длиннее, за счет того, что в нее будут вложены наибольшие вычислительные мощности, это ведь тоже элемент консенсуса.
Этот элемент консенсуса призван разрешать противоречия.
Ну да, так и есть. Поэтому сервисы и клиенты ждут 3-6 подтверждений чтобы ненароком
не оказаться в другой ветке.

Quote
Но если я им послал железобетонное доказательство содержащее две запачканных транзакции
И сколько времени вы будете отправлять на каждого вашего пира пачканные транзакции?
Год? Два? Десять? Вы же не знаете - знает ли ваш сосед что транзакции запачканы.
Где хранить будете их?
Самое плохое - это то что вы не имеете гарантий, что ваша нода придерживается
правил консенсуса - что если вам никто запачканную пару не прислал? Вы не сможете понять что не так
у соседей.

Quote
Еще вопрос, а с какой скоростью информация в сети с 10 000 нод заполняет все пространство сети,
Вы опять за свое?
Нет пространства сети. Есть компьютеры на которых работает программа, которая скачивает
цепочку блоков у соседей. То что еще пересылаются транзакции пока не включенные в блок -
это побочная функция, про которую пока можно умолчать. У блоков есть таймстамп, который
пусть не атомарно совпадающий с моментом нахождения хэша, но отличающийся на небольшое время.

То есть нода может пребывать только в двух состояниях "синхронизируется" и "синхронизировано".
Её не волнует - что там творится на всех остальных компьютерах сети. Может уже ядерным
взрывом всё уничтожено. Ноду это не беспокоит. Она пробудет 2 часа (кажется) в состоянии
"синхронизировано" после чего слабо забеспокоится: "шота блоков давно не было?"

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

Quote
и какое максимальное число подключенных пиров у каждой ноды.
Определяется только возможностями операционной системы. По дефолту - 8 исходящих
(или всех? не помню) соединений, но это волюнтаристски выбранная цифра.

Quote
И зависит ли оно от давности ее подключения к сети?
Ну сеть биткойна все-таки "дышет" - кто-то уходит, кто-то приходит.
Тем более, что клиенты обладают некоторым "искусственным интелектом" - то есть
запоминают и передают друг другу список нод, а потом при старте коннектятся
по определенным правилам - то есть важен и пинг до пира, и чтобы пиры не были
скучкованы в одном месте.

Но в целом, вопросы эти не относятся к консенсусу - каждый дрочит как он хочет
member
Activity: 60
Merit: 10
Но не факт, что они что-то сделают аналогичное, ведь набор данных у них
может быть другой и решение они могут принять другое. Консенсус идет по пизде.
Прошу прощения за мою непросвещенность.
Постараюсь не оперировать больше понятием сеть как субъект (хочет, отвергает, делает).

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

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

Еще вопрос, а с какой скоростью информация в сети с 10 000 нод заполняет все пространство сети, и какое максимальное число подключенных пиров у каждой ноды. И зависит ли оно от давности ее подключения к сети?

sr. member
Activity: 770
Merit: 305
И если в сети появятся хотя бы два блока с разными транзакциями но с одинаковой солью, все блоки раунда с этой солью признаются недействительными, а информация об этих аннигилирующих орфанах транслируется в сеть для очистки сети от них.

Бля, пиздец.
Я начинаю звереть, когда читаю "если в сети появляются"
Поймите же вы наконец - программа работает на вашем компьютере и обрабатывает данные
пришедшие по сети. Никакой "в сети появляются" она не знает. Если ей прислали что-то
конфликтующее - программа может что-то сделать у себя на винчестере и об этом сообщить
своим пирам. Но не факт, что они что-то сделают аналогичное, ведь набор данных у них
может быть другой и решение они могут принять другое. Консенсус идет по пизде.
sr. member
Activity: 770
Merit: 305
Алистер Маклин писатель и умер в 1987 году.
Вы назвали свой ник его именем, и это Ваша личная гипотеза.

Мало ли в Бразилии Донов Педро? (с) х/ф "Здравствуйте, я ваша тётя!"
(между прочим, в английской транскрипции он Alistair MacLean, а я Alister Maclin -
всем понятно, что это разные люди)
member
Activity: 60
Merit: 10
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange

Ниже это меньше? Ну, имея 1200 блоков в цепочке А я игнорирую блок 1051 в цепочке Б
Блоки скачиваются и проверяются только последовательно.


У вас 1200 блоков и вы игнорируете блок 1051. Но по сети гуляют блоки двух блокчейнов и эти пакеты вы видите. В какой-то момент вы видите блок 1201 и теперь должны проверить всю цепочку этого блока до номера 1200 - 100. Если все в порядке и хэш блока 1100 содержит в себе хэш сохраненного у вас блока 1099 - вы эту цепочку принимаете. Если нет, продолжаете ждать блок в своей цепочке...

Ну да, можете никогда не дождаться, но тогда выход такой: зайти на форум разработчика и спросить - какого фига мой клиент не синхронизируется )
sr. member
Activity: 770
Merit: 305

Кстати, я не смогу определить момент когда ваша цепочка Б обгонит цепочку А, потому что я игнорирую
её блоки от 1051 до 1100 и никогда не узнаю, что она растет.

вы игнорите блоки которые на 101 ниже вашего. Блоки которые выше - вы должны принимать даже если они в орфане.

Ниже это меньше? Ну, имея 1200 блоков в цепочке А я игнорирую блок 1051 в цепочке Б
Блоки скачиваются и проверяются только последовательно.
Чтобы сравнить сложность форков - мне надо скачать и проверить их оба, ничего не пропуская
и ничего не игнорируя. Куда тут вставлять чекпойнты, кто этим занимается и прочее - это как-то
было забыто.

Короче. Формулирую Великую Гипотезу Алистера Маклина
(доказательства у меня нет, так что это гипотеза, а не теорема)

Объяснений терминам я тоже давать не стану, надеюсь они более-менее понятны.
Итак:

Не существует алгоритма, позволяющего создать анти-пул криптовалюту. При любом
алгоритме и наличии третьей доверенной стороны (админ пула) майнинг в пуле будет
всегда более (или хотя бы не менее) выгоден для участников, чем соло-майнинг.


Хотите - опровергайте.
Pages:
Jump to: