Nakamotofamilyfoundation: перевод книги duality (ч. 2)
А теперь вторая часть перевода книги "Двойственность" Сатоши от нашего аналитика Александра.
Первая часть - здесь.
Во-первых, многие могут задаться вопросом, что принято в качестве аргумента в пользу фиксированного выпуска (эмиссии). Почему 21 миллион?
И этот вопрос будет обоснованным. Сработала математика, настолько близко к этому насколько я хотел. Перед тем как остановиться на 21 миллионе, я рассчитывал сделать наградой 100 BTC, и 42 - "ответ на главный вопрос жизни, вселенной и всего такого". Но испугался, что остальные сочтут мою отсылку к “Автостопом по Галактике” излишней остротой, и боясь не быть воспринятым всерьёз, изменил число на 21 миллион.
Это и привело к 10 минутам на формирование блока:
21000000 / (50 BTC * 24часа * 365дней * 4года * 2) = 5.99 блока/час
Я окргулил, если быть более точным, - 364,583 дней в году. Уполовинивание 50 BTC до 25 BTC после 210 000 блоков или через 3,9954 года, что в любом случае является приблизительным для перенастройки механизма сложности.
Я хотел , чтобы типичные значения были в привычном диапазоне. Если вы перемешиваете 100 000 единиц, это уже не кажется мало. Мозгу проще работать с маленькими числами от 0,01 до 1 000. Что и было положено в основу.
В примере числа могли стать по-настоящему большими, десятичные доли могли сдвинуться на 2 позиции, и центы стали бы новыми монетами.
Люди знают, что запас (Биткоина) ограничен 21 миллионом. Но это не совсем так. По крайней мере, если мыслим в терминах рыночной экономики. Если биткойн сможет когда-нибудь стать системой полностью свободной от комиссий, тогда послать кому-нибудь 100 “сатоши” будет равнозначно отправке 100 долларов (то есть за основу взяты именно сатоши, а не btc - прим. Menaskop).
Понимаете, биткойн был создан не для малых, а масштабных целей. В первой версии биткойна, я установил 6 десятичных знаков, но позже поменял на 8, так что 1 биткойн сегодня состоит из 100 миллионами центов (известных сегодня как “сатоши” - к вашему сведению это название придумал не я). Если, например, 7го мая 2 140 года 1 “сатоши” достигнет паритета с долларом США, тогда его истинная рыночная капитализация могла бы достичь 2х квадриллионов ста триллионов или 2х тысяч триллионов ста тысяч миллиардов, в зависимости от того какую стенографию (систему подсчёта) предпочитаете.
Это скорее всего никогда не случится. Хотя кто знает…
(Здесь хотел бы предвосхитить ожидания: как понимаю , “обоснованная догадка” - не то, что большинство людей ожидает услышать).
Я также добавил GetBlocksToMaturity в это время. Я установил значение на +20, намеренно. Несмотря на то, что технически можете подобраться к нему до того, как оно достигнет 120, до тех пор пока все в сети не будут иметь по меньшей мере 100 верифицированных подтверждений о добытом блоке, он не может быть потрачен. Остальные ноды распознают его как возможный для траты, но не как клиента. Для компенсации любых задержек в сети. Да - после 100 подтверждений добытый блок переводится из недобытого состояния (immature state), тогда как клиент будет ждать до 120 блоков перед тем как проинформирует вас, что генерация завершилась. Фиксированная величина была установлена с самого начала. В пребиткойне этого не было.
Далее забавный отрывок.
Все знают о награде за блок. Сегодня она составляет 50 BTC, или 50*100000000 (что олицетворяет 1 монету). Значение уполовинивается каждые 4 года. Но людям не известно, что так было задумано не всегда. Изначально планировалось, что будет просто 10000 (олицетворяющих 1 монету).
Да верно . 1/10000 или 0,0001.
Биткоин сегодня был бы совершенно другим, если бы не такая вещь, как пре-альфа тестирование.
И ещё одна деталь, которая набрала вес (со временем).
Вопрос, заслуживающий общественного обсуждения, особенно сегодня - сложность. (“Чем это было обусловлено?” - вопрос , который часто всплывает). Все знают что сложность меняется каждые 2016 блоков: но, по правде говоря, дело обстояло не так. Я поясню.
Кажется , что биткоин переустанавливает сложность в зависимости от времени затрачиваемого на майнинг последних 2016 блоков?
Вы разделяете целевой промежуток времени по targetspacing.
const unsigned int nTargetTimespan = 14 24 60 60; // two weeks
const unsigned int nTargetSpacing = 10 60;
const unsigned int nInterval = nTargetTimespan / nTargetSpacing;
Таким образом получаем 2016.
Кроме того, по правде говоря, похоже это действительно зависит от времени затраченного на майнинг последних 2015 блоков для настройки сложности (nInterval-1).
И не только текущая сложность, не точно 2016, но это никогда не было так.
Это было намеренно.
Пребиткоин предполагал изменение сложности каждые 2880 блоков. Вместо перерасчёта каждые 14 дней/2 недели, он бы перерасчитывался - через 30 дней. Также создание блока занимало бы не 10 минут, а 15. В отличие от последнего, nInterval-1 не было его частью. Теперь вопрос - "почему именно так?" - будет раскрыт в книге.
В общем, биткоин претерпел около 150 изменений перед релизом (наиболее точный список изменений может быть издан в книге, если люди этого захотят).
Тут представлены только самые часто поднимаемые вопросы, которые могу вспомнить.
Трудно собрать вместе вещи, которые произошли более 10 лет назад. Представьте себе попытку вспомнить, что вы говорили в прошлом кому-то в беседе, около 10 лет назад, - это примерно то же самое и для меня, за исключением того, что у меня было достаточно времени подумать.
Наиболее часто люди комментировали, так будто я знаю ответы на всё. Правда в том, что я думал об этих вещах годами , и поэтому я знал практически каждый вопрос, который мог быть задан, поскольку, вероятно, уже обдумывал эти вещи ранее.
Но это не значит, что я мог ответить на всё. Например, вещь над которой никогда не работал, но которая была встроена в биткойн - использование безопасных контрактов (safe contracts).
Безопасные контракты могут быть применены без наличия доверия:
_Tx1 от юзера платит скрипту, которому необходимы подписи обоих - Компании, которая исполняет контракт, и Пользователя, который тратит.
Tx2 (контракт) тратит Tx1 и платит пользователю.
nLockTime - время необходимое для высвобождения денег. _
Мои мысли по поводу смарт-контрактов использующих эскроу-системы следующие:
Компания даёт пользователю публичный ключ, чтобы использовать (его) в создании Tx1.
Пользователь приватно создаёт Tx1, но ещё не передаёт в сеть.
Пользователь даёт хэш Tx1 Компании.
Компания подписывает свою часть Tx2 с помощью nLockTime и даёт её пользователю.
Пользователь передаёт Tx1.
Пользователь подписывает свою половину Tx2 и передаёт её.
С помощью этих шагов Пользователь уже имеет подписанную Компанией часть Tx2 перед тем, как передаёт Tx1, таким образом они уверены для какой именно сделки передают(ся) деньги.
Это основной путь безопасной подписи контрактов. Tx2 подготовлена заранее, так что стороны знают, куда они вносят средства. Tx1 передаётся для блокировки денег и прикрепления к Tx2. Другими словами, все стороны передают свои деньги пулу, контролируемому анонимным соглашением группы, но предварительно группа уже подписала соглашение о действиях происходящих по-умолчанию с деньгами, либо (есть) частично подписанные множественные опции, которые сторона может выбрать путём добавление недостающей подписи.
Совместным соглашение стороны всегда могут подписать иную версию Tx2, которая немедленно высвобождает деньги.
Биткоин как и многие вещи начинался со стадии доказательства концепта. В начале не было ни одного прецедента и мне не на чем было моделировать, не было ничего даже близкого (к необходимому). Хотя существовало множество идей, как создать это. Сказать, что никто не думал над созданием чего-то подобного (биткоину) было бы наивно. Я имею ввиду, что множество личностей думало о возможности создания чего-то похожего на биткоин, но никто не реализовал его на практике.
Создание биткоина требовало реализации 3х фундаментальных областей знаний переплетённых вместе. В итоге для реализации потребовалась комбинация математики , криптографии и хороших практических знаний С++.
Некоторые аспекты, а именно POW и хэш-функция уже сущестовали - оставалось лишь внедрить. Остальные вещи, оглядываясь назад, были созданы по чистой случайности. Блокчейн, например. Блокчейн стал средством решения всех вопросов, с которыми децентрализованная валюта могла бы столкнуться.
Для достижения этой цели, в качестве примера, расскажу о задача Византийских Генералов.
Несколько из Византийских генералов имеют компьютеры и хотят по-разному взломать пароль от wi-fi Короля, который, как они узнали, состоит из определённого набора цифр. Как только они стимулируют сеть к созданию пакета, они должны взломать пароль в ограниченный промежуток времени и стереть логи, иначе - будут раскрыты. У них есть достаточные мощности CPU для взлома, лишь в случае, если большинство из них начинает атаку в одно и то же время.
Они особенно не заботятся о времени атаки, их более волнует - согласие (консенсус сети - прим. Menaskop). Было решено, что как-только кто-либо объявит время атаки, которое будем называть “планом”, и каким бы ни был “план” - первое объявление и будет официальным планом. Проблема в том, что сеть работает не мгновенно, и если двое генералов озвучат разные планы в близкие промежутки времени, некоторые могут услышать в начале одного, а остальные - другого.
Использование proof-of-work может решить проблему. Как только генерал получает какой бы то ни было план, он запускает свой компьютер для решения сложной, основанной на хэш-функции, proof-of-work задачи, которая включается в себя план и его хэш. Proof-of-work настолько сложен , что при совместной работе всех вместе, уйдёт около 10 минут на то, чтобы кто-то, один из них, смог найти решение и передать его всей сети. Когда решение получено, каждый устанавливает хэш в свои proof-of-work вычисления для добавления первого решения, таким образом, когда они найдут следующее proof-of-work (решение), оно встанет в цепочку после первого. Если каждый работал над реализацией иного плана, они переключатся к этому (найденному), поскольку его (proof-of-work) цепочка длиннее.
Через 2 часа, план будет захэширован цепочкой из 12 proof-of-works. Каждый генерал путём простой сверки сложности цепи (proof-of-work решений), сможет оценить, какая мощность CPU в час была затрачена на создание, и увидит, что для этого потребовалось большинство компьютеров в отведённое (заданное) время. По крайней мере, большинство из них должны были бы увидеть план, поскольку (существет) proof-of-work доказательство того, что они по нему работали. Если представленная мощность CPU достаточна для взлома пароля, то они смогут безопасно атаковать в согласованное время.
Это пример того, что может proof-of-work: он единовременно сводит в одну точку общие мощности и генерирует вычисленное доказательство через консенсус большинства в условиях отсутствия доверия.
(Здесь пропущено несколько частей)
В начале , я сделал по глупости майнинг биткоина крайне лёгким для всех (сложность была совершенно незначительной в течение первого года) для стимулирования его принятия, но большую часть первого года, казалось что только я и Хал использовали его. Большую часть времени были преимущественно подключены к сети мои собственные компьютеры.
Всё же, было увлекательно смотреть как это работает. Это также давало некую свободу действий, поскольку в то время я был единственным разработчиком, и устранение багов затрагивало меньше пользователей и было простым.
Вначале предпосылка для создания биткоина была проста - новая электронная платёжная система, использующая peer-to-peer сеть для предотвращения (возможной) двойной траты. Она была абсолютно децентрализована - не было серверов, либо доверенных сторон.
Основными свойствами биткоина во время релиза были:
предотвращение двойной траты благодаря использованию peer-to-peer сети,
никакого центра эмиссии или доверенных сторон,
участники - анонимны.
Позднее список был расширен:
Простая отправка денег через интернет без наличия какой-либо доверенной третьей стороны.
Третья сторона не может предотвратить или контролировать ваши транзакции.
Безопасность от нестабильности, вызванной необходимостью частичного резервирования в банках или неэффективной политики центральных банков.
Ограниченная инфляция денежного запаса системы Bitcoin распределена равномерно по сети (через CPU-мощности), не монополизирована банками.
Биткоин создавался с фокусом на общем консенсусе. Но без доверенных третьих сторон. Я боролся за эту идею. Концепт был чужд (существующей) практике. Как я мог убедить всех этих людей согласиться на что-то, и верить что сеть сама не будет модифицирована или подделана?
Ответом был протокол. Сама модель, которая, как я думал, ещё не существовала, попала в поле зрения достаточно быстро. Она была передо мной всё это время, я использовал её годами, но никогда не брал в расчёт, насколько эффективно она работает. Некоторые вещи работают настолько хорошо, что вы никогда не ставите под вопрос их существование. Они просто есть. Ответом был интернет. И сеть peer-to -peer.
Чтобы понять, что я имею ввиду, вам необходимо проследить историю того как Интернет стал тем, чем мы привыкли его видеть. В частности, роль протоколов TCP/IP, HTTP и SMTP в его формировании. На заре шли дебаты о том, какой протокол победит, поскольку их было несколько.
TCP или то, чем он позже стал, был преобразован из исследования проведённого Управлением по проведению перспективных исследований и разработок Министерства обороны США (DARPA) в 60х годах. Это был переход к протоколу нового поколения для ARPANET. Программа эволюционировала в протокол, который сегодня знаем как Программа Контроля Передачи (Transmission Control Program).
Он настолько разросся, что пришлось разделить протокол на слои по функциональности. Суть существования сети была сведена к одной цели - обеспечение эффективной передачи и маршрутизации трафика между узлами. Так появился TCP. Используя данный протокол, стало наконец-то возможным подсоединить практически любую сеть к ARPANET. Маршрутизатор предоставлял интерфейс для каждой сети. Всё это в результате было стандартизировано в едином протоколе , который был представлен в 1974 году в первой спецификации TCP.
Были разработаны 4 версии протокола, но только последняя, TCP/IP выиграла. В итоге ARPANET была перенесена на TCP/IP в 1983 году с DoD, утверждающим этот протокол в качестве стандарта для военной связи. Это привело к созданию разнообразных TCP/IP стеков для DOS и Windows, но только лишь когда в 1995 году Microsoft включила свой нативный TCP/IP стэк в Windows95, интернет был рождён…
(Я бы хотел перескочить вперёд и посвятить некоторое время тому, как я создал веб-сайт , поскольку это требовало некоторых приготовлений с моей стороны, не меньшая часть из которых требовала деликатных манёвров).
Регистрация веб-сайта анонимно - не лёгкая задача. Обычно регистраторы запрашивают персональную информацию, которую я не желал давать, и владение обычно привязано к СС, которое ведёт прямой ссылкой к вам.
Я знал: чтобы всё работало, как задумано, мне было необходимо сделать всё анонимно. Именно так. Я знал тогда, как и знаю сейчас, что как только моя работа будет сделана, я полностью покину комьюнити.
(Тут я хотел бы кое-что прояснить. Кто-то может относить к моим методам работы, как параноидальным, но по правде говоря, учитывая всю слежку за нами, кто оказался прав? Что я был параноиком без очевидных на то причин - не правда. Предосторожность - ключевое слово. В любом случае, подозрительность оправдала себя двумя годами позднее того, когда я ушёл).
Первая вещь, которую я сделал - анонимная регистрация сайта. В то время был Сервис анонимной/тайной перепискисервис анонимной речи, который позволял вам сделать именно это. Разница была в том , что сайт зарегистрированный в Японии, не мог стать объектом для международных государственных запросов о его подписчиках или содержании их переписки. Это подходило мне , поскольку я хотел быть уверен в том, что между мной и какими-либо злоумышленниками есть несколько слоёв защиты, поэтому я поженился с TORом, работал через double VPN и незарегистрированное оборудование. Я никогда не регистрировал что-либо на своё имя: как и веб-сайт я оплачивал иными методами, будь то наличные, предоплаченные карты и т.д.
В то время были и другие так называемые анонимные сервисы, но большинство из них не было анонимными в действительности и не могли защитить вас от вызова в суд или письма от адвоката.
Я использовал раздельные email лишь с той целью, чтобы быть уверенным, что в случае компрометации одного из ящиков, (с)могу использовать другие. В то время использовал анонимный email сервис вместе с TOR, который изменял моё место нахождения, “перемещая” меня на Западное побережье. Чтобы создать путаницу, я купил первый домен с использованием (меня через) сервис анонимной/тайной переписки, которую упомянул ранее, позволявшую оплатить разными методами, такими как наличные по почте.
При подготовке запуска биткоина , мне пришлось сделать множество шагов. Мне было необходимо всё идеально спланировать.
Первыми людьми, которым отправил email о биткоине, (вернее о том, что будет известно (позже) как биткоин, поскольку тогда ещё не определился с названием - в то время это был electronic cash) - были Адам Бэк и Вей Дай.
(Я не знаю, кого может удивить, но electronic cash всё ещё, фигурально выражаясь, “находится в заглавии”. Я хочу отметить, что Белая книга была написана (в последнюю очередь)после того, как софт был полностью завершён, как и должно быть, в отличие от сегодняшней нормы).
Я написал вначале Адаму, который перенаправил меня к Вею, обоих я подключил к разработке проектной документации. Я поделилися с ними пререлизом черновика проектной документации, но подозреваю, что никто из них его не сохранил (вообще-то я это знаю - не верите, спросите), и единственная проектная документация, которая доступна сегодня - та, которую отправил по своему списку рассылки. Когда я говорю проектная документация , я имею ввиду то, что сегодня принято называть whitepaper. Я переименовал её, перед публичным изданием.
Адам Бэк регулярно был в списках рассылки, и один из немногих людей, думавших о том, что кто-то может придумать действительно не отслеживаемую ecash, в то же время как и я. Он был ярым сторонником распределённой электронной валюты , того что многие люди пытались сделать, но никто не преуспел. Адам, как понимаю, был обеспокоен тем как остановить её без гиперинфляции в соответствии с законом Мура, что никому до биткоина не удалось. Большинство ранних идей в сообществе шифропанков так и осталось в академических трудах, или же было воплощено, но не нашло распространения и не работало по ряду причин (как известный пример Digicash).
Я узнал об Адаме по его постам из списке рассылки, также я узнал и о hashcash. Он описывал его особенности в шифропанокском листе рассылки, и люди сравнивали его с цифровым золотом, и как это может быть применено для распределённой ecash.
Хотя именно Адам отвечал за HashCash, которая использовалась в то время как Anti-Spam, были и другие способы её применения. Одним из них была функция майнинга для биткоина, но с рядом ключевых отличий. Hashcash работал с целыми битами, биткоин майнинг предполагал использование частей битов, 2^32 была оригинальной и стартовой сложностью для биткоина. Это было именно из-за двойного хэша, и переключения с SHA1 на SHA256 и биткоин определял работу по поиску хэшей как < 2^x, где x это log2(difficulty)+32 в битах. Хотя сложность биткоина выражается экспонентами, она также может быть выражена в битах, преимущественно благодаря консенсусу - чем меньше число, тем более оно (легко) читаемое.
Когда я решил связаться с ним и спросить, могу ли я цитировать его Белую книгу, я уже к тому времени разработал и построил прототип, и он уже использовал hashcash, как майнинговую функцию. В тот момент, он отметил схожести в моей бумаге и рекомендовал обратить внимание на b-money Вей Дая.
Тогда-то я и добрался до Вей Дая. Я уже изучил b-money и думал включить в свою бумагу. Если другие увидят какие основополагающие идеи помогли формированию биткоина, то это, как я надеялся, поможет им лучше понять мои мотивации. В этом эссе, Вей Дай предлагал proof-of-work, как средство создания денег. Предположу, что идея Вея последовала, как реакция на Hashcash Адама Бэка, который был разослан годом ранее в том же шифропанкосеком листе рассылки. В бумаге, Дай подчёркивает базовые элементы, которые должны содержаться во всех современных криптовалютах:
Определённое количество вычислительных мощностей в случае PoW.
Работа подтверждается сообществом, которое обновляет глобальный распределённый реестр или “блокчейн”.
Работникам (майнерам) даются средства за их лучшие попытки (усилия), в определённых случаях юзерам, чтобы обмен средств происходил путём совместной записи и аутентификации через использование криптографических хэшей.
Контракты обязательны для нод, передающих и подписывающих транзакций с использованием цифрового публичного криптографического ключа.
Дай описывает преимущества криптовалют достаточно чётко, так что в раннем 1998 году, уже существовали базовые блоки для построения (такой) валюты как биткоин. И действительно, многие итерации провалились, проложив путь биткоину и другим производным валютам. Но Вей предложил базис, из которого я мог взять существующие идеи и продвинуть их вперёд, дополнив видение полностью децентрализованной валютой.
Кто-то может удивиться, почему я решил цитировать их работы в своей бумаге, когда я уже запустил и протестировал большую часть тестовой сети биткоина, и правда не смотря на то что всё уже было сглажено и работало, моя озабоченность исходила из того, примет ли или отвергнет сообщество мою работу, на которую я потратил практически полных 2 года. В академии, как и в обычной жизни, вам иногда нужна помощь старших товарищей, чтобы ”протолкнуть” вашу работу.
Я уверен, что как только бы я пошёл вперёд и объявил в списке рассылки свою работу (или намерения), без каких-либо цитат или сносок, она скорее всего бы была отклонена, как и и другие неудачные попытки децентрализованных валют. Именно поэтому в проекте появились две хорошо известные (и уважаемые) в криптосообществе личности, которые в некотором отношении ручаются за меня, включая свои имена в моей проектной документации. Это были основные причины, поэтому когда пришло время анонса, уже была некоторая поддержка и базис для запуска проекта в лице людей, которые могли бы стать самыми жёсткими критиками.
Когда я покинул сообщество (пропускаю немного), я передал владение доменом Мартти, и оставил ответственным за репозиторий Гэвина. В апреле решил, что пришло время уйти (по правде говоря, я уже оставил сообщество многим раньше, на рождество - годом ранее, но решил официально объявить о своём отбытии только тогда - и, если вы не верите, спросите ключевых разработчиков того времени, например Майка), потому что поддержка и развитие были в руках квалифицированной команды, и они во мне более не нуждались, и у меня более не было желания продолжать. Я отправил свою финальную корреспонденцию ключевым разработчикам и определил зоны ответственности для остальных. Я писал ещё какое-то время, но скоро удалил всё, что связывало меня с Сатоши. Я постарался сделать максимум, чтобы не оставить малейшего подтверждения, что когда-либо существовал, но всё что со мной связывало, я сохранил в серию файлов, в случае если я уйду, кто угодно сможет идентифировать мою личность.
Есть и другие более серьёзные вещи, из-за которых мне мне пришлось уйти, но я не буду их сюда включать: они будут упомянуты в книге.
Здесь отмотаем время (назад).
Я думал об идее создания валюты , начиная с середины 2006, но лишь год спустя начал продумывать, как создать прототип из этих идей. Моё понимание криптографии не было продвинутым, тем не менее - я взял то, что знал и что уже существовало, и что уже работало и сделал усовершенствования там, где видел это уместным. Я изучал текущие исследования и применял то, что считал долгоиграющем в перспективе. Некоторые протоколы и стандарты только начинали применяться и я решил их включить во имя будущей проверки на практике.
Я знаю. Легко представить, что биткоин появился из воздуха, но это не совсем так. Он появился из множества неудачных попыток множества групп, и единственная причина по которой он преуспел - то, что он оказался в нужном месте в нужное время. И несмотря на это я не приурочивал его к началу финансового кризиса - как я мог это предугадать (хотя любопытный ответ - чуть позже), он послужил толчком, и я думаю, если бы его и не было, принятие биткоина это бы не отменило. Другие идеи - использование криптографических алгоритмов, proof-of-work, timestamps уже существовали. Но никто не связал всё это вместе способом, отражающими саму структуру интернета. Я прочитал академические труды за последние 15 лет перед тем, как погрузиться в это и заметил, что** в каждой неудачной попытке создания чего-то подобного биткоину, был упущен 1 ключевой ингредиент**. У всех у них были его биты и части, но не было целостной картины.
Продолжение следует...
Выводы по второй части
- Восточное побережье - место, созданное через ТОР.
- Для переписки был использован специальный сервис.
- Сатоши назвал основные факты по работе с сообществом - их нужно верифицировать.
- Биткоин не создавался "под кризис" 2008, но вырос из него.
- Знание криптографии у Сатоши не было высоким.
- Идея Биткоина пришла в голову в 2006 году и родилась путём кропотливого анализа академических трудов за 15 прещшествующих лет и практического внедрения шифропанка.
- А ещё...