|
24 июня 2011, 4:20:16 PM | # 1 |
Сообщения: 2366
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome" Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e подробнее... Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru Как я понимаю, в облегченном режиме вы можете подтвердить, что сделка находится в определенном блоке, но вы не можете утверждать, что он не был погашен последующим блоком. Это имеет пару нетривиальных последствий. Например, облегченный клиент режим не может сказать, если сделка ее было сказано о том, даже _possibly_ действительным или если она полностью jibberish пока кто-то рудниках. Это также означает, что вы не можете сделать нулевой режим доверия облегченный namecoin распознаватель, потому что единственный способ быть уверенным, что впоследствии сделка не передать право собственности на имя кому-то еще, чтобы рассмотрели весь blockchain и сделал свой собственный резюме открытых сделок. Вы не можете попросить партнёру сделать это для вас, если вы не доверяете им, чтобы не лгать. Я думаю, что это не просто вопрос namecoin, я думаю, что это также влияет на различные распределенные предложения по контрактам, которые требуют, чтобы вы могли видеть, что сделка добывается, но еще не погашена. Что делать, если coinbase TXN включал Merkle корень для дерева по всем открытым сделкам, и это требует сети, чтобы быть точным, если она предусмотрена. Затем, если вы хотите, чтобы подтвердить, что сделка была действительно открыта, вы получили бы заголовки блоков, а затем получить N последних блоки, то спросите ненадежный пэр для обрезанных открытых транзакций Merkle дерев, ведущих к этой сделке в вопросе. Теперь вы достаточно уверены в том, что открытая транзакция все еще открыта, как на высоте blockchain у вас есть доступ. Поскольку полные узлы должны уже следить за все открытые транзакции для проверки, поддержание такого дерева будет относительно дешево (log2 (п) для отдельных обновлений, меньше на обновление, если более одного изменения TXN в то время). За namecoin / фанки распределяются договора случае / это также позволило бы полу-облегченным клиентам, которые отслеживают только заголовки и открытые операции и позволили забыть об очень старых открытых транзакциях, потому что они могут напоминать о них ненадежные сверстниках, но все еще может сделать полным Проверка. Это может быть полезно для здоровья сети в будущем (например, следить только недавно, вероятно, будут быстро избавили сделки, и дать им экспедиторской приоритет. Если вы не можете подтвердить TXN дать ему низкий приоритет, если его дети появляются снова и держать вас беспокоит, то попросите полный пэр, чтобы доказать вам, что они являются действительными, а затем добавить их в кэш) Так, может кто-то пожалуйста исправить мое понимание системы, если я ошибаюсь? |
24 июня 2011, 4:31:13 PM | # 2 |
Сообщения: 1526
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Получил 1806 Биткоинов
Реальная история. Пулы памяти каждого узла не синхронизированы, так что вы не можете требовать coinbase включать доказательство сдерживания.
Если вы не можете доверять удаленные узлы на всех, и вы должны знать состояние каждой сделки, у вас нет выбора, кроме как выполнить полный узел и сделать бухгалтерию самостоятельно. Для Namecoin это, вероятно, не является большой проблемой. Вы можете просто скачать подписанные снимки базы данных с тем же места вы загрузили программное обеспечение. |
24 июня 2011, 4:42:23 PM | # 3 |
Сообщения: 112
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Пулы памяти каждого узла не синхронизированы, так что вы не можете требовать coinbase включать доказательство сдерживания. Если вы не можете доверять удаленные узлы на всех, и вы должны знать состояние каждой сделки, у вас нет выбора, кроме как выполнить полный узел и сделать бухгалтерию самостоятельно. Для Namecoin это, вероятно, не является большой проблемой. Вы можете просто скачать подписанные снимки базы данных с тем же места вы загрузили программное обеспечение. Я не совсем понимаю, в чем проблема. Если вы не доверяете пэром, чтобы доставить точные данные, просто убедитесь, что вы просите много коллег, и что вы исключить выбросы. Это уже правда, что клиент должен доверять, что он получит полную, точную и последнюю дату полного блока цепочки от своих сверстников. Если это получение предварительно обрежут блоки из некоторых другого узла, то он также не должен полагаться только на один пэр для этой информации, но получить его от многих. И если один из этих коллег сообщает, зная о блочной цепи на определенной высоте, но не дает правильный ответ, учитывая, что высота, то равноправный может перестать доверять ему и просто бросить его связь, опираясь на коллег, что делает доверие. Или, может быть, я misundertanding проблемы? Я 100% полагают, что в конечном итоге конечные пользователи не будут загружать весь блок цепи, как они это делают сейчас, и будет использовать поставщиков услуг, которые могут ответить на вопросы о блочной цепи (сами держать весь блок цепи); Я уже написал предложение об этом на этом форуме. Я даже работая на собственном Bitcoin клиента, который будет иметь поддержку для этого. И я считаю, что единственный способ для того, чтобы работать для протокола, чтобы быть «открытым», так что любой желающий может осуществить это, потому что по причинам, что ОП привозит и что я указываю в этом ответе, равноправное просто не может доверять один другой равный для предоставления точной информации и должен иметь возможность открыть для себя и поговорить со многими коллегами по обеспечению безопасности и безопасности резервирования. |
24 июня 2011, 5:16:39 PM | # 4 |
Сообщения: 2366
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Пулы памяти каждого узла не синхронизированы, так что вы не можете требовать coinbase включать доказательство сдерживания. Если вы не можете доверять удаленные узлы на всех, и вы должны знать состояние каждой сделки, у вас нет выбора, кроме как выполнить полный узел и сделать бухгалтерию самостоятельно. Для Namecoin это, вероятно, не является большой проблемой. Вы можете просто скачать подписанные снимки базы данных с тем же места вы загрузили программное обеспечение. Хм? Я не прошу доказательства, связанные с неподтвержденными сделками, я прошу доказательство, связанное с ранее добытыми сделками с выходами, которые не были погашены по состоянию на завершение конкретного блока. Это должно быть детерминированным продукт блок-цепи и одинаково доступны для каждого полного узла. Я думаю, что ваше решение для namecoin не является решением, так как он делает это не распределенная система. Вы должны верить, что данные не манипулировали в некоторых невозможно проверить путь. Также практически верно программное обеспечения как целые, но только потому, что все на самом деле не собираются пересматривать все это, не потому, что они не могли рассмотреть его. С решением дерева я описал вы могли случайно выборочную проверку таких сводок автоматически, что делает их гораздо менее рискованным. Для namecoin, это также не является решением проблемы, так как зная полное состояние системы будет слишком много работы для большинства пользователей namecoin и это также бессмысленно. Я хочу, чтобы знать наверняка, что foo.bit решает. У меня нет полной истории (потому что не нужно и не могу позволить себе огромное необходимому для хранения), поэтому я не могу сказать по себе. Я прошу моих коллег о foo.bit. Они говорят мне, что foo.bit является 1.2.3.4, и что последнее обновление для него добывали в блоке 100000. Мы в настоящее время в блоке 120000 (или так сказать, мои сверстники). С текущим подрезают материал дерева я могу точно сказать, что он действительно был добыт в блоке 100000, но я скажу, если отнести ни был обновлен после того, так как мои сверстники могли бы тривиальным СИВИЛЛА нападающих. (Если они лгали о высоте цепи и просто утверждал, что мы были на 100000 я знаю, потому что я бы заметить, если мои часы были шесть месяцев в выключенном состоянии) Если есть приверженность открытых сделок я могу попросить одного пэра для Merkle фрагментов дерева из блока 120000-199994 для соответствующей открытой сделки (надеюсь, большинство из дерева будет одинаковым в этих блоках, уменьшая отправляемые данные), а затем убедитесь, что либо я получил правильный результат, что я получил немного несвежий результат (например, он был обновлен в любом количестве лжи о высоте я бы не обнаружить), или, что мой взломщик имеет серьезное количество вычислительной мощности, используется, чтобы дать мне несвежий результат о имени. Я не совсем понимаю, в чем проблема. Если вы не доверяете пэром, чтобы доставить точные данные, просто убедитесь, что вы просите много коллег, и что вы исключить выбросы. Это уже правда, что клиент должен доверять, что он получит полную, точную и последнюю дату полного блока цепочки от своих сверстников. Если у вас есть блок заголовки (которые достаточно малы), то ваше доверие ограничивается тем, что ваши коллеги не лгут вам о высоте блока и не говорит только о какой-то вилке. Но вы можете верить, что такая вилка не будет очень долго из-за чрезвычайной вычислительной стоимости, и высота блока не может быть слишком вопиюще неправильно, потому что вы знаете, текущее время. Тот факт, что сверстники могут DOS атаки вам отказывая вам информацию нельзя избежать, но это также обнаруживается и после обнаружения, вы можете попробовать искать больше коллег или, по крайней мере, отказываются делать что-нибудь глупое. котировка Я 100% полагают, что в конечном итоге конечные пользователи не будут загружать весь блок цепи, как они это делают сейчас, и будет использовать поставщиков услуг, которые могут ответить на вопросы о блочной цепи (сами держать весь блок цепи); Я уже написал предложение об этом на этом форуме. Я даже работая на собственном Bitcoin клиента, который будет иметь поддержку для этого. И я считаю, что единственный способ для того, чтобы работать для протокола, чтобы быть «открытым», так что любой желающий может осуществить это, потому что по причинам, что ОП привозит и что я указываю в этом ответе, равноправное просто не может доверять один другой равный для предоставления точной информации и должен иметь возможность открыть для себя и поговорить со многими коллегами по обеспечению безопасности и безопасности резервирования. Задавать несколько коллег хорошая и хорошая вещь, но она имеет _serious_ ограничения. Злоумышленники часто могут контролировать подключение к сети и, таким образом, они могут просто сделать себя все ваши сверстники у вас нет никакой возможности обнаружить это. Даже без сетевого управления Сивиллы атака может быть весьма эффективным: запустив тысячи фальшивых коллег на несколько сотен сетей (например, только при наличии простых прокси на этих сетях) вы очень вероятно, в конечном итоге, как и все пэров уже несколько узлов. Запрос многие также приводит к увеличению N-кратное увеличение в сетевой нагрузке. Если клиент может использовать blockchain доказательства работы, чтобы доказать большинство своих необходимых данных, то необходимо только проконсультироваться несколько коллег, чтобы получить уверенность в истинной идентичности самого высокого блока, а также атаки, выполняемые против этого клиента ограничиваются нападения о содержание самых последних блоков. |
24 июня 2011, 6:02:27 PM | # 5 |
Сообщения: 1302
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Я не совсем понимаю, в чем проблема. Если вы не доверяете пэром, чтобы доставить точные данные, просто убедитесь, что вы просите много коллег, и что вы исключить выбросы. Это уже правда, что клиент должен доверять, что он получит полную, точную и последнюю дату полного блока цепочки от своих сверстников. Если это получение предварительно обрежут блоки из некоторых другого узла, то он также не должен полагаться только на один пэр для этой информации, но получить его от многих. И если один из этих коллег сообщает, зная о блочной цепи на определенной высоте, но не дает правильный ответ, учитывая, что высота, то равноправный может перестать доверять ему и просто бросить его связь, опираясь на коллег, что делает доверие. Там будет также коммерческие услуги в будущем, чтобы предоставить достоверную информацию. Я мог бы даже сделать это сам, если это когда-либо цепляется. |
24 июня 2011, 7:51:54 PM | # 6 |
Сообщения: 112
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Я не совсем понимаю, в чем проблема. Если вы не доверяете пэром, чтобы доставить точные данные, просто убедитесь, что вы просите много коллег, и что вы исключить выбросы. Это уже правда, что клиент должен доверять, что он получит полную, точную и последнюю дату полного блока цепочки от своих сверстников. Если это получение предварительно обрежут блоки из некоторых другого узла, то он также не должен полагаться только на один пэр для этой информации, но получить его от многих. И если один из этих коллег сообщает, зная о блочной цепи на определенной высоте, но не дает правильный ответ, учитывая, что высота, то равноправный может перестать доверять ему и просто бросить его связь, опираясь на коллег, что делает доверие. Там будет также коммерческие услуги в будущем, чтобы предоставить достоверную информацию. Я мог бы даже сделать это сам, если это когда-либо цепляется. Да, я тоже; которая является одной из причин того, что я пытаюсь написать клиент, который может сделать это. Но моя точка зрения в том, что любой конечный пользователь должен по-прежнему полагаться на несколько таких поставщиков услуг, а не только один; потому что это было бы глупо доверять только один поставщик услуг, когда вы можете увеличить вашу уверенность в результатах консультируясь несколько. |
24 июня 2011, 8:37:51 PM | # 7 |
Сообщения: 2366
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Да, я тоже; которая является одной из причин того, что я пытаюсь написать клиент, который может сделать это. Но моя точка зрения в том, что любой конечный пользователь должен по-прежнему полагаться на несколько таких поставщиков услуг, а не только один; потому что это было бы глупо доверять только один поставщик услуг, когда вы можете увеличить вашу уверенность в результатах консультируясь несколько. Абсолютно, но это не умаляет значение в получении поддержки системы высшего доверия отсутствующими доверенных лиц. Они по-прежнему будут там бизнеса в системе, где клиенты могут дешево сделать больше проверки в одиночку, но это будет просто бизнес для значения вы можете предложить сверх полностью распределенную систему (быстрее, невосприимчивых к некоторым атакам, ИЕ и т.д.) , Предположение, что я делаю по-прежнему уязвимы для DOS атаки, и кормление (мягко) устаревшие данные, и требуется больше данных (фрагмента дерева). Например. система, в которой вы просите доверенные лицо для подписанного заявления о сделке, а затем после получения его случайно также запросить для дерева _prove_ его с достаточной степенью уверенности, а затем автоматически объявить громко к сети, когда вы обнаруживаете лежа, наряду с криптографическим доказательством неточное response- является гораздо более надежной и безопасной системой, чем "вручную добавить кучу доверенных лиц; найти только некоторые из них были скомпрометированы и завинчивания вас недель спустя"... а также более дорогостоящим, так как там не будет дешевой альтернативой для доверенных услуг (только запустить свой собственный полный узел). |
26 июня 2011, 1:20:06 AM | # 8 |
Сообщения: 1148
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Хм? Я не прошу доказательства, связанные с неподтвержденными сделками, я прошу доказательство, связанное с ранее добытыми сделками с выходами, которые не были погашены по состоянию на завершение конкретного блока. Это должно быть детерминированным продукт блок-цепи и одинаково доступны для каждого полного узла. Это означало бы, что шахтеры придется отказаться продлить действующий основной цепи. Ofc, если вы получаете >50% шахтеров согласны, остальные шахтеры должны переключиться, чтобы действительно получить признание их блоков. Предполагая, что детерминированный алгоритм для добавления транзакций к дереву Merkle, будет компромисс между сохранением его сбалансированным и необходимости повторно делать какие-либо хеши. Самое простое правило было бы просто удалить все транзакции ввода в текущем блоке, а затем добавить все выходы в текущем блоке (в указанном порядке) к узлу, который находится ближе к корню, а затем обновить неработающие хэш. Я думаю, что это будет N * журнала (п). N = число изменений п = общее количество сделок Доказывая, что конкретная сделка была все еще активна для блока будет требовать, чтобы вам показать лог (п) хэши, а затем его можно сравнить с хэш верхнего уровня. |
26 июня 2011, 12:37:28 PM | # 9 |
Сообщения: 1526
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
А жаль, я понял ваше предложение и мои очки не применяются. Давайте стандартизировать на слово "неизрасходованные" а не открытым, так как кодовая использует открытые означать что-то другое: отложенную транзакцию, которая еще не была завершена (см SignatureHash). Вот что меня смутило.
Это, вероятно, имеет смысл для NameCoin, где правила могут быть легко изменены. Реализация этого в Bitcoin будет довольно трудно сейчас (возможно, но большая боль, чтобы сделать принудительную глобальные обновления). Меркле деревья не должны быть двоичным, хотя они часто. Было бы интересно исследовать различные параметры дерева, чтобы увидеть, что является наиболее эффективным. Примерно в конце мая было зарегистрировано около 150 000 операций с расходуемого выходами. Давайте предположим, что каждая сделка имеет, в среднем, один неизрасходованный выход. Таким образом, для бинарного дерева Merkle вам нужно log2 (150000) = 17,19 или 17 уровней. Идеальное бинарное дерево с 17 уровней будет иметь 2 ^ (17 + 1) - 1 = 262,143 узлов и каждый узел представляет собой хеш 256 бит или 32 байта, таким образом, это потребует (262143 * 32) / 1024/1024 = 7,99 мегабайт данных, которые должны быть живыми в памяти (все промежуточные уровни должны быть сохранены, так что может быть обновлено). Не плохо. Это с помощью наивного / очевидный подход. Существует более эффективная реализация описана Szydlo здесь: http://www.szydlo.com/szydlo-loglog.pdf Конечно, нужно представление, которое может поддерживать несколько неизрасходованных выходы находящихся в дереве, так что истинный размер будет больше. |
26 июня 2011, 1:32:13 PM | # 10 |
Сообщения: 1148
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Примерно в конце мая было зарегистрировано около 150 000 операций с расходуемого выходами. Давайте предположим, что каждая сделка имеет, в среднем, один неизрасходованный выход. Таким образом, для бинарного дерева Merkle вам нужно log2 (150000) = 17,19 или 17 уровней. Идеальное бинарное дерево с 17 уровней будет иметь 2 ^ (17 + 1) - 1 = 262,143 узлов и каждый узел представляет собой хеш 256 бит или 32 байта, таким образом, это потребует (262143 * 32) / 1024/1024 = 7,99 мегабайт данных, которые должны быть живыми в памяти (все промежуточные уровни должны быть сохранены, так что может быть обновлено). Не плохо. Сетевой узел уже должен содержать все неизрасходованные транзакции в памяти в любом случае. В противном случае, он не сможет выполнить проверку, чтобы увидеть, если блок является действительным. В идеале, они должны быть добавлены дополнительные поля в блоке представление, чтобы сказать, какой блок всех входы транзакций пришли. Это позволит сетевым узлам иметь кэш и быстро искать с диска для редких операций. Сделка не должна быть добавлена к цепи, если все ее входы не существует где-то одна цепь, так что это не создает каких-либо неопределенностей. Что произойдет, если вы пришлете неизвестные сообщения клиента по умолчанию? Поскольку стандартный заголовок имеет поле длины полезной нагрузки, должна быть возможность пропускать неизвестные сообщения. Код: Дополнительный заголовок сообщения: F9 BE B4 D9 - Основные сетевые магические байты 65 78 74 65 73 69 6e 6f 6e 00 00 00 - "расширение" команда 55 00 00 00 - длина Payload 01 23 34 56 - Контрольная сумма Сообщение: <дополнительные поля> Вы можете использовать префикс сообщения с информацией расширения. Стандартный клиент будет пропускать префикс и обрабатывать главное сообщение, используя стандартные правила. Это может быть использовано для информирования других клиентов, где входные данные сделок сохраненных для любых операций, посланных. |
26 июня 2011, 2:31:19 PM | # 11 |
Сообщения: 1148
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Я имел взгляд на клиенте по умолчанию, и это, кажется, работает следующим образом
Код: Начало: Сканирование для значения магического (0xD9B4BEF9) Заголовок сканирования, Гото начать ошибки если размер > максимально допустимый, Гото Пуск если размер > буфер считывания, перемотка назад, чтобы начать магии значения и Гото Start если версия > 209, читать и затем проверить контрольную сумму, если он не Гото Start копию полезной нагрузки в буфер сообщений Процесс сообщения () обновить последний живой для этого узла Функция обработки сообщений не делает ничего для неизвестных сообщений. |
26 июня 2011, 9:12:39 PM | # 12 |
Сообщения: 1526
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Сетевой узел уже должен содержать все неизрасходованные транзакции в памяти в любом случае. В противном случае, он не сможет выполнить проверку, чтобы увидеть, если блок является действительным. Нет, операции и их состояние загружаются с диска. Bitcoin не ведет операции в памяти, если они не находятся на рассмотрении. Он сохраняет заголовки блоков в оперативной памяти, но остальное все на диск. котировка В идеале, они должны быть добавлены дополнительные поля в блоке представление, чтобы сказать, какой блок всех входы транзакций пришли. Они все должны быть пересчитаны после повторного орга. |
26 июня 2011, 9:51:09 PM | # 13 |
Сообщения: 1148
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
Нет, операции и их состояние загружаются с диска. Bitcoin не ведет операции в памяти, если они не находятся на рассмотрении. Он сохраняет заголовки блоков в оперативной памяти, но остальное все на диск. От "Все транзакции", Я имел в виду хэш для каждой из операций и было бы хэш-таблицу, которая отображает хэш транзакций блок-идентификатор. Теперь, когда я думаю об этом, вы можете просто поместить транзакцию в файл и имя файла будет определяться хэш. Мое мышление было то, что сделки, которые были включены в цепи будут сохранены с соответствующими блоками. Это делает кэширование больше трудностей, так как 2 операции, которые находятся рядом друг с другом не связаны друг с другом. котировка В идеале, они должны быть добавлены дополнительные поля в блоке представление, чтобы сказать, какой блок всех входы транзакций пришли. Они все должны быть пересчитаны после повторного орга. [/ Цитата] Это не нужно в любом случае. Извини за это . При проверке блока, клиент будет иметь все операции, связанные загружены для этого блока. Путь от корня к операции могут быть сохранены в одном файле (или в файл с тем же именем в другом каталоге). Это указывает на хэш для другой хэш пары. Для того, чтобы заменить сделку с другой может быть вычислена из только этих данных. Удаление также легко, если заполнители хэши разрешены. Для удаления транзакции просто заменить хэш с 0 и пересчитывать. Расположение заполнителя могут быть добавлены в стек. Это может быть эффективно хранить в памяти с кэшем на диск, если требуется. Добавление сделки потребует выскакивает место из стека. Если стек пуст, то новая транзакция будет помещена в следующем свободном слоте. Это потребует еще одну операцию, чтобы его информация обновляется. Я думаю, что держит все полностью местные. |
7 мая 2012, 3:30:22 AM | # 14 |
Сообщения: 853
цитировать ответ |
Re: Merkle дерево открытых транзакций для режима облегченного?
наблюдение
|