{Отредактированный для ясности - будут цифры позже}
Более читаемый формат с фотографиями
http://philchampagne.github.io/xsidechain/Side_Chain_without_Bitcoin_modification.pdf
Другой подход на боковой цепи
Фил шампанского
12 июля 2014
Концепция боковой цепи дает возможность запускать отдельный блок цепочку из официального протокола Bitcoin, позволяющий для различных экспериментов, а также обеспечивая совершенно новый набор услуг и льгот. В идеале было бы поросенок обратно на задней части существующего протокола Bitcoin с небольшим или без каких-либо изменений к нему. Существует очень консервативный подход к программному обеспечению Bitcoin и как таковые, до сих пор совершенно новые валюты должны быть созданы, чтобы обеспечить новые концепции. В идеале, существующая Bitcoin валюта и CPU Hash мощность будет по-прежнему использоваться на тех других блоков цепи (боковые цепи) и до сих пор, предложения требуют модификации существующего программного обеспечения Bitcoin, чтобы для этого. Предложенный здесь метод позволит создать боковые цепи, которые не модифицируют существующее программное обеспечение Bitcoin. Операторы боковой цепи ( «горняки») компенсируются в BTC пользователей боковой цепи. Эта боковая цепь будет иметь зависимость от сети и блока сети Bitcoin, а сеть Bitcoin осталась бы знать о его существовании.
Блок цепи Bitcoin имеет преимущество работы корректуры из-имеет метод для обеспечения его целостности над этой децентрализованной распределенной одноранговой одноранговой сети. Боковая цепь будет также должны иметь свои данные обеспеченные и ее целостность поддерживается. Bitcoin использует свою собственную валюту имеет метод, чтобы вознаградить узлы, которые выиграли доказательство правильности работы. благосостояние валюты зависит от того, протокол соблюдается большинством узлов. Эквивалентное совокупность всех этих узлов хотят сохранить ценность валюты, так как они будут вознаграждены с ним. В отличии от альт монеты, которые работают совершенно новый протокол с его собственной валютой, боковая цепь будет по-прежнему использовать BTC наградить узлы для обработки и обработок боковой цепи, которая включает в себя использование полосы пропускания и дисковое пространство. Как мы можем организовать для поддержания целостности боковой цепи, используя BTC без изменения существующего протокола Bitcoin? По своей сути, то, что нам нужно, это способ компенсировать узлы в BTC для поддержания этой отдельной сети.
Так же, как и с Bitcoin, один узел будет нести ответственность за создание следующего блока боковой цепи. С Bitcoin, узел (шахтер) создание блока компенсируется из этого блока, создавая новые биткойны, а также разрешают собирать операционные издержки из суммы всех сделок. Эти сборы не посылаются на определенный адрес Bitcoin, но выигрышный узел (шахтер) просто добавляет сумму этих сборов в свой собственный адрес Bitcoin. Блок цепи действует Bitcoin в качестве бухгалтерской книги и поскольку узел отвечает, чтобы обновить его, он может легко сделать изменения учета в пользу своего собственного адреса Bitcoin в рамках создания этого нового блока она управляет. В случае боковой цепи, мы не можем предположить, что узел создает последний блок блока цепи Bitcoin является также участием в этой боковой цепи, если протокол Bitcoin не обновляется, чтобы диктовать так. Поэтому нам нужен метод, в котором узел создания последнего блока боковой цепи компенсируется в Bitcoin, даже если этот узел не может иметь никакого отношения с протоколом Bitcoin, другое, чем в качестве пользовательского приема и отправок Bitcoin сделок.
Пользователи боковой цепи будет посылать транзакцию, которая будет содержать плата за транзакцию. Однако, давайте называть его запись транзакций к акценту, что эта боковая цепь может быть не обязательно посылать транзакцию, а скорее общую информацию, такие как контракт, который должен быть записан публично. Существует большая проблема, если выбранный узел, который будет записывать следующий блок этой боковой цепи является компенсироваться из транзакционных сборов того же самого блока. Поскольку победивший узел (рудничный) блока текущего Bitcoin не может быть вовлечены в обработке боковой цепи, компенсируя узел боковой цепи требует отправки Bitcoin с использованием регулярных транзакций в сети Bitcoin. И это должно быть сделано, посылая их собственный адрес Bitcoin этого конкретного узла.
Таким образом, две сети участвуют. Сеть Биткойна используется пользователями боковой цепи, как способ компенсировать боковую цепь узлы. Вторая сеть является боковой цепью сети сама по которой передаются в записи транзакций. Узлы боковой цепи будет обрабатывать только записи транзакций, для которых операционные издержки были отправлены в сети Bitcoin. Учитывая это занимает до около 10 минут до того, как транзакция, записанные в сети Bitcoin и по крайней мере 6 блоков (или 60 минут) перед твердым подтверждением будет сделана, как узел боковой цепи может быть компенсирован сразу же, как это имеет место в Bitcoin сеть?
Немедленная уплата не действительно требование; это скорее уверенность в том, что компенсации боковой цепи узлы ищут. Таким образом, одно решение просят быть компенсированы после того как они создали блок. Выигрышная узел будет добавить адрес Bitcoin, что он владеет в блоке цепи на стороне он создает, что указывало бы пользователь, куда отправлять платежи. Один из подходов может иметь пользователей боковой цепи оплачивая * после * их блок был записан. Другими словами, пользователи отправляют свои записи о транзакциях, ждать, чтобы увидеть, когда он был записан в последнем блоке боковой цепи, посмотреть вверх Bitcoin адрес этой боковой цепи и произвести оплату по сети Bitcoin для требуемой платы за транзакцию. Усложнение приходит в случае неуплаты, в этом случае сеть боковой цепи нужно будет удалить любые записи транзакций, для которых не было сделано никаких соответствующих платежей.
Но есть еще один простой подход. Является ли это, что важно, чтобы узел, который включал данную запись транзакции будет тем же один компенсируются владельцем этой сделки запись? Я не верю, что это так, и это открывает тот случай, когда пользователи, для которых операция запись будет записана в следующем блоке фактически компенсирующие выигрышный узел, созданные предшествующий блок (рисунок 1).
Рисунок 1
Но есть еще одна значительная часть сети Bitcoin, что мы до сих пор не рассматривались. Одной из особенностей сети Bitcoin является то, что он предоставляет любому возможность доступа к любому из предыдущих блоков блока цепи Bitcoin который копия хранится у каждого узел. Для того, чтобы выполнить свою работу, они обязаны хранить его копию в любое время для того, чтобы убедиться, что другие узлы имеют правильную копию блока цепи. Делая это, они могут утверждать вновь созданные блоки, проверив все новые сделки в соответствии с ранее записанными операциями. Но до сих пор, описание, которое мы дали не означает какие-либо стимулов для узлов, чтобы сохранить какие-либо из предыдущих блоков боковой цепи. Так же, как в сети Bitcoin, которая требует узлов для обмена перед блоком, чтобы убедиться, их будущий блок может быть утвержден, тот же принцип должен применяться и к этой боковой цепи. Но тогда возникает вопрос, каким образом?
Когда новый блок боковой цепи создаются, боковые цепи узлы будут иметь требование для запуска алгоритма хеширования, который принимает, в качестве входных данных, содержание предшествующего блока боковой цепи, выбранного случайным образом, а также предыдущего. Заголовок боковой цепи блок будет содержать следующее:
1. Адрес Bitcoin, что этот узел хочет оплаты будет отправлен на компенсацию.
2. Хэш предыдущего блока боковой цепи
3. Блок номер последнего блока Bitcoin
4. Хэш созданный с использованием для ввода, содержание предшествующего блока боковой цепи (см ниже формулы) в сочетании с этой боковой цепи номер блока и хэш последней Биткойн блока цепи.
5. Перечень сделки
6. Эта боковая цепь хэш.
Хэш создан для пункта 4 выше, требуется полное содержание предыдущего блока цепи на стороне, которая не является неизвестной всеми узлами до сих пор. Формула для выбора требует использования хэша последнего блока Bitcoin в. Последний 4 байта этого хэша (эти байты на левой стороне, наименее значимый по стоимости) используются в качестве входного числа.
фигура 2
Формула выглядит следующим образом:
Р = До боковой цепи номер блока
H = Последние 4 байта последней Bitcoin блока вывода хэш.
С = Текущая боковая цепь номер блока
Р = Н по модулю С
Использование хэша от последнего блока блочной цепи Bitcoin обеспечивает хаотичность требуется.
Пункт 4 перечисленные выше, будут использовать, в качестве входных данных для алгоритма хеширования (SHA-256, например), полное содержание боковой цепи блока # 242 в сочетании с этим текущим номером блока (5354) и хэш-блока Bitcoin, который был использован ,
Обратите внимание, что в отличие от протокола Bitcoin, который требует полного блока цепи доступны навсегда, конкретная боковая цепь может иметь более легкое требование относительно продолжительности времени, блоки должны храниться узлами, например, только один год. В таком случае, формула будет слегка изменена. Скажем, только последние 1000 блоков должны быть узлами; формула будет выглядеть следующим образом:
Р = С - 1000 + (Н по модулю 1000)
Определение выигрыша узел
Существующие Bitcoin узлы, которые готовы участвовать в этой боковой цепи будут запускать дополнительное программное обеспечение для работы протокола боковой цепи. Как они добывают текущий блок в сети Bitcoin, эти участвующие узлы боковых цепей будут принимать во внимание минимального значения хэша (наряду с соответствующим одноразовым номером), они получили до сих пор во время гонки помоему текущий блок Bitcoin. Не все горняки в сети Bitcoin может принять решение об участии в этой сети боковой цепи и, таким образом, лучший бегун гонки Hash в сети Bitcoin выбран. Когда блок, удовлетворяющий уровень сложности был опубликован в сети Bitcoin, эти участвующие шахтеры опубликовали соответствующий блок, который был бы выбран в качестве последнего блока блочной цепи Bitcoin было их самое низкое значение хеш-функции встречались текущий уровень сложности Bitcoin протокол. Шахтер, который издает блок Bitcoin с наименьшим хэша становится победителем, который будет производить следующий блок боковой цепи. То боковая цепь блок будет содержать Bitcoin адрес этого комбайна. Конечно, если издатель последнего Bitcoin блока среди участников на этой боковой цепи, он будет победителем боковой цепи, а также, и сбора платы транзакций для следующего блока боковой цепи.
Чтобы избежать проблем, связанных с бесхозными блоков, либо боковую цепь применяет те же правила в отношении блока расколов как протокол Bitcoin, или в качестве альтернативы, есть отставание 10 блоков по сети Bitcoin до установления победителя и публикации новой боковой цепи.
Сейчас этот победитель начнет получать выплаты его Bitcoin адрес текущих пользователями сети боковой цепи, которые будут их транзакция, записанными включена в следующем блоке боковой цепи.
Включение записи транзакций
Для того, чтобы иметь запись транзакций, обработанных в боковой цепи, пользователь должен отправить определенное количество Bitcoins - с использованием сети Bitcoin - к Bitcoin адресу, указанному в последней боковой цепи. Пользователь будет «подписать» его запись транзакции с помощью закрытого ключа, соответствующего адресу Bitcoin, который был использован для отправки биткойны на опубликованный Bitcoin адреса. Это подтвердит, оплата была произведена для данной операции записи на боковой цепи. Как мы уже говорили ранее, шахтеры (или боковые цепи «операторы») оплачивается из записей транзакций платы следующего блока боковой цепи после них.
Когда расколы и сиротские блоки происходят на блок цепи Bitcoin, она будет обрабатываться таким же образом, на боковой цепи. Однако, если этот боковая цепь блок происходит не часто (например, один раз каждые 24 часа), одна реализации может ввести достаточную задержку от 6 до 10 блоков блока цепи Bitcoin может быть введено, чтобы установить победитель.
Пример # 1: блок-каждые 24 часа
Давайте предположим, что мы хотим создать боковую цепь, которая требует только новый блока каждых 24 часов, которые записывают публичные документы или контракты. Это может быть установлено, что он является победителем первого Bitcoin блока, созданного после полуночи по Гринвичу, который будет создавать этот блок. Шахтеры Bitcoin, которые конкурировали, чтобы получить выходной хэш удовлетворяющего уровня сложности сохранили запись их лучшего хэш вывода результата (низкое значение) вместе с соответствующим одноразовым номером. Теперь они транслируются только их хеш-вывода друг с другом. При необходимости, случайная задержка от 1 до 30 секунд, может быть реализована таким образом, что не все узлы сети заливая с пакетами одновременно. Если узел получает хэш-выход с более низким значением, чем у него есть, он не должен беспокоить посылать свои собственные.
После того, как выигрышный бегун узел был создан, он начинает работать над созданием блока боковой цепи путем включения всех записей транзакций, которые были получены в течение последних 24 часов.
Пример # 2: блок-каждый 1 минуту
Реализация боковой цепи может иметь более короткий период, чем протокол Bitcoin. В этом случае выигрыш минер несет ответственность за последующие 10 или, возможно, 20, 30 или 60 блоков. Это вроде как расколоть блок в нескольких блоках в течение установленного периода времени.
Дополнительно:
Примечание 1:
Другой поворот может быть иметь боковую цепь шахтеры делают собственное доказательство правильности работы на этом боковой цепи блоке. Шахтеры конкурируют за доказательство правильности работы с хэш-блока боковой цепи. Так же, как с протоколом Bitcoin, хэш-блока боковой цепи должен быть ниже определенного уровня, который скорректирован на основе быстроты расчета по всей сети. Недостатком является то, что дополнительный хэш власть должна быть посвящена этой боковой цепи.
Заметка 2:
Первоначально вместо конкретности иметь шахтер сбор награды будущего блока, я рассматривал шахтер сбор награды существующего блока. Однако, поскольку операционные сборы собираются в момент передачи, он требует отправки его в установленный адрес Bitcoin. Я предполагал это может быть multisig адресом 6 из 10 шахтеров (победителя и 9 занявших второго места). Эти шахтеры будут совместно подписать несколько сделок, 1 победитель, и меньшее количество для каждого из 9 бегун. Но вопрос о сборе платы транзакций для будущего блока не обязательно является проблемой. В долгосрочной перспективе, она должна быть примерно таким же, стабильным количеством сделок. Даже если это не было, скажем, боковая цепь была на 24 часа, а в воскресенье, там было очень мало трафика, но понедельник пик, интерес к победе и работает в воскресенье будет выше, чем оплата собранной в тот же день. Эквивалентная пятница выигрышные шахтеров могут иметь много сделок, но очень мало платят из блока в субботу.