Pages:
Author

Topic: Cпocoбы oтceчeния cтapыx блoкoв в блoкчeйнe - page 2. (Read 571 times)

sr. member
Activity: 770
Merit: 305
Причем тут отрезанная сложность. Важна сложность в оставшейся цепочке.
Это сразу же мина замедленного действия - награда за блок уменьшается, хэшрейт
уменьшается, сложность падает. В какой-то момент затраты на создание альтернативной
цепочки из 10к блоков (с учетом того, что их можно начинать майнить загодя) становятся
допустимыми для атаки. Или вы думаете что при неизменной цене биткойна и халвингах
хэшрейт будет продолжать расти как на дрожжах?

Будем играть в Сатанинскую бутылку?
Впрочем, мы в нее и так играем, просто изменение правил консенсуса сделает финал более очевидным.

p/s/ Чтобы намайнить 10000 блоков с нынешней сложностью, примерный порядок цифр:
 12,5btc*10000*5000$ = 625млн$
С большей сложностью, соответственно, еще больше.
Вот ни грамма не смущает. Хотите знать что я сделаю? Это будет веселуха.

Я распространю информацию, что начал создавать цепочку блоков заданной сложности
начиная от 01.01.2024 (ну то есть взял себе 5 лет люфта). Блоки будут создаваться с
разницей в таймстампах 1 секунда друг от друга. Фактически, это означает, что если
моя информация правда - то с ненулевой вероятностью биткойну 01.01.2024 придет пиздец -
весь баланс блокчейна будет у меня. Правда это или нет - вы сегодня не знаете, единственным
разумным поведением для вас - будет слить свои биткойны до 01.01.2024 чтобы не рисковать.
И если так поступят все (или многие), то затея удалась!
legendary
Activity: 1468
Merit: 1102
Думаю, что алгоритм можно найти.  Можно оставить старый. Брать ту цепочку, у которой
сложность выше, и количество блоков не меньше заданного N.  Как альтернатива, можно
смотреть на средний размер сложности блока в цепочке.
Вы подсоединились к двум нодам.
Одна из них говорит: у меня в цепочке 100 блоков, а все что раньше - отрезано, но сложность
там охулиард. Вторая говорит: у меня в цепочке 150 блоков, а все что раньше - отрезано,
но кумулятивная сложность того что отрезали - два охулиарда.

Кому из этих нод верить и какой блокчейн вы скачаете?

Quote
Какая там была вероятность создания альтернативной цепочки из 6 блоков, если майнеров меньше 50%?
Если у меня есть возможность создать свой utxo set - я запишу его в контрольный блок,
после чего начну всеми своими тремя асиками майнить от этого блока.
И у "основной" сети биткойна будет отрезанная сложность - миллиард, а у моей - два
миллиарда. А проверить вы не сможете - она же отрезана!

Причем тут отрезанная сложность. Важна сложность в оставшейся цепочке.
И сколько блоков ты намайнишь 3-мя асиками?

Из двух цепочек берем ту, в которой средняя сложность блока выше. Количество блоков достаточно большое, например, 10000. И последние блоки в цепочке должны соответствовать текущему времени.
Какова вероятность намайнить такую цепочку?

Алгоритм для трех асиков:
Сделать начальный блок с далекой будущей датой.
Записать туда большую сложность, надеясь, что когда мы доживем до этой будущей даты, сложность в  основной будет меньше.
Намайнить 10000 блоков.
Когда подойдет время, попробовать подсунуть эту цепочку кому-то.
Чтобы надуть кого-то, нужно еще найти несколько блоков с такой же скоростью, что и основная цепочка.

p/s/ Чтобы намайнить 10000 блоков с нынешней сложностью, примерный порядок цифр:
 12,5btc*10000*5000$ = 625млн$
С большей сложностью, соответственно, еще больше.
sr. member
Activity: 770
Merit: 305
Думаю, что алгоритм можно найти.  Можно оставить старый. Брать ту цепочку, у которой
сложность выше, и количество блоков не меньше заданного N.  Как альтернатива, можно
смотреть на средний размер сложности блока в цепочке.
Вы подсоединились к двум нодам.
Одна из них говорит: у меня в цепочке 100 блоков, а все что раньше - отрезано, но сложность
там охулиард. Вторая говорит: у меня в цепочке 150 блоков, а все что раньше - отрезано,
но кумулятивная сложность того что отрезали - два охулиарда.

Кому из этих нод верить и какой блокчейн вы скачаете?

Quote
Какая там была вероятность создания альтернативной цепочки из 6 блоков, если майнеров меньше 50%?
Если у меня есть возможность создать свой utxo set - я запишу его в контрольный блок,
после чего начну всеми своими тремя асиками майнить от этого блока.
И у "основной" сети биткойна будет отрезанная сложность - миллиард, а у моей - два
миллиарда. А проверить вы не сможете - она же отрезана!
legendary
Activity: 1468
Merit: 1102
Почему нереализуем?  Стандартный механимзм.
Для начала предложить на голосование майнерам.
-- Как остановить поезд?
-- Поезд, стой, ать-два!

Отсечь начало блокчейна - не проблема. Проблема будет, когда я с нуля захочу
скачать, а мне разные ноды будут предлагать свой собственный "начальный блок
с записанным в него UTXO set" и цепочкой блоков построенной от этого блока.

Думаю, что алгоритм можно найти.  Можно оставить старый. Брать ту цепочку, у которой сложность выше, и количество блоков не меньше заданного N.  Как альтернатива, можно смотреть на средний размер сложности блока в цепочке.

Какая там была вероятность создания альтернативной цепочки из 6 блоков, если майнеров меньше 50%?
legendary
Activity: 2618
Merit: 2304
Прям так и хочется написать на такой штучке - micro SD 512Gb нечто подобное: проблемы централизованных блокчейнов меня не волнуют.

Да, несомненно, это централизованное решение.



например, каждый месяц определённый доверенный человек, уважаемый в криптовалютном
сообществе, создаёт вышеописанный список непотраченных выходов UTXO транзакций Bitcoin и вычисляет
хеш SHA256D этого дампа.
Для кого-то он уважаемый, а для кого-то другого неуважаемый.
Как будем человека определять, если москвичи считают уважаемым Васю Пупкина,
а питерцы - Веронику Зюкину? Будем выборы в оффлайне устраивать с кабинками
для голосования? Поздравляю, вы переизобрели существующую централизованную систему.

Примерная стандартизированная строка для подписывания в качестве "BITCOIN MESSAGE":

Quote
Та же самая схема, но отличие заключается в том, что майнеры Bitcoin через каждые, например,
4320 блоков (то есть примерно раз в месяц) добавляют в скрипт входа COINBASE-транзакции
стандартизированный комментарий,
Админить этот сайт будет Вася Пупкин или Вероника Зюкина? Вы представляете, какие
возможности открываются админу подобного сайта?

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

Поскольку структура дампа заранее известна и все таблицы сортируются по одинаковым алгоритмам, то списки непотраченных выходов UTXO транзакций Bitcoin, вычисленные от одного и того же блока, будут абсолютно идентичны до байта. Такой дамп сможет создать любая полная нода самостоятельно.

Как вариант, в специальной версии Bitcoin Core может быть предусмотрена команда на запрос последнего созданного дампа из сети полных нод.
sr. member
Activity: 770
Merit: 305
Почему нереализуем?  Стандартный механимзм.
Для начала предложить на голосование майнерам.
-- Как остановить поезд?
-- Поезд, стой, ать-два!

Отсечь начало блокчейна - не проблема. Проблема будет, когда я с нуля захочу
скачать, а мне разные ноды будут предлагать свой собственный "начальный блок
с записанным в него UTXO set" и цепочкой блоков построенной от этого блока.
legendary
Activity: 1468
Merit: 1102
На самом деле, хотя второй способ выглядит убедительнее, он практически нереализуем, поскольку здесь требуется консенсус между майнерами Bitcoin, а в текущей ситуации майнерам всё равно, что написано во входе COINBASE-транзакции, и они будут майнить любую валидную ветку, не проверяя корректность опубликованного файла, содержащего список непотраченных выходов UTXO. Поэтому, на мой взгляд, для Bitcoin первый способ предпочтительнее.
Почему нереализуем?  Стандартный механимзм.
Для начала предложить на голосование майнерам. Если 80-90% будут за, реализовать и запустить. Как только 90% майнеров одобряют,  будет новый консенсус. Блок без отсутствия этой информации будет невалидным. При 90% риск появления другой ветки минимален. Тем более, что предыдущий консенсус практически остается в силе.

Я что-то не припомню, чтобы майнеры зарубили на корню какую-то хорошую идею.
Тут гораздо важнее, чтобы было желание это сделать. С чем, я думаю, и будет основная загвоздка.
full member
Activity: 644
Merit: 135
Что-то сильно многа букв у вас, боюсь не осилю Wink    А потому в двух строчках перечислю все известные способы организации проверки(контроля ден. массы - кстати она бывает нужна не всегда...):

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

2.  Хранение среза состояния счетов на какой-то момент времени - и проверка транз только до(точнее от Wink ) него.  -- в риппле че-то подобное


PS  оптимален думаю гибрид - где-то посредине из этих методов.   Все остальные - от лукавого Wink и сводяться к этим 2м базовым.

PPS  не уверен что их только 2, кто еще найдет? Wink

PPPs  у вас ошибка с самого начала - легкой ноде вообще не надо ничего хранить, она все равно ничего проверить не сможет - там просто другая модель будет, легкая нода по-просту должна пользоваться услугами других, точнее услугами сети, а не лепить то что там пытался отсеч Сатоши в биткойне...
legendary
Activity: 3556
Merit: 1100
Прям так и хочется написать на такой штучке - micro SD 512Gb нечто подобное: проблемы централизованных блокчейнов меня не волнуют.


https://ss-iqr.blogspot.com/2018/12/tdc-blockchain.html
sr. member
Activity: 770
Merit: 305
например, каждый месяц определённый доверенный человек, уважаемый в криптовалютном
сообществе, создаёт вышеописанный список непотраченных выходов UTXO транзакций Bitcoin и вычисляет
хеш SHA256D этого дампа.
Для кого-то он уважаемый, а для кого-то другого неуважаемый.
Как будем человека определять, если москвичи считают уважаемым Васю Пупкина,
а питерцы - Веронику Зюкину? Будем выборы в оффлайне устраивать с кабинками
для голосования? Поздравляю, вы переизобрели существующую централизованную систему.

Quote
Та же самая схема, но отличие заключается в том, что майнеры Bitcoin через каждые, например,
4320 блоков (то есть примерно раз в месяц) добавляют в скрипт входа COINBASE-транзакции
стандартизированный комментарий,
Админить этот сайт будет Вася Пупкин или Вероника Зюкина? Вы представляете, какие
возможности открываются админу подобного сайта?
legendary
Activity: 2618
Merit: 2304
Зарезервировано.
legendary
Activity: 2618
Merit: 2304
На мой взгляд, актуальным вопросом для Bitcoin и других криптовалют является постоянное увеличение размера блокчейна и, как следствие, необходимость хранить большие массивы данных на клиентских машинах. Многие пользователи не желают скачивать весь многогигабайтный блокчейн, накопившийся за годы существования криптовалюты, только лишь для того, чтобы надёжно отправить несколько транзакций. Поэтому предлагаю публиковать в этой теме различные способы отсечения старых блоков в блокчейне.

Разумеется, весь блокчейн в любом случае необходим для полной верификации и валидации всех транзакций, совершённых начиная с первого GENESIS-блока, а также для анализа передачи монет с адреса на адрес. Как вариант, вместо скачивания блокчейна можно использовать режим PRUNE или онлайн-обозреватели блокчейна, но в этом случае добавляются уязвимости, основанные на доступности сайтов, фишинге и взломе DNS-серверов. Речь идёт об альтернативных способах хранения текущих состояний адресов пользователей криптовалют для клиентских решений.



Первый способ для Bitcoin

Согласно технологии блокчейна Bitcoin, для совершения транзакции нужно знать хеш SHA256D предыдущей транзакции и порядковый номер непотраченного выхода в этой транзакции. Таким образом, для минимизации блокчейна требуется хранить структуру и данные по всем непотраченным выходам UTXO, а также хеши транзакций Bitcoin, содержащих эти выходы с их порядковыми номерами в транзакции.


Примерный дамп содержит 3 таблицы:

1. Список транзакций Bitcoin, содержащих хотя бы один непотраченный выход:
1) Структура транзакции 1:
  • хеш SHA256D транзакции (32 байта)
  • параметры транзакции (lock_time, данные SegWit, и т.п.)
2) Структура транзакции 2
...

Таблица сортируется побайтно по полю "Хеш транзакции" по возрастанию, порядок байтов этого поля little-endian.


2. Список непотраченных выходов UTXO:
1) Структура выхода 1:
  • выходной скрипт
  • количество монет BTC на выходе
  • порядковый номер транзакции согласно списку выше
  • порядковый номер выхода в этой транзакции
2) Структура выхода 2
...

Таблица сортируется сначала по полю "Порядковый номер транзакции", затем по полю "Порядковый номер выхода", оба побайтно по возрастанию, порядок байтов этих полей big-endian.


3. Список заголовков блоков:
1) Структура заголовка 1:
  • Порядковый номер блока в блокчейне
  • Заголовок блока
2) Структура заголовка 2
...

Таблица сортируется побайтно по полю "Порядковый номер блока" по возрастанию, порядок байтов этого поля big-endian. Фактически эта таблица является цепочкой заголовков блоков.


Кроме этого, дамп содержит следующие поля:
  • версия дампа
  • название монеты


Способ отсечения старых блоков в блокчейне заключается в том, что, например, каждый месяц определённый доверенный человек, уважаемый в криптовалютном сообществе, создаёт вышеописанный список непотраченных выходов UTXO транзакций Bitcoin и вычисляет хеш SHA256 этого дампа. Затем он подписывает стандартизированную строку, содержащую размер и хеш созданного файла, своим ключом ECDSA secp256k1 и публикует данный дамп на сайте. Пользователи скачивают этот файл, проверяют подпись и, в случае успешной верификации, загружают дамп специальной версией Bitcoin Core, после чего скачивают остальные блоки, начиная с последнего номера блока дампа.

Таким образом пользователям не нужно будет скачивать весь блокчейн на клиентские машины, а корректность данных будет основана на доверии к человеку, создавшему список непотраченных выходов UTXO транзакций Bitcoin и подписавшему его своим ключом. К тому же, синхронизация с сетью будет занимать минимальное время.



Второй способ для Bitcoin

Та же самая схема, но отличие заключается в том, что майнеры Bitcoin через каждые, например, 4320 блоков (то есть примерно раз в месяц) добавляют в скрипт входа COINBASE-транзакции стандартизированный комментарий, размер и хеш SHA256 файла, содержащего список непотраченных выходов UTXO и опубликованного на сайте. Это будет означать, что майнер подтверждает, что опубликованный список корректен и может быть использован пользователями на клиентских машинах. Если другие майнеры не будут согласны с корректностью данных, содержащихся в этом файле, они не будут продолжать майнить эту ветку, и смайненный блок станет орфаном.

В этом случае пользователи, скачавшие и верифицировавшие опубликованный список непотраченных выходов UTXO транзакций Bitcoin, будут полагаться на объём работы Proof-of-Work, которая была совершена после подтверждения майнером корректности данных, содержащихся в этом файле.



На самом деле, хотя второй способ выглядит убедительнее, он практически нереализуем, поскольку здесь требуется консенсус между майнерами Bitcoin, а в текущей ситуации майнерам всё равно, что написано во входе COINBASE-транзакции, и они будут майнить любую валидную ветку, не проверяя корректность опубликованного файла, содержащего список непотраченных выходов UTXO. Поэтому, на мой взгляд, для Bitcoin первый способ предпочтительнее.

Однако, второй способ может быть реализован в другой криптовалюте, консенсус которой будет обязывать майнеров сверять размер и хеш дампа непотраченных выходов UTXO, записанных во входном скрипте COINBASE-транзакции. К тому же, для полной ноды не будет необходимости скачивать опубликованный дамп, поскольку такой файл она сможет создать самостоятельно по заданному алгоритму.



Предлагайте здесь другие способы отсечения старых блоков в блокчейне с полным описанием алгоритма, не только для Bitcoin. Я буду редактировать второй пост и добавлять ссылки на ваши идеи и решения.

Этот пост был обновлён 30.08.2019.
Pages:
Jump to: