Много раз в прошлом людей предложили использовать DHT (либо по имени, либо изобретая понятие), чтобы сохранить всю blockchain, но это нарушает доверие свободной характер blockchain проверки. Для проверки блоков узел должен иметь историю полного блока. С TxIds от самой длинной цепи, однако вы не можете подделать, если вы спросите произвольный узел для деталей этого TXN. Для того, чтобы создать другой TxN с тем же TXID потребовало бы прообразом атаки на хэш, и считается неосуществимым, пока SHA-256 является криптографически сильным. Это позволит txns храниться в распределенном доверительную свободной манере, используя DHT (Распределенная Хэш таблица). Основная причина в том, чтобы уменьшить минимальные требования к памяти каждого узла и позволяет узлы поддерживать сеть на основе частичной. В настоящее время есть все или ничего требование. Вы либо полный узел (стоимость ~ 25GB) или вы не помочь сети в любом случае (SPV узлы не улучшить безопасность сети). ДГТ сделок, распределенной транзакции Таблица (ДТТ). Необходимые изменения не быть существенными и могут быть сделаны в обратной совместимости.
1) Блок структура для DHT узлов будет изменена таким образом, что он содержит только заголовок блока и TX хеши (TXID).
2) Новый блок сообщения будут созданы, который позволяет ретрансляцию это "упрощенна блок" (Также полезно в снижении стоимости сиротских блоков).
3) Полная транзакция будет храниться в DTT. Отдельные узлы будут хранить подмножество DTT.
4) Ток "полные узлы" могут быть преобразованы в DHT узлов, просто сохраняя 100% доли ДГТ в.
Наивное решение было бы для отдельных узлов, чтобы удалить все txns, которые не находятся в их доле и используют DTT по мере необходимости. Это было бы весьма неэффективно, поскольку вероятность узла нуждающегося конкретного TxN (либо внутри, либо потому, что она была запрошена сверстником) не соответствуют всем txns. Некоторые TXN всегда будет поддерживаться в локальном кэше те будут включать:
а) Txns в "недавний" блоки. В случае REORG обновляющей UTXO требует зная детали txns блока сиротства.
б) Txns в UTXO. Это txns, которые имеют по крайней мере один неизрасходованный выход. UTXO необходим для проверки нового txns и новые блоков.
с) Txns в пуле памяти. Это множество txns, которые справедливы и известны узлу, но еще не включены в блок. Если блок сообщение включает txns хэш только потребуются пул памяти для проверки блока.
д) Txns с участием ключей пользователя. Это не является обязательным требованием, но пользователь имеет личную заинтересованность в обеспечении копии его txns сохраняется. Если ничего другого, это может быть психологически полезно для повышения доверия к концепции DHT.
Поймите, однако целостность txns происходит от их TxN хэша (TXID) так "плохо оптимизировано" DHT будет иметь неоптимальный производительность, но не снижается безопасность.
Некоторые грубые числа текущих требований к хранению
Полная сырья blockchain = ~ 18,9 ГБ
Отмена цепи = ~ 2,5 ГБ (это может быть уменьшена? Кажется, отменить информационное прошлое говорят последние 144 блоков будет иметь мало значения)
Индексы Blockchain = ~ 2,0 Гб (я не декодируется, но они считают интересным это настолько большим по сравнению с блоками)
Chainstate (UTXO) = ~ 400 МБ (сжатый формат содержит неизрасходованные выходы & TXN метаданные только)
Пул памяти = <1MB (неподтвержденный txns, 538 на время поста)
Итого: ~ 23,8 GB
Текущая статистика blockchain
Количество блоков: 307394
Количество сделок: ~ 41182000
Количество неизрасходованного txns: 3347562 (а txns по меньшей мере одним выхода неизрасходованного)
Количество неизрасходованных выходов: 11648626
Нарушение этого вниз
Размер хеш-только блоки: 1320 Мб (включает в себя заголовки & TXN хэши)
Размер UTXO: 400 МБ (неизрасходованные выводит только)
Размер неизрасходованного Txns в полном объеме: ~ 1500 MB
Таким образом, требование локального запоминающего устройства кэша-памяти для узла DHT будет: 1,7 ГБ (или 2,8 ГБ, если полный txns элементов UTXO сохраняются). Если мы предположим, что средний узел поддерживает 5% долю DHT оставшегося txns (основную часть блока органов), который был бы другой 1GB. DHT узлы также сохранить локальную копию все пула памяти, но это ошибка округления требований хранения.
Это не приведет к сокращению времени начальной загрузки или (или количество используемой полосы пропускания) для самонастройки полных узлов. В качестве полного узла, все равно необходимо будет загрузить на 100% из txns на 100% блоков, чтобы проверить, длинная цепь является самой длинной цепи действует. Однако, как только бутстрапированное текущие потребности в ресурсах будут сокращены. Это будет работать лучше, если протокол содержал сообщение блока, который просто послал blockheader & txns хэшей. В настоящее время, когда полный узел принимает и проверяет новый блок, который проходит самую длинную цепочку он сохраняет полный блок и удаляет отработанное в настоящее время txns из UTXO. DHT узлы бы вместо того, чтобы записать сокращенный блок (заголовок & хэш только), затем сохранить его DHT долю потраченного txns и отбросить все остальное. Для того, чтобы уменьшить накладные расходы от и реорганизации; обеспечить лучшее покрытие для синхронизации узлов, требующих только кончик blockchain может иметь смысл для DHT узлов, чтобы сохранить все txns для самых последних х блоков (144? Один блок дня?).
Если была использована структура, как это для всех узлов, то "полные узлы" было бы просто узлы, участвующие в TxN DHT, которые сохраняют на 100% копию полного набора TxN. Лучшее сравнение было бы статус "сеялка" в протоколе BitTorrent. Поскольку все узлы DHT бы сохранить полную копию UTXO эти узлы все еще могут поддерживать SPV клиентов. SPV клиенты могут на самом деле поддержки сети, сохранив часть множества TxN. Сохраняя старый txns будет особенно полезно в том, что они могли бы снизить нагрузку на полных узлах, когда сеть бутстрап новых полные узлов.