Back to list
Обзор Skycoin
- Введение в Skycoin
- Инновации и недостатки Bitcoin и существующих блокчейн протоколов
- Инновации Bitcoin
- Главные недостатки Bitcoin
- Предпочтительные параметры систем всеобщего консенсуса для финансовых записей
- Философия безопасности Skycoin
- Прозрачность и безопасность: Obelisk и публичные широковещательные каналы
- Obelisk
- Простой бинарный алгоритм консенсуса: выбор между двумя блоками
- Консенсус на множестве конкурирующих дочерних вариантов
Введение в Skycoin
Skycoin основан на технологии, вводящей новый криптографический примитив, известный под названием “публичный широковещательный канал”. Так же он представляет реализацию нового алгоритма консенсуса Obelisk, который нивелирует проблемы обязательств между пользователями, образовавшихся из-за введения концепций майнига и proof-of-work, лежащих в основе Bitcoin. Именно эти концепции создали ряд уязвимостей последнего. Obelisk не является просто новым алгоримом: создаётся качественная реализация, использующая целый ряд методов, которые и позволяют давать исключительные гарантии безопасности всем участникам.
Инновации и недостатки Bitcoin и существующих блокчейн протоколов
Bitcoin помещает все новые транзакции в блок, который впоследствии добавляется в блокчейн. Каждый участник сети Bitcoin может создавать новые блоки. Следовательно каждый блок имеет одного родителя и одного или многих корректных наследников (дочерних блоков). Цепочки блоков формируют дерево и главная проблема, которую решает Bitcoin, состоит в распространении согласия между всеми узлами сети по поводу того, какие цепочки формируют верное дерево – дерево консенсуса.
Для установления уникального дерева цепочек Bitcoin иcпользует технику под названием Proof-of-Work (PoW). Правильный блок должен содержать значение хэш-функции, записанное под конечным значением. Узлы сети добавляют транзакции в новый блок и пытаются угадать верное значение nonce для этого блока.
Для определения корректного конечного положения цепочек в дереве используется функция. Цепочка, которая обладает наибольшей сложностью и которая потребовала наибольшего количества хэш-операций называется “самой длинной цепочкой” – она и формирует цепочку консенсуса. Понятия “сложности” и “глубины блока” формируют всеобщий порядок среди всех линейных цепочек в дереве и только цепочки, потребовавшие наибольшего количества ресурсов на их вычисление, принимаются как формирующие цепочку консенсуса.
Узлы сети Bitcoin соединяются друг с другом случайным образом и каждый узел передаёт соединённым с ним соседям (пирам) информацию о самой сложной цепочке, которая ему известна. Если один из узлов обладает цепочкой с большей сложностью вычислений, он передаёт соседу всю цепочку последовательно. Получатель обрабатывает цепочку, вычисляя функцию, чтобы удостовериться в её большей сложности и таким образом прийти к необходимости замены своей цепочки консенсуса на полученную. После замены узел-получатель распространяет информацию о новой цепочке между своими соседями. Таким образом, консенсус распространяется по сети и все узлы достигают согласованного состояния.
Bitcoin не предполагает, что за узлами стоят некоторые лица, и не предполагает, что эти лица должны быть честными. Узлы могут обмениваться любыми данными и это не нарушает концепцию консенсуса, так как “сложность” – это величина, которую при желании может независимо измерить каждый.
Инновации Bitcoin
* Блокчейн
Единая структура данных, обладать копией которой может каждый.
* Публичная книга транзакций
Возможность хранения финансовых транзакций в блокчейне.
* Использование PoW и использование сложности для постоянства скорости выработки новых блоков
* Использование хэшей публичных ключей как адресов
Публичные ключи не разглашаются до момента их использования
* Использование значений выводимых средств (outputs) для вычисления баланса
Чтобы заплатить 20$ из выводимых 25$, 20$ отправляются получателю, а 5$ возвращаются отправителю.
* Умножающая функция сложности и глубина блока
Первое использование функции определяет финальный порядок блоков в дереве, а публичный реестр операций решает проблему двойной оплаты, которая существует в традиционных цифровых деньгах.
Главные недостатки Bitcoin
Здесь перечисляются недостатки, решение которых должно быть важнейшей задачей для новых криптовалют. Bitcoin в данном случае оказывается основой новых решений, от которой обязаны отталкиваться свежие разработки. Технологии, на которых основан Skycoin, исправляют серьёзные недочёты Bitcoin и основаны на полной переработке системы консенсуса.
* Консенсусные решения в Bitcoin обратимы и могут быть отменены
Лица или организации, обладающие достаточными хэширующими мощностями, могут откатывать транзакции.
* Bitcoin достигает сетевого консенсуса, но отдельные узлы Bitcoin остаются крайне уязвимыми для злоумышленников, контролирующих маршрутизаторы, через которые ходят пакеты
Злоумышленник, контролирующий сетевое оборудование имеет абсолютный контроль над восприятием системы узлами и может произвольным образом влиять на принятие решений консенсуса внутри подсети.
* Биржи, торгующие Bitcoin, стали крайне уязвимы для атак
Опытные хакеры способны производить атаки типа 51%, покупая и продавая монеты других систем на Bitcoin биржах, и тем самым приводя их в состояние неплатёжеспособности.
* Банки и игорные сайты стали уязвимы к атакам 51%
* Со временем, покупка возможностей его взлома и атак на сети становится более экономически привлекательной
В будущем успешные атаки на Bitcoin смогут привести к убыткам в сотни миллионов долларов для добросовестных обладателей монет и соответствующему обогащению взломщиков.
* Регионы со строгим контролем над капиталом, а также крупные конкуренты, смогут осуществлять массированный непосредственный контроль сетей, преследуя свои финансовые интересы
Подобные организации могут легко осилить стоимость серьёзных атак на сети, подрывая тем самым безопасность Bitcoin
* Сервисы, предоставляющие хэширующие мощности в “облаке” или сдающие в аренду стороннюю инфраструктуру для этого, становятся очень успешны
Большое количество крупных вычислительных массивов уже имеет возможность сдачи в аренду, в том числе с целью произведения атак грубой силой
* Хакеры способны использовать множество дыр в безопасности роутеров и сетевого оборудования для кражи криптовалюты из банков и с бирж
Атакующий может получить контроль над пирами, подключающимися к узлу Bitcoin, обеспечивая его подключение к ним. Осуществляя такой контроль, он, например, может инициировать депозитную транзакцию на неконсенсусной цепочке банка, заставив банк одобрить отменяющую транзакцию, которую затем транслирует во внешнюю сеть.
* Bitcoin не может обеспечивать безопасность по низкой цене
Сеть Bitcoin потребляет огромные энергетические ресурсы, рост которых идёт по экспоненте. Безопасность Bitcoin намеренно связана с огромными энергетическими затратами. Из-за того, что она опирается на необходимость обеспечивать децентрализованную выработку основной части хэшей, затраты на работу сети постоянно растут. Для обхода систем безопасности хорошо спроектированной системы должны требоваться в 1000 раз большие расходы, чем на её обслуживание. В случае Bitcoin это соотношение практически один к одному. Помимо простой нерациональности расходов, содержание такой системы ещё и экологически безответственно.
* Bitcoin по своей сути не может безопасно снизить время на проведение транзакций
Транзакция Bitcoin требует в среднем 10 минут на то, чтобы быть включённой в блок. Большая безопасность этой операции требует ещё большего времени
Предпочтительные параметры систем всеобщего консенсуса для финансовых записей
Вот параметры, по которым можно усовершенствовать Bitcoin:
* Никаких двойных расходов
Сразу после проведения транзакции её отмена должна становиться невозможной в рамках консенсуса. Консенсус должен быть невозвратным настолько, насколько возможно.
* Эффективность
Стоимость содержания исключительно безопасного финансового журнала должна быть почти бесплатной.
* Скорость
Система должна допускать проведение транзакций за секунды.
* Прозрачность
Необходимо обеспечить простую возможность для аудита и обнаружения скомпрометированных узлов сети.
* Защита от атак на маршрутизаторы
Узлы должна иметь возможность определить, что их консенсус отличается от консенсуса остальной сети
Некоторые параметры безопасности системы должны оставаться неизменными даже в случае, если большая часть узлов сети скомпрометирована или лица, управляющие узлами, находятся в сговоре.
Многие проблемы безопасности Bitcoin на самом фундаментальном уровне проистекают из проблем обязательств, рождённых концепциями Proof of Work и майнига. Эти недостатки являются отражением известной “проблемы византийских генералов”. Для участников сети существует стимул манипулировать внутренними процессами верификации при помощи различных методик взлома и подкупа. Взломщики будут использовать такие пути атак как манипулирование системными часами, взлом роутеров. Они будут наводнять сеть сотнями тысяч ботов, искать коллизии для значений хэш-функций и подделывать цифровые подписи.
Действительно безопасная система должна иметь защиту не только от известных видов атак, но и быть достаточно устойчивой и гибкой, чтобы противостоять ещё неизвестным типам угроз. Некоторые ошибки в алгоритмах Bitcon могут быть устранены: например можно повысить надёжность цифровых подписей. Другие же недостатки настолько фундаментальны, что не могут быть устранены без создания абсолютно нового фреймворка. Примерами таких недостатков является упование на Proof of Work и майнинг у Bitcoin.
Философия безопасности Skycoin
Безопасность – это процесс постоянного нахождения угроз и заделки брешей в системе. Хорошая система обеспечивает “защиту изнутри”, имеет множество независимых подсистем и способна безболезненно пережить полный крах каждой из них. Для обеспечения хорошего уровня безопасности, от разработчиков требуется чётко различать истинные опасности и мелкие неприятности.
Очевидно, что ни одна система не может похвастаться устранением всех возможных угроз и при этом решить все задачи, перечисленные выше. В этом смысле Skycoin – это новое слово в среде криптографических технологий. Он предлагает многоуровневое решение вопросов безопасности и позволяет разным своим подсистемам давать пользователю большие и более точные гарантии защиты их интересов. Безопасность Skycoin направлена как на решение существенных проблем, подобных тем, с которыми столкнулся Bitcoin, так и на защиту пользователей от угроз, появляющихся каждый день. Skycoin сосредоточен на решении всех тех проблем, которые способны нанести наибольший ущерб пользователям, участвующим учреждениям и прочим заинтересованным сторонам. Всё это требует тотальной переработки решений Bitcoin во всех его частях, начиная от генерации кошельков и заканчивая консенсусом в представлении цепочек блоков и инновациями в ряде других областей.
Большинство недостатков Bitcoin связано больше с просчётами в дизайне, недружелюбностью к пользователю и ошибками конечных пользователей, чем со сложными математически просчитанными техническими атаками. Skycoin должен позаботиться как о существующих угрозах, так и о качественной поддержке ежедневного использования простыми пользователями, с чем у Bitcoin серьёзные проблемы. Недружелюбность к пользователю и сам дизайн системы привели к тому, что пользователи стали жертвовать своей безопасностью, при том что внутри их небезопасных кошельков легко путешествуют миллионы долларов. Несмотря на регулярные крупные кражи, о которых почти каждый день сообщают СМИ, на текущий момент гораздо большее число биткойнов было потеряно просто из-за недостатков в юзабилити этой валюты, чем от намеренного воровства.
Как минимум половина всех существующих биткойнов никогда не перемещались со своих начальных адресов и никогда не будут перемещены просто потому, что они потеряны и не могут быть восстановлены из испорченных файлов кошельков. Иногда файлы кошельков просто удалялись из-за непонимания принципов их работы. В бытность существования биржи Mt.Gox произошёл случай обнаружения бесхозного кошелька с 200000 биткойнами. Вначале этот кошелёк был проигнорирован и был бы стёрт, если бы не счастливая случайность. Кошельки часто расцениваются как пустые, так как они были созданы старой версией ПО, а новая не может их загрузить. Таким образом большинство проблем безопасности Bitcoin рождается на уровне удобства пользования, конечных пользователей и уровне защиты обменников и бирж.
Оставшаяся часть этого раздела описывает некоторые новые способы разрешения проблем безопасности на сетевом уровне, которые мы создали совместно с партнёрами. Эти способы призваны сделать Skycoin безопасней всех предыдущих решений.
В процессе работы над нашей системой мы получили математические доказательства достижения консенсуса, который обладает именно теми свойствами, которых мы добивались при нормальных сетевых условиях. Плюс ко всемы мы создали новые впечатляющие структуры данных, которые не были ранее представлены ни в одном программном средстве или криптовалюте. На данный момент мы готовим систему к запуску. Процесс разработки Skycoin итеративный. В процессе работы мы будем производить изменения, совершенствовать и оттачивать наш продукт до мелочей, решать возникающие проблемы и обрабатывать отзывы пользователей.
Прозрачность и безопасность: Obelisk и публичные широковещательные каналы
Для решения проблемы обязательств Bitcoin, технология, лежащая в основе системы Skycoin, реализует блокчейн в форме публичных широковещательных каналов. Каждый пользователь может прочитать цепочку, но только владелец может выпускать блоки для неё. Чтобы оставаться верным для цепочки владельца, каждый её блок должен быть подписан его приватным ключом. Каждый узел в этой системе консенсуса (Obelisk) имеет персональный блокчейн, который и является ключевым примитивом всей системы Obelisk.
Публичный широковещательный канал накладывает ряд ограничений на своё использование:
* Публикацию блока нельзя откатить
Блоки реплицируются от пользователя к пользователю среди всех подписчиков. Как только блок был опубликован, он размазывается по всем участникам. Придётся уничтожить всех участников, которые получили блок, чтобы окончательно стереть его.
* Узел не может опубликовать другую версию одного из предыдущих блоков не будучи уличённым в подмене
Блоки нумеруются и будет обнаружено, если узел подписал два различных блока с одним и тем же последовательным номером.
* Узел не может указать время подписания блока (отпечаток) задним числом без задержки публикации блока
Временные отпечатки должны сохранять ту же последовательность, что и порядок номеров блоков.
* Блок в середине цепочки не может быть изменён без приведения всех идущих за ним в некорректное состояние
В цепочке хэшей каждый заголовок блока содержит хэш предыдущего блока
Obelisk
Каждый узел системы Obelisk (узел консенсуса Skycoin) обладает публичным ключом (идентификатором) и своей цепочкой блоков (публичный широковещательный канал). Консенсусные решения и коммуникация производятся внутри собственных блокчейнов каждого из узлов – общедоступных записей всего что делают узлы. Это позволяет сообществу проводить аудит любых узлов и их сочетаний и обнаруживать существование их сговора или других попыток обмана системы. Такая открытость даёт участникам инструмент для идентификации узлов, участвующих в атаках на сеть и делает доступными все данные о том, какие решения были приняты внутри сети и кто был их инициатором.
Каждый узел имеет список узлов, на которые он подписан. Узлы с большим числом подписчиков считаются обладающими большим рейтингом доверия и имеют большее влияние на сеть. Если сообщество не доверяет узлам, представляющим их, или чувствует, что где-то в сети появилась слишком большая концентрация влияния (или его наоборот недостаточно), оно способно коллективно перераспределить баланс сил, сменив свои доверенные связи с другими узлами.
Связи по подписке могут быть выбраны случайно и/или быть сформированы через доверенную сеть (можно подписаться только на узлы людей, которым доверяешь).
Когда узел получает новый блок из цепочки узла, на который подписан, он публикует хэш блока, который был опубликован. Это момент публичного подтверждения получения блока. Каждый блок имеет временной отпечаток и содержит перекрёстные ссылки с блоками из других цепочек. Создаётся плотная взаимосвязанная цепочка подтверждений блоков. Полученные цепочки устанавливают отношения взаимосвязей и могут использоваться как распределённая система временных оттисков (о чём рассказано в следующем разделе). В результате сеть помогает доказывать, что некоторые данные не существовали, не были опубликованы или определять, что некоторые узлы не были активны или отключены в заданном временном интервале.
Нынешняя версия консенсуса Obelisk основана на рандомизированном алгоритме консенсуса под авторством Майкла Бен-Ора.
Атака Сибиллы внутри случайного графа (худший случай) позволяет узлам, участвующим в этой атаке, контролировать консенсус, но такие узлы не способны отменять транзакции, тем самым устраняется главный экономический стимул атаки на сеть. В случае реальных сетей, сопротивление подобной атаке очень существенно, а запуск скомпрометированного узла достаточно накладен с точки зрения его пропускной способности. Это делает большие ботнеты на реальных сетях практически невозможными.
Отношения доверия недостаточны, а потому могут быть отменены. В случае атаки, сеть реагирует отсоединением от менее доверенных узлов и сжимается до небольшого ядра доверенных узлов. Публичные цепочки блокчейнов всех узлов позволяют легко определить, какие из них участвуют в атаке. После определения атакующих узлов, здоровые узлы разрывают с ними связи, тем самым уменьшая их влияние. Таким образом, главные преимущества сети Skycoin состоят в следующем:
- Консенсус Skycoin демократичен, а его узлы поддерживаются сообществом
- Консенсус узлов Skycoin полностью публичен
- Каждый узел подотчётен сообществу и доступен для аудита третьей стороной
- Институт влияния внутри консенсуса Skycoin демократичен и прозрачен (но допускает неравенство)
Простой бинарный алгоритм консенсуса: выбор между двумя блоками
Каждое событие выбора это пара хэшей (A, B). A - это хэш родителя блока, B – это хэш самого блока. Каждый узел голосует за блок, который по его мнению должен стать блоком консенсуса. Если 40% узлов, на которые он подписан, выбирают того же кандидата для консенсуса, узел переводит свой консенсус на этот блок. Узел перебирает кандидатов на консенсус случайным образом, пока не будет достигнут консенсусный блок.
Консенсус на множестве конкурирующих дочерних вариантов
Более сложная система публикует тройки (A, B, P), где P – это значение от 0 до 1. P в сумме для всех наследников блока должны дать 1. Такой способ описания конкурирующего консенсуса позволяет принимать решения на многих поддеревьях цепочек.
Если большинство узлов в сети честные, они сойдутся в одном и том же консенсусе.
Skycoin так же имеет ограниченную версию Proof of Stake: мы склоняем голосование в пользу блоков с большей транзакционной издержкой.
Если есть только два возможных выбора по консенсусу для заданного родителя, и каждый из них проводит вашу транзакцию, то транзакция успешно проводится вне зависимости от того, какой из блоков выберет сеть. Вероятность отката транзакции предыдущих решений консенсуса падает экспоненциально относительно глубины блока.