Если Скрудж жадный, как его тезка из мультфильма, он может отказаться публиковать транзакции, если они не передают ему какую-либо утвержденную комиссию за транзакцию.
Scrooge также может, создать столько новых монет для себя, сколько он хочет.
Или Скруджу может наскучить вся система, и он может полностью прекратить обновление цепочки блоков.
Проблема здесь в централизации.
Хотя Scrooge может и доволен этой системой, мы, как ее пользователи не можем быть довольными такой системой.
Хотя ScroogeCoin может показаться нереалистичной криптовалютой, большая часть ранних исследований криптосистем предполагали, что действительно будет какой-то центральный доверенный орган, обычно называемый банком.
В конце концов, у большинства валют реального мира есть доверенный эмитент, обычно правительственный монетный двор, который отвечает за создание валюты и определение того, какие денежные знаки действительны.
Однако, криптовалютам с центральным органом на практике не удалось реализоваться.
Этому есть много причин, но оглядываясь назад, кажется, что трудно заставить людей принять криптовалюту с централизованной властью.
Поэтому центральная техническая задача, которую нам необходимо решить, чтобы улучшить ScroogeCoin и создать работоспособную систему, это можем ли мы удалить Scrooge из системы?
То есть можем ли мы избавиться от этого централизованного органа?
Можем ли мы создать криптовалютносту, которая работает как ScroogeCoin во многих отношениях, но не имеет какой-либо центральной доверенной власти?
Для этого нам нужно выяснить, как все пользователи системы могут согласовать одну опубликованную блок-цепочку как историю всех транзакций, которые когда-то произошли.
Они должны все договориться о том, какие операции действительны, и какие транзакции действительно произошли.
Они также должны иметь возможность назначать идентификаторы децентрализованным способом.
Наконец, производство новых монет должно контролироваться децентрализованно.
Если мы сможем решить все эти проблемы, тогда мы сможем построить валюту, которая будет похожа на ScroogeCoin, но без центральной власти.
Фактически, это будет система, очень похожая на биткойн.
Как биткойн обеспечивает децентрализацию
Децентрализация это важная концепция, которая не является уникальной для Биткойна.
Вопрос конкурирующих парадигм централизации и децентрализации возникает во множестве различных ИТ технологий.
Чтобы лучше понять, как это работает в биткойне, полезно понять центральный конфликт противоречие между этими двумя парадигмами в других контекстах.
Например, с одной стороны, у нас есть Интернет, децентрализованная система, которая исторически конкурировала с информационными сервисами America Online и CompuServe.
Или есть электронная почта, которая по своей сути является децентрализованной системой, основанной на открытом стандарте Simple Mail Transfer Protocol (SMTP), а с другой стороны есть закрытые системы обмена сообщениями, такие как ВКонтакте, Facebook или LinkedIn.
Наконец, есть социальные сети централизованные системы, такие как ВКонтакте, Facebook и LinkedIn, и распространенной децентрализованной альтернативы у них нет.
Надо учитывать, что децентрализация или централизация не реализуются полностью.
Почти ни одна система не является чисто децентрализованной или чисто централизованной.
Например, электронная почта, в своей сути, представляет собой децентрализованную систему на основе стандартизованного протокола, SMTP, и любой, кто желает, может управлять собственным сервером электронной почты.
Тем не менее, развитие рынка сервисов электронной почты привело к его монополизации, и небольшое число централизованных поставщиков веб-почты стали доминирующими.
По аналогии, в то время как протокол Bitcoin является децентрализованным, такие сервисы, как обмен биткойнами, где вы можете конвертировать Биткойн в другие валюты, программное обеспечение для кошельков или программное обеспечение, которое позволяет людям управлять своими биткойнами могут быть централизованы или децентрализованы в различной степени.
Имея это в виду, давайте разделим вопрос о том, как протокол Bitcoin достигает децентрализации на пять более конкретных вопросов:
1. Кто хранит книгу транзакций?
2. Кто имеет власть утверждать действительность транзакций?
3. Кто создает новые биткойны?
4. Кто определяет, как изменяются правила системы?
5. Как биткойны получают обменную стоимость?
Первые три вопроса отражают технические подробности протокола биткойнов, и именно эти вопросы мы в первую очередь разберем.
Различные аспекты биткойна отражают разную степень централизации / децентрализации.
Одноранговая сеть является практически децентрализованной, так как любой может запустить узел биткойна.
Вы можете подключиться к сети и легко загрузить клиент Bitcoin и запустить узел на вашем ноутбуке или на вашем ПК.
В настоящее время существует несколько тысяч таких узлов.
Биткойн-добыча технически также открыта для всех, но для этого требуются очень высокие затраты.
Из-за этого существует высокая степень централизации или концентрации в экосистеме добычи биткойнов. Многие в сообществе биткойнов считают это совершенно нежелательным.
Еще один аспект это обновление программного обеспечения, на котором работают узлы Bitcoin, и это влияет на при изменении правил системы.
Существует множество совместимых реализаций протокола. Но на практике большинство узлов используют эталонную реализацию, разработчикам которого доверяет сообщество, и эти разработчики обладают большой властью.
Распределенное согласование
Давайте рассмотрим децентрализацию в Биткойне на техническом уровне.
Ключевой термин, который здесь возникнет, это консенсус и, в частности, распределенный консенсус.
Основная техническая проблема, которая возникает при создании распределенной системы цифровых денег это достижение распределенного консенсуса.
Консенсус это процесс получения согласованного результата группой участников, например, утверждение транзакций в распределённых системах.
Распределенный консенсус имеет различные применения, и он десятилетиями изучался компьютерной наукой.
Традиционное мотивирующее использование консенсуса это обеспечение надежности в распределенных системах.
Для достижения надежности в распределенных системах необходимы протоколы, которые позволяют системе, как единому целому, функционировать, невзирая на отказ ограниченного числа ее компонентов.
Ключевым моментом здесь является не то, о чем договариваются процессы, а тот факт, что они все должны прийти к одинаковому результату.
Интуитивно понятно, что такое распределенный консенсус, но полезно рассмотреть техническое определение распределенного консенсуса, так как это поможет нам определить, соответствует ли определенный протокол этим требованиям.
Предположим, что у нас есть n узлов, каждый из которых имеет входное значение.
И некоторые из этих узлов неисправны.
Распределенный консенсусный протокол имеет следующие два свойства:
Он должен завершиться с согласованным значением на всех корректных узлах.
И это значение должно быть предложено корректным узлом, то есть оно само должно быть корректным.
Что это означает в контексте Биткойна?
Что это означает в контексте Биткойна?
Чтобы понять, как распределенный консенсус может работать в биткойне, помните, что биткойн это одноранговая система.
Когда Алиса хочет заплатить Бобу, то, что она на самом деле делает, это транслирует транзакцию на все узлы Bitcoin, которые составляют одноранговую сеть.
Кстати, Алиса транслирует транзакцию на все одноранговые узлы Bitcoin, но при этом компьютер Боба может не находится в сети.
Конечно, возможно, что Боб запускает один из узлов в одноранговой сети.
Фактически, если он хочет получить уведомление о том, что эта транзакция действительно произошла и что он получил деньги, запуск узла Бобом был бы логичным.
Тем не менее, нет необходимости, чтобы Боб слушал в сети; запуск узла для Боба не требуется для получения средств.
Биткойны будут его, независимо от того, работает ли он в сети или нет.
Что именно здесь означает, что узлы достигают консенсуса в сети Bitcoin?
Учитывая, что множество пользователей транслируют эти транзакции в сеть, узлы должны согласовать учет, какие именно транзакции были транслированы, и порядок, в котором эти транзакции произошли.
Это приводит к созданию единого глобального журнала для системы.
Вспомним, что в ScroogeCoin для оптимизации мы помещаем транзакции в блоки.
Аналогичным образом, в биткойне мы принимаем консенсус на основе блокчейна.
Таким образом, все узлы в одноранговой сети содержат реестр, состоящий из последовательности блоков, каждый из которых содержит список транзакций, и таким образом они достигают консенсуса.
Кроме того, каждый узел содержит пул неутвержденных транзакций, о которых он слышал, но которые еще не включены в цепочку блоков.
Для этих транзакций консенсус еще не произошел, и поэтому по определению каждый узел может иметь немного отличающуюся версию пула неутвержденных транзакций.
На практике это происходит потому, что одноранговая сеть не идеальна, поэтому некоторые узлы, возможно, слышали о транзакции, о которой другие узлы не слышали.
Как именно узлы достигают консенсуса по блоку?
Один из способов сделать это: через равные промежутки времени, скажем каждые 10 минут, каждый узел в системе предлагает своему пулу неутвержденных транзакций быть следующим блоком.
Затем узлы выполняют некоторый консенсусный протокол, где вход каждого узла является его собственным предложенным блоком.
Теперь, некоторые узлы могут быть вредоносными и помещать недействительные транзакции в свои блоки, но мы можем предположить, что другие узлы будут корректными.
Если консенсусный протокол завершается успешно, в качестве вывода будет выбран валидный блок.
Даже если выбранный блок был предложен только одним узлом, это будет допустимый результат, если блок корректный.
Теперь, может быть какая-то валидная неутвержденная транзакция, которая не была включена в блок, но это не проблема.
Если какая-то транзакция каким-то образом не попала в этот конкретный блок, она может просто подождать и попасть в следующий блок.
Этот подход имеет некоторое сходство с тем, как работает биткойн, но это не совсем так, как на самом деле работает биткоин.
С этим подходом существует ряд технических проблем.