1 Работать(теоретически) такое может, но вот только это уже нифига не блокчейн - а просто срез всех счетов на какой-то момент времени.
Хм... Почему это "цепочка доверия"? Хочешь сказать, что данные при автооптимизации блокчейна - можно подделать?
Так как блокчейн до N-ного блока (в вышеизложенном примере - это 1000000-й блок) - во всей децентрализованной сети,
он один единственный, то и хэш у него - один единственный.
Его может пересчитать любая нода, перед отбрасыванием старого блокчейна и перед переходом на новый.
А все остальные форки блокчейна должны быть просто подвержены оверрайду, при попытке соединения с основной сетью,
ведь эти форки могут существовать только в подсетях децентрализованной сети, несвязанных с основной сетью.
Но... Возможно ты и прав, в той части, что если существует много обособленных подсетей, несвязанных с сетью,
то может быть и множество форков блокчейнов, в последствии подвеграющихся автооптимизации, и ещё раз и ещё раз...
И так, пока подсеть не связана с основной сетью.
И после установления связи подсети с основной сетью, не совсем будет понятно какой же из оптимизированных блокчейнов - валидный.
Но в любом случае, первый блок, GENESIS-block, он как правило общий для любой подсети, и обычно вшивается даже - в открытый и диверсифицирующийся исходник, вместе с checkpoints.
Поэтому, начиная с первого блока можно запустить проверку ВСЕГО БЛОКЧЕЙНА,
для обнаружения разветвления основного блокчейна.
Для этого, нужно ЕГО наличие ПОЛНОСТЬЮ и доступность его - в сети (по тем же
magnet-ссылкам из первого поста).
При наличии определённых параметров сети, вшитых в первый блок нового блокчейна,
таких как, например:
- суммарный хэшрейт сети,
- сложность Proof-Of-Work майнинга одного блока в сети,
- вес всех монет которыми осуществляется Proof-Of-Stake во всей сети,
- или сложность Proof-Of-Stake майнинга
- или что-то ещё...
так вот, при наличии этих параметров, можно было бы определить, какая сеть была больше, а какая меньше (подсетью её),
и по ним уже, автоматически, отдать предпочтение блокчейну бОльшей сети, а блокчейн меньшей - заоверрайдить автоматически.
Если генерация новых блоков в сети, происходит по принципу Proof-Of-Work майнинга,
очевидно, что можно было бы всей сетью - смайнить первый блок, после автооптимизации блокчейна.
Тогда, первый блок имел бы такую nonce, которая даёт
определённое количество нулей спереди хэша этого блока,
и количество нулей это, оно было бы определено - сложностью майнинга во всей сети.
Тогда, при наличии двух первых блоков, от двух разных автооптимизированных блокчейнов,
произошло бы отклонение одного из них (оверрайд) - в пользу предпочтения другого,
в пользу того блокчейна, у которого количество нулей в хэше, а значит сложность майнинга - больше. Там, значит - сеть помощнее.
Если генерация блоков встала на высокой сложности, из-за того, что майнеры разбежались и прекратили майнинг,
то оверрайд может происходить
по длине блокчейна,
или ещё честнее - по количеству транзакций в старом блокчейне (но тогда, опять же, потребуется его скачать и пропарсить).
В таком случае, я считаю, форки блокчейна из разных подсетей - они могли бы исключаться даже после автооптимизации блокчейна,
но иногда, нужно чтобы он был доступен, и он может быть доступен - по magnet-ссылке,
включённой в первый блок "автооптимизированного блокчейна".
2 Не факт что не израсходованных адресов будет меньше, а не больше - скорее всего больше тк каждая транза обычно имеет 1 вход(как бы - сумму) и много выходов...
Всё-равно старые транзакции просто выкидывались бы из блокчейна, в результате его автооптимизации.
Он весил бы намного меньше, синхронизировался бы - намного быстрее, и конечно же количество блоков в нём было бы меньше.
А так, имеем что имеем... Если пройти на
https://etherscan.io/ видно, что там уже 8421470 блоков.
Занимает, вроде, всё это дело - уже больше терабайта.
Основная инфа что содержится там, внутри, так - это транзакции старые, в том числе и транзакции эфиротокенов,
возможно уже давно неактуальных токенов, и транзакций - на адреса, приватные ключи от которых уже давно утеряны.
То есть тупо шлак.
А теперь, представь следующее...
Человек хочет поставить себе ноду.
Купил себе ОТДЕЛЬНЫЙ ТЕРАБАЙТНЫЙ ДИСК, купил его давно, а там - НЕ ХВАТАЕТ МЕСТА УЖЕ.
Купил четырёх-терабайтный... И...
Сколько же ВРЕМЕНИ он будет ждать синхронизации ВСЕГО этого блокчейна??
А валидации блоков его, в результате поблочного парсинга, а??
Я вон, WAVES-блокчейн
с его >1600000 блоками - пятые сутки уже валидирую.
Хочется взять и удалить нафиг всё.
Дальше...
Даже если система не работает по принципу
UTXO (то есть не содержит неизрасходованных выходов),
то можно было бы просто организовать автоначисление активов предыдущим владельцам - на их адреса,
после парсинга старого блокчейна, и формирования - ричлистов.
Как например вот этот
ричлист у WAVES.
Ну, а если
токены ещё есть, на балансах пользователей,
то и
по токенам ричлисты можно было бы сформировать,
а в первые блоки автооптимизированного блокчейна - просто включить транзакции начисления их на адреса прежних владельцев,
и хэш последнего блока - старого блокчейна, к которому цепляется первый блок - блокчейна нового, "автооптимизированного".
3 Такой довесок в принципе можно прикрутить к любой валюте - как локально
(то есть просто запускаете у себя никого не спрашивая и будет работать),
так и глобально, хранить эти блок со срезом состояния на какой-то момент времени можно вообще отдельно от блокчейна,
блокчейну это никак не мешает...
То есть вы можете тупо не скачивать весь блокчейн,
а только последнии блоки от такого среза, и, кстати, подобных оптимизаторов может быть много...
(если доверяете ему конечно, но проверить по исходному блокчейну не сложно)
ИМХО, главное, всё это продумать в деталях, написать в коде, и стандартизировать.
И чтобы автооптимизированный блокчейн мог валидироваться на всех нодах,
и чтобы с последнего блока автооптимизированного блокчейна - продолжался обычный майнинг,
и наращивалась новая цепь.
PS оптимизация с цепочкой доверия получается?..
(например дома на большом сервере храните весь блокчейн и считаете сами такой срез, а на мобильном устройстве проверяете только последнии блоки от среза, установив доверие своему домашнему серверу, или кому-то еще...)
Можно и так сказать. Но лучше бы, чтобы это было не просто "доверие серверу",
а принятие "результата выдачи этого сервера", всей сетью, после "валидации ею - этого результата",
с последующим отбрасыванием старого блокчейна, и продолжением генерации блоков - у нового.
То, что ты описал выше, не есть вышеописанная мною "автооптимизация".
Это, скорее - просто
ричлист на N-ном блоке, возможно даже с неизрасходованными выходами.
Да, такая фича юзабельна, ведь не надо парсить весь блокчейн до N-ного блока,
чтобы узнать лежат ли монеты на конкретном адресе (и возможно конкретном неизрасходованном выходе) или не лежат.
Но да, такой ричлист требует доверия его генератору, ведь туда, при его формировании - может быть вшиты какие угодно данные.
Да, если он корректен, то можно продолжать парсить основной блокчейн,
начиная лишь с N-ного блока, а до него - опираться на этот вот самый - rich-list.
Однако, как я уже написал выше - это не есть та самая моя "автооптимизация",
ведь ричлист этот, по сути, не является "автооптимизированным блокчейном"
- и с него не продолжается майнинг в основной сети,
и новые блоки в этой сети, выходят, цепляясь именно - к N-ному блоку,
то есть, продолжая основной, старый блокчейн,
который при установке ноды, всё-равно придётся выкачивать полностью,
и парсить тоже полностью, и валидировать там чё-то, пробегаясь по нему полностью,
и раздавать его - тоже полностью, что в течении тысячи лет - сожрёт весьма дофига трафика, если нода будет онлайн.