Резюме: [Смотрите иллюстрации ниже]
Используйте специальную структуру дерева данных, чтобы организовать весь неизрасходованный-TxOuts в сети, и использовать корень этого дерева, чтобы сообщить о своем "подпись" между узлами. Листья этого дерева действительно соответствуют адресам / сценариев, и данные на листе на самом деле корень списка неизрасходованные-TxOut для этого адреса / сценария. Для обеспечения безопасности подписей дерев, он будет включен в заголовке альтернативного blockchain, который будет обеспечен путем объединенном добычи.
Это обеспечивает такое же сжатие, как простое неизрасходованной-TxOut Merkle дерево, но также дает узлам способ загрузить только неизрасходованный-TxOut список для каждого адреса в бумажнике, и убедитесь, что список непосредственно против blockheaders. Поэтому, даже облегченные узлы могут получить полную информацию об адресах, от любого ненадежного партнера, и лишь ничтожное количество загруженных данных (несколько килобайт).
(Примечание: я иллюстрировал все, как с помощью прямых Merkle-деревьев, но, как отмечено в разделе МИНУСЫ / неопределенностей:. Один из вариантов Merkle дерева придется быть использованы, что гарантирует эффективное обновление дерева)
(1) Основные преимущества:
(1a) Около оптимального сжатия blockchain: Теоретически, размер обрезанной blockchain будет пропорционален объему сделки (таким образом, может идти вверх или вниз), вместо всей глобальной истории, которая всегда увеличивается в размерах. На практике, это не будет так чисто, но вы действительно не будете делать лучше, чем это.Упс! Перед тем как эта идея была полностью разработана, я упустил из виду тот факт, что полные узлы будут по-прежнему должны поддерживать базу данных транзакций индексированные. Этот адрес индексированных DB не является заменой, но должен быть к тому же на что. Поэтому обязательно увеличивает объем работы и хранения данных полного узла. Но это может быть просто "добавить" к существующим "ultraprune" реализация. (В любом случае, это должно быть на самом деле обратная сторона).- (1b) ненадежный Поддержка легкий-узел: Новые узлы, входящие в сеть в первый раз, нужно будут только скачать небольшое количество данных, чтобы получить полные, поддающиеся проверке знаний о балансе и как провести его (большую часть которых может храниться между нагрузками). Один честные сверстники из тысяч гарантируют вы получите, и признать, хорошую данные.
- (1c) Совершенно без прерывания работы: Там нет протокола главной сети или blockchain изменения вообще. Вся информация баланса дерева сохраняется и проверяется в отдельном blockchain через объединенную добычу. На самом деле, это так не прерывает работу, она может быть реализована без поддержки ядра-DEV вообще (хотя я / мы хотели бы их участие)
- (1d) Эффективное дерево выполнение запроса&обновление: Полные-но-обрезают узлы сети будут иметь возможность эффективно поддерживать эту структуру данных. Новые блоки просто добавить или удалить неизрасходованные монеты из дерева, и все операции "постоянное время и пространство" (Существует верхний предел того, сколько времени и пространства требуется доказать включение, вставить или удалить часть данных, независимо от того, насколько велика сеть)
- (Не 1е) Нет пользователем настройки или опции: В отличие от сетей с перекрытиями, достижение полного доверия не требует нахождения доверенного узла или подписки на услугу. Так же, как и основной blockchain - вы найдете кучу случайных сверстников и получить самую длинную цепочку. Это может быть бутстрапированным таким же образом, как основная сеть.
(2) и Погрешность Недостатков:
- (1a) См пересмотренного (1а) выше
- (2a) Сложность концепции: Это не просто. Это второй blockchain, требующее совмещенная добычу - хотя, если она успешна и поддерживаются сообществом, то можно было бы добавить к сети, требуя, чтобы шахтеры вычислить и включают корневой хеш этой структуры данных в coinbase сценария (так же, как с высота блока). Это вполне возможно, но это может быть медведь для его реализации.
- (2b) Погрешность о начальных загрузках данных облегченного-узле: В зависимости от того, как структурированы данных, там еще может быть немного данных для узла облегченного для загрузки, чтобы получить полную защиту полного узла. Это, несомненно, будет гораздо меньше, чем загружать всю цепочку. Но, очевидно, есть последствия, если эта безопасность достигается за счет 1 МБ / бумажника, или 100 Мб / кошелька (еще лучше, чем 4 Гб, с этим письмом). ОБНОВИТЬ: Моя первоначальная оценка на основе "Гибридный PATRICIA / Brandais Tree" (Ака Райнер-Tree), является то, что кошелек с 100 адресов может проверить свой баланс около 250 кбайт.
- (2c) [см UPDATE в нижнем] Меркло дереве Альтернативного Необходимые: Vanilla Меркл дерева не будут работать, так как добавление или удаление одиночных ветвей могут привести к полному перерасчету дерева. Но это должно быть возможно создать альтернативу со следующими свойствами:
- Коммутативное вычисление: узел должен быть в состоянии получить тот же ответ, независимо от того, является ли дерево вычислено с нуля, или основано на обновление предыдущего дерева.
- O (журнал (N)) обновление: удаление или добавление одного узла лист должен быть в состоянии сделать в O (журнал (N)) времени. С ванильным Merkle дерева, это верно, только если удалить узел и добавить узел в том же месте листа.
(3) Допущения::
- (3а) нужно проверяемые корни деревьев: Я утверждаю, что регулярная сеть оверлея не будет достаточно, только потому, что это слишком легко для вредоносных узлов распространять неверные данные и испоганить сеть. Если есть достаточное количество вредоносных узлов в сети с перекрытиями, он может сделать облегчённые узлы, которые зависят от него непригодных для использования. Я предполагаю, что это необходимо иметь проверяемый источник для обрезанных-заголовков - отдельный blockchain успешно, так как правильность данных требуется быть приняты.
- (3б) Объединенная добыча делает то, что мы думаем, что он делает: Это безопасный способ поддерживать отдельный blockchain, используя существующие добычи энергии.
- (3с) Эффективная сортировка: Листовые узлы главного дерева должны быть отсортированы так, что все узлы могут получить тот же ответ. Тем не менее, это может быть сделано с помощью ковша-то в O (N) времени, поскольку листовые узлы хэши, которые должны быть равномерно распределены.
Alt-Chain Merkle Tree конструкция:
-- Для каждого адреса / скрипта, собрать все неизрасходованные-TxOuts
-- Compute Merkle корень каждого дерева TxOut
-- Сортировка корней, использование в качестве листовых узлов для мастер-Merkle дерева.
-- Включите Merkle-корень дерева мастеров в заголовке альтернативной цепи.
https://dl.dropboxusercontent.com/u/1139081/BitcoinImg/ReinerAltChain/reinercompression.png
Как ваш баланс:
-- Скачать заголовки обеих цепей
-- Запросить список неизрасходованного-TxOut-хэша.
-- Вычислить корень суб-Merkle для этого адреса
-- Запрос вторично-узлы ветвления (O (журнал (N))
-- Вычисление мастер-корень; сравнить блок заголовка
-- Запрос полного TxOuts для каждого неиспользованного-TxOut-хэш выше
https://dl.dropboxusercontent.com/u/1139081/BitcoinImg/ReinerAltChain/reinercompression2.png
Альтернативные цепи:
Все данные включены в альтернативном blockchain, которая поддерживается за счетом объединенной добычи на главной цепи. Это только один дополнительный ТХ для каждого блока на главной цепи. Это в полной мере его влияние на основной цепи, и любые узлы, не обращая внимания / не знают о альте-цепи.
https://dl.dropboxusercontent.com/u/1139081/BitcoinImg/ReinerAltChain/reinerchain.png
Да, это огромная задача. Да, есть много неопределенностей. Да, мне нужна новая структура Merkle дерева.
Но эта идея будет убить два массивных заяц (убить два альбатрос с одного блоком?)
Хорошо, разорвать его!
ОБНОВИТЬ:
После того, как много и много обсуждений и дискуссий, я считаю, что индекс адреса должен быть сохранен в качестве TRIE-подобной структуры. Другие выразили заинтересованность в двоичном дереве поиска (BST). В любом случае, структура может быть приспособлена, чтобы иметь то же свойство, мы желаем из Merkle дерева, но с гораздо большей гибкостью, такие как очень быстрой вставка, удаление, обновление поиска информации и т.д. Я предпочитаю это крем-де-ла -creme попыток - гибрид PATRICIA дерева (уровень сжатого TRIE) и де-ла-Braindais дерева (узел-сжатый). Это выглядит примерно так:
https://dl.dropboxusercontent.com/u/1139081/BitcoinImg/ReinerAltChain/DataStructures_Values.png
Структура будет индексироваться TxOut сценария ("получатель"), А каждый узел рекурсивно проверки подлинности узлов под ним. Уникальность структуры TRIE гарантирует, что существует ровно одно решение для данного набора TxOuts, что также означает, что только существующий набор TxOuts должен быть получен в целях создания синтаксического дерева (БСТ требует переигрывая все транзакции, для того, чтобы иметь хорошо определенную внутреннюю структуру). Для образования на TRIE структур, увидеть мои красивые картинки в этом посте.