Author

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

full member
Activity: 165
Merit: 101
И если ты хотел сказать то, что в случае удаления старых транзакций в блокчейне,
допустим с 1-го до 5000000-го блока, этот форк нельзя было бы прогрузить сейчас...
То... Можно!
Можно же, в первый блок просто - засунуть magnet-ссылку,
на файл архива, содержащего предыдущие 5 000 000 блоков,
И если их нет, но они требуются, то выгрузить их по этой магнет-ссылке, из p2p-сети torrent,
какого-нибудь хранилища в датацентре, из облачных хостингов, из самой децентрализованной сети,
а лучше - из закриптованного децентрализированного хранилища, вроде SiaCoin,
где майнинг происходит - жесткими дисками.

ну тогда это уже не удаление, а скорее что то вроде архивации, бэкапа...

я вообще ничего не имею даже против удаления - по сути блокчейн ничего не потеряет если хранить только допустим UTXO + 1 предыдущая транзакция

только блокчейн с приложениями например к примеру может иметь кейсы в которых будет уместно сделать форк с более раннего состояния

в принципе сделать что то вроде "удаления" = "архивированию", с выбором на усмотрение пользователей
можно хранить частично - допустим указывая срок или "глубину" от UTXO, делает например разработчик криптовалюты или приложения изменения - пользователи хранят блокчейн на случай отката до более раннего состояния
legendary
Activity: 2422
Merit: 2166
И если ты хотел сказать то, что в случае удаления старых транзакций в блокчейне,
допустим с 1-го до 5000000-го блока, этот форк нельзя было бы прогрузить сейчас...
То... Можно!
Можно же, в первый блок просто - засунуть magnet-ссылку,
на файл архива, содержащего предыдущие 5 000 000 блоков,
И если их нет, но они требуются, то выгрузить их по этой магнет-ссылке, из p2p-сети torrent,
какого-нибудь хранилища в датацентре, из облачных хостингов, из самой децентрализованной сети,
а лучше - из закриптованного децентрализированного хранилища, вроде SiaCoin,
где майнинг происходит - жесткими дисками.

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

Хеш дампа списка всех непотраченных выходов транзакций UTXO, включённый во входящий скрипт COINBASE-транзакции, я здесь рассматриваю как дополнение к технологии, выражающееся в том, что обычные пользователи имеют возможность максимально надёжно совершать транзакции и отправлять монеты BTC без скачивания всего блокчейна:

Речь идёт об альтернативных способах хранения текущих состояний адресов пользователей криптовалют для клиентских решений.
full member
Activity: 1589
Merit: 214
я не имел ввиду форки которые возникают как следствие конкурентного майнинга
привел как пример эфир классик и эфир

При удалении информации из старых блоков есть потенциал ситуации когда форкнуть криптовалюту будет затруднительно
Ну смотри, взять эфир, допустим. У него сейчас более 8500000 блоков в блокчейне.
Так вот, есть у тебя цепочка блоков от 1-го до 8500000-го.
Ты берёшь его, парсишь, извлекаешь оттуда все адреса, имеющие неизрасходованные выходы, монеты, токены всякие.
И создаёшь новый блокчейн. В самых первых блоках - распределяешь все монеты и токены по этим вот всем адресам.
В итоге плучается 100-200 блоков, идущих подряд, где просто начисления идут на эти адреса.
Всё. Никаких старых транзакций. Все балансы всех держателей - на месте. Длина блокчейна 200 блоков.
Синхронизация - быстрая. Раздача - не требует много трафика.
Майнинг с 200-го блока аж до 8500200-го, может проходить как и прежде, причём ещё лет 5.
Ну и форкнуть блокчейн можно на любом блоке, после этого.

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

Что касается хардфорка ETH - ETC, то это тоже, по сути своей - форк блокчейна, то есть - отдельная ветка, как и на картинке выше,
но, пролжающаяся...
Quote
Разделение сетей состоялось в 2016, когда на блоке N1900000 две ветви создали точку отсчета, после которой каждая пошла своим путем. Каждый, кто на тот момент владел монетами ETH, получил монеты ETC по курсу 1 к 1.

И если ты хотел сказать то, что в случае удаления старых транзакций в блокчейне,
допустим с 1-го до 5000000-го блока, этот форк нельзя было бы прогрузить сейчас...
То... Можно!
Можно же, в первый блок просто - засунуть magnet-ссылку,
на файл архива, содержащего предыдущие 5 000 000 блоков,
И если их нет, но они требуются, то выгрузить их по этой магнет-ссылке, из p2p-сети torrent,
какого-нибудь хранилища в датацентре, из облачных хостингов, из самой децентрализованной сети,
а лучше - из закриптованного децентрализированного хранилища, вроде SiaCoin,
где майнинг происходит - жесткими дисками.
full member
Activity: 165
Merit: 101
я не имел ввиду форки которые возникают как следствие конкурентного майнинга
привел как пример эфир классик и эфир

При удалении информации из старых блоков есть потенциал ситуации когда форкнуть криптовалюту будет затруднительно
full member
Activity: 1589
Merit: 214
Хочу заметить что какой либо способ удаления "устаревшей" информации из блокчейна криптовалют подставит под удар возможность создания форков.
Если бы допустим разработчики эфира быстро отреагировали на уязвимость DAO и выпустили патч раньше чем сообщество отреагировало и запустило эфир классик, а эфир бы "чистил" блокчейн, то у той части которая была бы несогласна с изменениями не было бы возможности форкнуть ефир.
Теоретически, форки блокчейна возможны с любого блока,
учитывая отсутствие центра в децентрализванной сети, то есть - её ячеистую структуру.

Смотри картинку:


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

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

Но, пока сегменты не связаны, форки блокчейна (разные ветки),
они могут существовать, как не в чём не бывало.
Там - такой эфир, а там - такой, и он тоже вполне себе такой же - эфир.
full member
Activity: 165
Merit: 101
Хочу заметить что какой либо способ удаления "устаревшей" информации из блокчейна криптовалют подставит под удар возможность создания форков.
Если бы допустим разработчики эфира быстро отреагировали на уязвимость DAO и выпустили патч раньше чем сообщество отреагировало и запустило эфир классик, а эфир бы "чистил" блокчейн, то у той части которая была бы несогласна с изменениями не было бы возможности форкнуть ефир.
full member
Activity: 1589
Merit: 214
legendary
Activity: 2422
Merit: 2166
В разделе "Идеи" недавно была затронута тема про автооптимизацию блокчейна, поэтому была проведена ревизия описанного здесь способа отсечения старых блоков в блокчейне Bitcoin.


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

Я думаю, что поле "Bitcoin-адрес" во второй таблице "Список непотраченных выходов UTXO" абсолютно не требуется, так как этот адрес уже содержится в выходном скрипте транзакции. Более того, скрипты могут иметь разные форматы, отличные от PAY-TO-PUB-KEY-HASH, в том числе мультисигнатурные. Поэтому поле "Bitcoin-адрес" было убрано из общей структуры, дабы не загромождать дамп ненужными данными, не занимать лишнее место на носителях информации и не тратить впустую ресурсы при вычислении хеша SHA256 скаченного файла.
legendary
Activity: 3486
Merit: 1100

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

Антагонизм централизованных решений безрезультатен.
newbie
Activity: 46
Merit: 0
Ещё подскажу идей:

1. Нарезка на равные чанки, скажем, сутки, месяц, год.

2. использовать деревья Меркла и брать корневой хэш для чанка вцелом для верификации блока из раннего чанка.
newbie
Activity: 46
Merit: 0
Вы бы реализацию в коде бы выкладывали на гитхаб - цены бы вам не было.
legendary
Activity: 2422
Merit: 2166
Мой пост на первой странице был обновлён.

В структуру дампа была добавлена таблица "Список заголовков блоков", фактически являющаяся цепочкой заголовков.

В связи с этим, из структуры дампа были убраны поля:
  • порядковый номер последнего блока в блокчейне
  • хеш SHA256D последнего блока в блокчейне
  • текущая таргетированная сложность майнинга

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



Кстати, вовсе не обязательно записывать цепочку заголовков блоков именно с GENESIS-блока. Сложность майнинга на раннем этапе Bitcoin была минимальной, поэтому первые блоки в любом случае несущественно влияют на кумулятивную сложность майнинга всего блокчейна. В принципе, это не актуально для Bitcoin, но может иметь значение для других криптовалют, в которых блоки добавляются в блокчейн достаточно часто.
legendary
Activity: 2422
Merit: 2166
По всей видимости, для надёжности дамп также должен содержать цепочку заголовков блоков, начиная от GENESIS-блока. На текущий момент высота последнего блока в блокчейне Bitcoin равна примерно 575000, то есть, поскольку размер заголовка составляет 80 байт, эта цепочка займёт в дампе около 44 мегабайт и будет увеличиваться, как указал сам Сатоши Накамото в описании Bitcoin, на 4.2 мегабайта в год. В общем, не много.

Таким образом, клиент, скачавший список непотраченных выходов UTXO транзакций Bitcoin, сможет оценить примерную кумулятивную сложность майнинга всего блокчейна.
legendary
Activity: 1468
Merit: 1102
Им поверю.
Это ненормальная ситуация. Кто-то верит одним, кто-то другим, кто-то вообще никому не верит.
И проблема (я опять повторю!) не в том, что вы лично (не)поверили мне или Баффету.
Проблема для вас лично в том, что поверит или нет кто-то рядом с вами, а вас это коснется.
Что значит, ненормально. Есть два события. Одно то, что Баффет объявит что-то подобное. Вероятность близка к нулю.
Второе событие. То, что Баффет после объявления, сделает это.
Какие у меня причины, чтобы считать вероятность второго события равной нулю. Средства есть, слово на весь мир дал. Smiley

Представим, у меня 10btc. И кто-то выкинет полмиллиарда долларов, чтобы даже не забрать
эти средства, а просто попугать меня. И  вероятность это события должна меня заставить делать
какие-то подвижки.
Да не будет никто выкидывать! Баффет поспорит с Гейтсом на 100 баксов, что биткойн сдуется.
(100 баксов - цифра несущественная ни для того, ни для другого) и проведет "операцию", как
в свое время Сорос играл против Банка Англии. В результате простейшей манипуляции - они
порезвятся, а вы выйдете в окно. Вот ради чего?
Если не будет выкидывать, зачем беспокоиться? Smiley

Это из серии, что Баффет поспорит с Гейтсом, что биткоин сдуется. И скажет, что проведет атаку 51%. Уровень затрат тот  же самый.
Возможные последствия для Биткоина такие же, если не хуже.  И такая "опасность" уже сейчас существует. Она даже более реальная, чем атака на обрезанный блокчейн. Но вроде никто по этому поводу особо не беспокоится.
legendary
Activity: 1468
Merit: 1102
Quote
Представим, у меня 10btc. И кто-то выкинет полмиллиарда долларов, чтобы даже не забрать
эти средства, а просто попугать меня. И  вероятность это события должна меня заставить делать
какие-то подвижки.
Да не будет никто выкидывать! Баффет поспорит с Гейтсом на 100 баксов, что биткойн сдуется.
(100 баксов - цифра несущественная ни для того, ни для другого) и проведет "операцию", как
в свое время Сорос играл против Банка Англии. В результате простейшей манипуляции - они
порезвятся, а вы выйдете в окно. Вот ради чего?
Если не будет выкидывать, зачем беспокоиться? Smiley

Это из серии, что Баффет поспорит с Гейтсом, что биткоин сдуется. И скажет, что проведет атаку 51%. Уровень затрат тот  же самый.
Возможные последствия для Биткоина такие же, если не хуже.  И такая "опасность" уже сейчас существует. Она даже более реальная, чем атака на обрезанный блокчейн. Но вроде никто по этому поводу особо не беспокоится.
sr. member
Activity: 770
Merit: 305
Им поверю.
Это ненормальная ситуация. Кто-то верит одним, кто-то другим, кто-то вообще никому не верит.
И проблема (я опять повторю!) не в том, что вы лично (не)поверили мне или Баффету.
Проблема для вас лично в том, что поверит или нет кто-то рядом с вами, а вас это коснется.

Quote
Представим, у меня 10btc. И кто-то выкинет полмиллиарда долларов, чтобы даже не забрать
эти средства, а просто попугать меня. И  вероятность это события должна меня заставить делать
какие-то подвижки.
Да не будет никто выкидывать! Баффет поспорит с Гейтсом на 100 баксов, что биткойн сдуется.
(100 баксов - цифра несущественная ни для того, ни для другого) и проведет "операцию", как
в свое время Сорос играл против Банка Англии. В результате простейшей манипуляции - они
порезвятся, а вы выйдете в окно. Вот ради чего?
legendary
Activity: 1468
Merit: 1102
О чем ты.Smiley Объявишь, и все испугаются.  Это можно объявить и сейчас, что-то никто не пугается.
Для начала тебе надо предъявить полмиллиарда долларов.
Окей, объявлю не я, а Роджер Вер. Или Уоррен Баффет. Им поверите?
Обратите внимание, что предъявлять полмиллиарда надо, а что-либо
делать - совсем не обязательно.
Им поверю. Только вероятность того, чтоб объявят , крайне низкая. Смысла никакого нет. Все равно где-то будут полные копии блокчейнов.
Делать то тоже ничего не надо. Всего-то поставить стоп-кран на то, что блокчейн поменялся, и подождать некоторое время, когда он вернется назад. Стоит это того, чтобы не держать весь блокчейн, или нет, решать каждому.
Quote
Quote
Кроме того, чтобы сделать цепочку за 5 лет,тебе еще нужно поддерживать.
Еще раз повторяю - сама ситуация, что кто-то может взломать систему приводит к недоверию
к системе и её краху. Вы отказываетесь от основополагающего принципа кумулятивной
сложности начиная от генезис-блока и думаете, что это не отразится на безопасности?
Безопасность будет меньше, я с этим не спорю. Если при этом уровень безопасности останется достаточны высоким, то почему бы не делать. Это же вечный компромисс, между уровнем безопасности и затратами на безопасность. Начиная с какого уровня безопасности дальнейшие затраты на увеличение безопасности становятся бессмысленными.

Представим, у меня 10btc. И кто-то выкинет полмиллиарда долларов, чтобы даже не забрать эти средства, а просто попугать меня. И  вероятность это события должна меня заставить делать какие-то подвижки.
sr. member
Activity: 770
Merit: 305
О чем ты.Smiley Объявишь, и все испугаются.  Это можно объявить и сейчас, что-то никто не пугается.
Для начала тебе надо предъявить полмиллиарда долларов.
Окей, объявлю не я, а Роджер Вер. Или Уоррен Баффет. Им поверите?
Обратите внимание, что предъявлять полмиллиарда надо, а что-либо
делать - совсем не обязательно.

Quote
В тайстампах 1 сек? - через 2016(вроде так) блоков сложность у тебя взлетит, мама не горюй.
Не понял, зачем таймстампы 1 сек.?
Да, пожалуй, это лишнее. Буду 10-минутные интервалы клепать. Точнее, скажу, что буду.

Quote
Кроме того, чтобы сделать цепочку за 5 лет,тебе еще нужно поддерживать.
Еще раз повторяю - сама ситуация, что кто-то может взломать систему приводит к недоверию
к системе и её краху. Вы отказываетесь от основополагающего принципа кумулятивной
сложности начиная от генезис-блока и думаете, что это не отразится на безопасности?
legendary
Activity: 1468
Merit: 1102
Причем тут отрезанная сложность. Важна сложность в оставшейся цепочке.
Это сразу же мина замедленного действия - награда за блок уменьшается, хэшрейт
уменьшается, сложность падает. В какой-то момент затраты на создание альтернативной
цепочки из 10к блоков (с учетом того, что их можно начинать майнить загодя) становятся
допустимыми для атаки. Или вы думаете что при неизменной цене биткойна и халвингах
хэшрейт будет продолжать расти как на дрожжах?
То, что затраты уменьшатся, это еще бабушка надвое сказала. Если уменьшатся, то это будет проблемой и без обрезания блокчейна.
Мы вроде смотрим на то, что изменится именно из-за обрезания блокчейна.
p/s/ Чтобы намайнить 10000 блоков с нынешней сложностью, примерный порядок цифр:
 12,5btc*10000*5000$ = 625млн$
С большей сложностью, соответственно, еще больше.
Вот ни грамма не смущает. Хотите знать что я сделаю? Это будет веселуха.

Я распространю информацию, что начал создавать цепочку блоков заданной сложности
начиная от 01.01.2024 (ну то есть взял себе 5 лет люфта). Блоки будут создаваться с
разницей в таймстампах 1 секунда друг от друга. Фактически, это означает, что если
моя информация правда - то с ненулевой вероятностью биткойну 01.01.2024 придет пиздец -
весь баланс блокчейна будет у меня. Правда это или нет - вы сегодня не знаете, единственным
разумным поведением для вас - будет слить свои биткойны до 01.01.2024 чтобы не рисковать.
И если так поступят все (или многие), то затея удалась!
О чем ты.Smiley Объявишь, и все испугаются.  Это можно объявить и сейчас, что-то никто не пугается.
Для начала тебе надо предъявить полмиллиарда долларов.

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

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

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

sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
Будем играть в Сатанинскую бутылку?
Впрочем, мы в нее и так играем, просто изменение правил консенсуса сделает финал более очевидным.

Замечательная аналогия, но лучше сразу ссылаться на сам парадокс.
https://ru.wikipedia.org/wiki/Парадокс_сатанинской_бутылки_Стивенсона
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: 2422
Merit: 2166
Прям так и хочется написать на такой штучке - 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: 3486
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: 2422
Merit: 2166
Зарезервировано.
legendary
Activity: 2422
Merit: 2166
На мой взгляд, актуальным вопросом для 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.
Jump to: