15th Anniversary Classic Rereading: полный текст китайской версии «белой книги» биткоина

Автор: Сатоши Накамото; Перевод на китайский: Li Xiaolai

Описание: Чисто одноранговая версия системы электронных денег, которая позволит отправлять онлайн-платежи напрямую от одной стороны к другой, минуя финансовое учреждение. Несмотря на то, что цифровые подписи предлагают некоторые решения, основные преимущества электронных платежей нивелируются, когда доверенная третья сторона по-прежнему необходима для предотвращения двойного расходования. Мы предлагаем решение, использующее одноранговую сеть для решения проблемы двойного расходования. Одноранговая сеть будет ставить временные метки для каждой транзакции, вводя хешированные данные транзакции в обширную цепочку доказательства работы на основе хэша, которую невозможно изменить, пока она не будет полностью переделана. Самая длинная цепочка используется для доказательства событий, свидетелями которых они стали, и их порядка, а с другой стороны, для доказательства того, что она исходит из самого большого пула хеш-мощности процессора. До тех пор, пока подавляющее большинство вычислительных мощностей процессора контролируется доброкачественными узлами, то есть они не сотрудничают с теми, кто пытается атаковать сеть, то доброкачественные узлы будут генерировать самую длинную цепочку и опережать злоумышленника. Сама сеть нуждается в минимальной структуре. Информация будет распространяться на основе наилучших усилий, и узлы будут свободно приходить и уходить; Однако при присоединении всегда необходимо принимать самую длинную цепочку proof-of-work как доказательство всего, что происходило в период, в котором они не участвовали.

1. Знакомство

Интернет-коммерция почти полностью полагается на финансовые учреждения как на доверенные третьи стороны для обработки электронных платежей. Несмотря на то, что система довольно хороша для большинства транзакций, ей все еще мешают недостатки, присущие моделям, основанным на доверии. Полностью необратимая сделка практически невозможна, так как финансовым учреждениям не избежать арбитражных споров. Стоимость арбитража увеличивает транзакционные издержки, что в свою очередь ограничивает размер минимально возможной транзакции и просто предотвращает многие транзакции микроплатежей. Кроме того, существует еще более высокая цена: система не может осуществлять необратимые платежи за услуги, которые не являются обратимыми. Возможность разворота породила всепроникающую потребность в доверии. Продавцы должны быть осторожны со своими клиентами, беспокоя их, чтобы они предоставили больше информации, которая не была бы необходима, если бы она не была нужна (если ей доверяют). Определенный процент мошенничества считается неизбежным. Этих издержек и неопределенности с платежами можно избежать, если платежи осуществляются непосредственно между людьми с использованием физической валюты; Однако не существует механизма, позволяющего обеим сторонам осуществлять платежи по каналам связи без того, чтобы одна из них не была доверенной.

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

2. Операций

Мы определяем электронную монету как цепочку цифровых подписей. Когда владелец передает монету другому лицу, он или она делает это, добавляя следующую цифровую подпись в конец цепочки цифровой подписи: хэш предыдущей транзакции и открытый ключ нового владельца. Получатель платежа может подтвердить право собственности на цепочку цифровой подписи, проверив подпись.

! [sQZAt4qlbgm150hgxHy4ui11TxFPpIbbi5Z7GUia.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-4085a6d381-dd1a6f-69ad2a.webp «7126684»)

Проблема с этим путем заключается в том, что получатель не может проверить, что никто из предыдущих владельцев не платил дважды. Распространенное решение состоит в том, чтобы привлечь доверенный централизованный орган, или «монетный двор», и заставить его проверять двойное расходование каждой транзакции. После каждой транзакции монету необходимо возвращать на монетный двор, который выпускает новую монету. Кроме того, только монеты, выпущенные непосредственно монетным двором, заслуживают доверия и не были дважды оплачены. Проблема с этим решением заключается в том, что судьба всей денежной системы привязана к компании, которая управляет монетным двором (например, банком), и каждая транзакция должна проходить через нее.

Нам нужен был способ для получателя подтвердить, что предыдущий владелец не подписывал никаких предыдущих транзакций. Для наших целей учитываются только самые ранние транзакции, поэтому мы не заботимся о последующих попытках двойного расходования. Единственный способ убедиться в том, что транзакция не существует, — это получать информацию обо всех транзакциях. В модели монетного двора монетный двор знает обо всех транзакциях и может подтвердить порядок этих транзакций. Для того, чтобы иметь возможность сделать это без участия «доверенной стороны», запись о транзакции должна быть публично объявлена1, и нам нужна система, которая позволяет участникам договариваться об одной и той же уникальной истории транзакций, которую они получают. Получателю платежа необходимо доказать, что в момент каждой транзакции большинство узлов могут согласиться с тем, что она была получена первой.

3. Сервер отметок времени

Это решение начинается с сервера меток времени. Вот как работает сервер меток времени: он ставит метку времени для хэша набора записей, а затем транслирует хэш, как это делает газета, или как сообщение в Usenet.2 3 4 5. Очевидно, что временная метка доказывает, что данные существовали до этого момента времени, иначе хэш не был бы сгенерирован. Каждая временная метка содержит предыдущую временную метку в своем хеше, образуя, таким образом, цепочку; Каждая новая метка времени добавляется после предыдущей.

! [IkJWI40CL5rPFbmKNx829DpApCPH8JY1zjTQ9neY.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-900ed08398-dd1a6f-69ad2a.webp «7126685»)

4. Proof-of-Work (доказательство выполнения работы)

Для того, чтобы реализовать одноранговую связь на основе распределенного сервера временных меток, нам нужно использовать систему доказательства работы, такую как Hash Cash 6 Адама Берка, а не что-то вроде сообщения в газете или группе новостей. Так называемое доказательство работы заключается в нахождении значения; Чтобы это значение было истинным: после извлечения хеш-значения для него — например, с помощью SHA-256 для вычисления хеш-значения — хеш-значение должно начинаться с определенного количества нулей. Каждое дополнительное требование 0 экспоненциально увеличивает объем работы, и для проверки этого объема работы требуется только вычисление хэша.

В нашей сети временных меток мы реализуем proof-of-work следующим образом: мы продолжаем добавлять nonce в блок до тех пор, пока не будет найдено значение, удовлетворяющее условиям; Условием для этого является то, что хеш блока начинается с указанного количества 0s. Как только результат потребления вычислительной мощности процессора удовлетворяет доказательству работы, блок больше не может быть изменен, пока вся предыдущая работа не будет переделана. Поскольку новые блоки добавляются постоянно, изменение текущего блока означает повторную отделку всех последующих блоков.

! [L5fHgxjJJ6fSYcFToKfNERzgNlhNgUwdgMiNG2N5.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-dc3d2c22cc-dd1a6f-69ad2a.webp «7126686»)

Proof-of-work также решает проблему того, как решать, кто может принимать решения от имени большинства. Если так называемое «большинство» основано на подходе «один IP-адрес, один голос», то любой, кто может обрабатывать много IP-адресов, может считаться «большинством». Proof-of-work — это, по сути, «один процессор, один голос». Так называемое «решение большинства» представлено самой длинной цепочкой, потому что именно в нее было вложено больше всего работы. Если большая часть вычислительной мощности процессора контролируется честными узлами, то честная цепочка будет расти быстрее всех, и она будет намного быстрее, чем другие конкурирующие цепочки. Для того, чтобы изменить блок, который уже был создан, злоумышленник должен повторно завершить proof-of-work для этого блока и всех последующих блоков, а затем догнать и превзойти работу честного узла. В этой статье показано, почему вероятность того, что злоумышленник наверстает упущенное, экспоненциально уменьшается с увеличением количества блоков.

Чтобы справиться с растущим количеством аппаратных вычислительных мощностей и количеством вкладов узлов, которые могут меняться с течением времени, сложность Proof-of-Work определяется скользящим средним количества блоков, производимых в среднем в час. Если блок будет сгенерирован слишком быстро, то сложность возрастет.

5. Сеть

Для запуска сети выполните следующие действия:

  1. Все новые транзакции транслируются на все узлы;
  2. Каждый узел упаковывает новые транзакции в блок;
  3. Каждый узел начинает находить сложное доказательство работы для этого блока;
  4. Когда блок находит доказательство работы, он транслирует блок всем узлам;
  5. Многие другие узлы примут блок тогда и только тогда, когда будут выполнены следующие условия: все транзакции действительны и не были дважды оплачены;
  6. Многие узлы указывают сети, что они принимают блок, обрабатывая хэш принятого блока как хэш перед новым блоком при создании следующего блока.

Узел всегда считает, что самая длинная цепочка правильная, и продолжает добавлять в нее новые данные. Если два узла одновременно транслируют в сеть две разные версии «Next Block», то одни узлы получат одну из них первой, а другие — другую. В этом случае узлы продолжат работу над блоком, который они получили первыми, но также сохранят другую ветку в случае, если она станет самой длинной цепочкой. Когда найдено следующее доказательство работы и одна из ветвей становится длиннее, это временное расхождение разрешается, и узлы, работающие над другой веткой, переключаются на более длинную цепочку.

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

6. Стимулы

По соглашению, первая транзакция каждого блока является специальной транзакцией, которая генерирует новую монету и принадлежит генератору блока. Это вознаграждает узлы за поддержку сети и предоставление способа выпуска монет в обращение — в системе, где в любом случае нет централизованного органа для выпуска этих монет. Таким образом, постоянное добавление определенного количества новых монет в обращение подобно тому, как золотодобытчики постоянно используют свои ресурсы для добавления золота в обращение. В нашей системе потребляемые ресурсы — это время, в течение которого процессор работает, и мощность, которую он использует.

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

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

7. Освобождение дискового пространства

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

! [GOSWSMEutHTHRctOsFIZ6l0XiCZpQDCytysccOvF.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-be899b60f4-dd1a6f-69ad2a.webp «7126687»)

Заголовок блока без какой-либо истории транзакций составляет около 80 байт. Предполагая, что блок создается каждые десять минут, 80 байт, умноженные на 6 умножить на 24 умножить на 365, равны 4,2 МБ в год. По состоянию на 2008 год, большинство компьютеров в продаже поставлялись с 2 ГБ оперативной памяти, и закон Мура предсказывает, что 1,2 ГБ будет добавляться в год, даже если заголовок блока должен храниться в памяти.

8. Упрощенное подтверждение платежа

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

! [ZUtmrmdPnropshOMBHizRFDwDh0pncg5VGNnzWcI.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-c46aef910b-dd1a6f-69ad2a.webp «7126688»)

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

9. Комбинирование и разделение стоимости

Несмотря на то, что монеты можно обрабатывать по одной, неудобно создавать отдельную запись для каждой копейки. Чтобы обеспечить разделение и консолидацию значений, транзакции содержат несколько входов и выходов. Как правило, либо один вход из относительно крупной предыдущей транзакции, либо комбинация многих входов из меньшей суммы; При этом существует не более двух выходов: один для платежа (получателю) и один для сдачи (отправителю) при необходимости.

! [rRreBWdF8I1swfs5QtBILVrI0guXumj1ulPkbKyu.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-e6829c598f-dd1a6f-69ad2a.webp «7126689»)

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

10. Конфиденциальность

Традиционные банковские модели достигают определенной степени защиты конфиденциальности, ограничивая доступ к информации о трейдерах и доверенных третьих лицах. Такой подход был отвергнут из-за необходимости сделать все записи о транзакциях публичными. Однако сохранения конфиденциальности можно достичь, перекрыв поток информации в другом месте – анонимности открытого ключа. Общественность видит, что такой-то перевел такую-то сумму денег такому-то, однако нет никакой информации, указывающей на то, что человек такой-то. Такой уровень раскрытия информации немного похож на торговлю на фондовом рынке, только объявляется время и сумма отдельной сделки, однако никто не знает, кто является двумя сторонами сделки.

! [FACNxW4jyufvrE53ONTept7HLlHzayQU9CwIg4eX.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-c1e10d9736-dd1a6f-69ad2a.webp «7126690»)

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

11. Расчеты

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

Соперничество между честной цепочкой и нападающим можно описать биномиальным случайным блужданием. Успешное событие — это когда новый блок только что был добавлен в честную цепочку, увеличивая ее преимущество на 1, в то время как неудачное событие — это когда в цепочку атакующего только что был добавлен новый блок, уменьшающий преимущество честной цепочки на 1.

Вероятность того, что злоумышленник сможет догнать его сзади, аналогична проблеме банкротства игрока. Предположим, что игрок с неограниченным количеством фишек начинает с дефицита и позволяет ему делать ставки неограниченное количество раз, с целью восполнить дефицит, который у него уже есть. Рассчитать вероятность того, что он в итоге сможет восполнить недостачу, то есть вероятность того, что злоумышленник сможет догнать честную цепочку, можно следующим образом:

! [dxwr3HPLYbHZisFnpwH6hIvaudm3FchUzRFXaD7m.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-0f1dfde161-dd1a6f-69ad2a.webp «7126691»)

Так как мы предположили, что p>,q Так как злоумышленнику нужно догонять все больше и больше блоков, вероятность успеха уменьшается в геометрической прогрессии. Если атакующему не повезет сделать рывок вперед в самом начале, его винрейт будет уничтожен, а он будет отставать еще больше.

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

Получатель создает новую пару открытого и закрытого ключей, а затем передает открытые ключи отправителю незадолго до подписания. Это предотвращает ситуацию, когда отправитель заранее подготавливает блок в цепочке с непрерывными вычислениями, и ему повезло быть достаточно впереди, чтобы выполнить транзакцию до этого момента. После того, как деньги были отправлены, нечестный отправитель начинает тайно работать над другим парачейном, пытаясь добавить в него обратную версию транзакции.

Получатель платежа ждет, пока транзакция не будет упакована в блок, и уже есть z блоков, которые были добавлены впоследствии. Он не знает точно, насколько хорошо работают злоумышленники, но может предположить, что честные блоки тратят среднее количество времени в процессе генерации каждого блока; Потенциальное развитие атакующего соответствует распределению Пуассона с ожидаемым значением:

! [Go4WNHNh1YtPsMqjI2XbNCMTnITJUIl9w8LqM6yj.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-790cf0ec14-dd1a6f-69ad2a.webp «7126692»)

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

! [5O3ugdwP0uoNL0qOnvLbnUvNTXGMBmxJj4yS00y3.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-2d036c0208-dd1a6f-69ad2a.webp «7126694»)

Преобразование в программу на C...

! [XjwW5ZbFNIZCfiPFAnbg7b4iW4qp9A8g1LFKe2f2.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-cea09b1f46-dd1a6f-69ad2a.webp «7126698»)

Взяв некоторые результаты, мы видим, что вероятность экспоненциально уменьшается по мере увеличения z:

! [452fZL5ude7CUuUz85STQEcvquwOCHxhZ3pEhKRc.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-2d9ed83270-dd1a6f-69ad2a.webp "7126700")

Если P меньше 0,1%...

! [zfsBufXK54KjstagaZXrPOUREzaoQU7VPy9eYjjX.jpeg] (https://img-cdn.gateio.im/webp-social/moments-40baef27dd-40fd2c8861-dd1a6f-69ad2a.webp «7126701»)

12. заключение

Мы предлагаем электронную торговую систему, которая не должна полагаться на доверие; Отправной точкой является простая монетная рамка, которая использует цифровые подписи, и, хотя она предлагает надежный контроль над владением, она не может избежать двойного расходования. Для решения этой проблемы мы предлагаем одноранговую сеть, которая использует механизм proof-of-work для записи публичной истории транзакций, и до тех пор, пока честный узел может контролировать большую часть вычислительной мощности процессора, злоумышленник не может успешно вмешаться в систему только с точки зрения вычислительной мощности. Надежность этой сети заключается в ее неструктурированной простоте. Узлы могут работать одновременно в одно мгновение с минимальным взаимодействием. Их даже не нужно распознавать, потому что путь сообщения не зависит от конкретного адресата; Сообщения должны распространяться только по мере возможности. Узлы приходят и уходят свободно, и когда они снова присоединяются, им нужно только принять цепочку proof-of-work как доказательство всего, что произошло, пока они были в автономном режиме. Они голосуют за мощность своего процессора и показывают, что принимают действительные транзакции, постоянно добавляя новые валидные блоки в цепочку и отклоняя недействительные блоки. Любые необходимые правила и вознаграждения могут быть применены с помощью этого механизма консенсуса.

Список литературы

  1. b-money Дай Вэй (1998-11-01)
  2. Разработка безопасного сервиса временных меток с минимальными требованиями к доверию Анри Массиас, Ксавье Серре-Авила, Жан-Жак Кискуатер 20-й симпозиум по теории информации в странах Бенилюкса (1999-05)
  3. Как поставить временную метку в цифровом документе Стюарт Хабер, В.Скотт Сторнетта Журнал криптологии (1991) DOI: 10.1007/bf00196791
  4. Повышение эффективности и надежности цифровых меток времени Дэйв Байер, Стюарт Хабер, В. Скотт Сторнетта Последовательности II (1993) DOI: 10.1007/978-1-4613-9323-8_24
  5. Безопасные имена для битовых строк Стюарт Хабер, В. Скотт Сторнетта * Труды 4-й конференции ACM по компьютерной и коммуникационной безопасности - CCS '97*(1997) DOI: 10.1145/266420.266430
  6. Hashcash - контрмера отказа в обслуживании Адам Бэк (2002-08-01)
  7. Протоколы для криптографий с открытым ключом Ральф С. Меркл * Симпозиум IEEE по безопасности и конфиденциальности 1980 года* (1980-04) DOI: 10.1109/sp.1980.10006
  8. Введение в теорию вероятностей и ее приложения Уильям Феллер «Джон Уайли и сыновья» (1957)
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить