Pull to refresh

Sidechains: насколько многогранны криптовалюты?

Reading time 7 min
Views 8.5K
Original author: Ray Patterson
Публикую перевод статьи «Sidechains: How Many Sides Does a Cryptocurrency Have?» Рэя Паттерсона (Ray Patterson) с сайта Bytecoin.org.

Не существует «самой лучшей» криптовалюты


Bitcoin прекрасен, Bytecoin прекрасен, Doge прекрасен.
Все криптовалюты прекрасны (ну, или давайте на секундочку представим, что это так).

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

Естественно, вы можете просто собрать другую криптовалюту, которая будет сочитать в себе все лучшие «фичи». Что-то вроде стандрата для криптовалют. Погодите… Это мне что-то напоминает.



Конечно, такой подход возможен… теоретически. Но на практике это становится невыполнимым.
Во-первых, идея «самого лучшего» крайне субъективна. Не всем кажется, что функция «demurrage»(плата за простой монетки в кошельке) у Freicoin – довольно полезная функция. Выбор стандарта из всевозможных вариаций Proof of Work также стало было колоссальным испытанием.

Во-вторых, некоторые вещи просто не могут сочетаться в принципе: представьте себя на месте сервиса, который должен принимать во внимание миллион функций всего-навсего ОДНОЙ криптовалюты. Стали бы вы ее принимать? В конце концов, это просто крайне сложно с технической точки зрения — содержать все внедрённые инновации и обновления разных проектов.

Преумножая альткойны


Вот вам иная точка зрения. Представьте себя счастливым разработчиком криптовалюты. Вы изобрели новую функцию и теперь хотите её протестировать в реальных условиях. Вы не можете слепить всё на скорую руку и закинуть на рынок (ваш проект крайне важен для вас), но вы не можете протестить новую «фичу» без реальных пользователей. Что делать?

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

Альтернатива 1 представляет собой создание альткойна с собственным блокчейном (что то типа тестнета для основного проекта).

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

Альтернатива 2 была описана личностью вам (надеюсь) известной, Адамом Бэком, два года назад: так называемый 2-way pegging (в своей работе автор заявляет, что концепция принадлежит Грегори Максвеллу). Идея состоит в том, что можно начать параллельный блокчейн с экспериментальной фичей, в котором при этом не будет никаких монет (пока что). Пользователь может «блокировать» монеты в основном блокчейне (посылая их по специальному адрес-скрипту), и то же самое количество монет появится в параллельной цепочке. Естественно, мы говорим о тех же самых монетах, доступных пользователю. Элегантность данной концепции состоит в том, что второй блокчейн не должен содержать в себе основного: для выпуска N-альткоинов пользователь должен лишь предоставить сжатое доказательство того факта, что N-альткоины были заблокированы в основной цепочке. После этого он может использовать их внутри второго блокчейна со всеми доступными функциями.

Как вернуть монету назад? Таким же образом! Отсюда и «2-way pegging». Пользователь должен заблокировать монеты в тестовой цепочке, и они будут разблокированы в основной. Соотношение для таких переходов всегда 1:1, поэтому общее количество монет в двух цепочках будет постоянным. Таким образом, курс обмена и другие покупательские критерии не изменятся. Технически, это те же самые монеты, только теперь у них есть филиалы во втором блокчейне. Если что-то случается с ними, в связи с их экспериментальной натурой, монеты просто попадут обратно в основную цепочку. А если вы решите внедрить тестируемую функцию в основную цепь, в альтернативной цепи уже просто не будет необходимости (до тех пор, пока вам вновь не приспичит тестировать другую революционную функцию).

Давайте поговорим о Биткойне (вновь)


Как должны выглядеть эти «блокирующие» адрес-скрипты? Если хотите знать детали, то нет ничего проще — давайте рассмотрим их на примере Биткойна. Как вам известно, транзакции включают в себя входы (inputs) и выходы (outputs), которые, формально, являются набором команд-скриптов. Что они описывают?

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

image


Самый распространенный выход (упрощенно) это «ПУБЛИЧНЫЙ КЛЮЧ ‘A’ + ПОДПИСЬ КОМАНДЫ ПОДТВЕРЖДЕНИЯ» и вход “ПОДПИСАТЬСЯ ДАННЫМ КЛЮЧОМ». Если подпись успешно подтверждена ключом, данная часть транзакции признается валидной и все в порядке.

В этом случае, скрипты для нашего кейса с 2-way pegging будут включать в себя следующих действующих лиц:
  • Транзакция TX1, которая блокирует деньги в основной цепочке, чтобы перевести их в альтернативную.
  • ТX2, которая реализует эти монеты в альтернативной цепи и переводит их дальше внтури этой цепи.
  • ТХ3, которая блокирует деньги в альтернативной цепи и возвращает их обратно, в основную
  • ТХ4, которая разблокирует деньги в основном блокчейне.

Итак, действия следующие:
  • Выход ТХ1. OUT: «ПУБЛИЧНЫЙ КЛЮЧ ‘А’ + БЛОКИРУЮЩАЯ КОМАНДА ДЛЯ ЦЕПИ 2 + ПУБЛИЧНЫЙ КЛЮЧ ‘В’ + КОМАНДА ПОДТВЕРЖДЕНИЯ ПОДПИСИ». Теперь деньги заблокированы, и не могут быть потрачены без данных блокировки.
  • Вход ТХ2. IN реализует ТХ1: «SPV-PROOF OUT1 + ПОДПИСЬ КЛЮЧОМ ‘А’». Внутри альтернативной цепи данный скрипт проводится не как обычный вход, который тратит монеты той же цепочки, а именно как перевод из основной цепи.

Что такое SPV-PROOF OUT1?
Это транзакция ТХ1 (содержащая OUT1) и хэши других транзакций из того же блока, в котором содержится ТХ1. То есть, мы можем восстановить древо хэшей для всех транзакций и проверить, действительно ли они исходят из цепи 1(да, мы должны знать хэши блоков из цепи 1, но это – не так уж и много). Этот вид схемы подходит для «легких» кошельков в том числе, когда мы должны проверить, существует ли транзакция, не проверяя весь блокчкейн. Это называется Упрощенным Методом Проверки (Simplified Payment Verification), и данный способ может быть даже найден в статье Сатоши Накамото.

image

  • Теперь у нас есть валидный вход для N-монет которые мы получили из цепи 1 в ТХ2. Они могут быть использованы в цепи 2 до тех пор, пока не придет время вернуть их назад. Таким образом, движение монет до транзакции ТХ3 нас не интересует: они могут сменить владельца, или нет.
  • Выход ТХ3. OUT в альтернативной цепи: «КОМАНДА БЛОКИРОВКИ В ЦЕПИ 2». Как выглядит команда блокировки? К примеру, деньги могут быть просто посланы на публичный ключ вида «000000», или хэш чего-либо. Никто не должен знать правильный приватный ключ. С этого момента, ТХ3. OUT во вторичной цепи становится практически невосстановимым. Технически, мы совершили нечто, что является аналогом Proof of Burn.
  • Вход ТХ4.IN в основной цепи: «ССЫЛКА НА ТХ1.OUT + SPV-BLOCK-PROOF + ПОДПИСЬ КЛЮЧОМ ‘В’»

Мы обращаемся к ТХ1.OUT, поскольку основная цепь понятия не имеет о существовании альтернативной. Это должно выглядеть так, как будто деньги никогда не исчезали: они были отправлены на выход ТХ1.OUT, а теперь они были потрачены на входе TX4.IN. Цепь сравнивает команды подтверждения из скрипта ТХ1.OUT с содержимым в ТХ4.IN, и они сходятся! Мы только должны обучить скрипт парочке новых команд, и это всё.

Красота Sidechains


Теперь мы готовы разобраться со всеми альткойнами. Вы уже должны были догадаться, что мы должны сделать: реализовать 2-way pegging в каждом альткойне и обновить скрипт в основной цепи. Затем мы сможем переводить биткойны в альткойны и наоборот.

Для этого нам необходимо назвать эту идею Sidechains, собрать команду Биткойн-разработчиков и других волонтеров, создать компанию Blockstream и получить $21 миллион средств от инвесторов. Звучит просто.

image


Компания сосредоточена на внедрении описанного механизма и создании некоторого количества sidechains для тестирования экспериментальных идей. Вы можете ознакомиться с этими идеями на данном сайте.

  1. Confidential Transactions: транзакции, в которых скрывается сумма платежей. Для каждой транзакции можно лишь удостовериться, что сумма выходов не превышает сумму входов (то есть что деньги не берутся из воздуха)
  2. Segregated Witness: реструктуризация транзакций для того, чтобы можно было «выкинуть» из старых них ненужные данные: такие, как например, подписи. Ведь если транзакция уже давно в блокчейне – она определенно валидна. Зачем нам тогда ее подпись, верно?
  3. Relative Lock Time: новые способы датировки транзакций. Позволит, например, отправлять деньги, которые «можно потратить через N блоков после включения в блок».
  4. Schnorr Signature Validation: другой алгоритм подписи, более эффективный, чем текущий Bitcoin ECDSA. Кстати, именно подписи Шнорра лежат в основе CryptoNote.
  5. New opcodes: тестирование in the wild новых команд скриптового языка – вещь опасная, ее нужно делать с особой осторожностью. Теперь это можно будет делать «в песочнице».

Основное, что нужно понять о Sidechains — это то, что на практике используются монеты из основной цепи, а не вновь выпущенные.

То есть, если привязать DigitalNote(XDN) к Биткойну, тогда вы получите новый вид входа, который распознает «инородную монету» в системе. Вы можете превратить Биткойны в XDN и пользоваться функционалом XDN (посылать анонимные сообщения, получать проценты и т.д.) с помощью биткойнов. Обменный курс и качвества XDN не будут затронуты. Позже, вы блокируете (разрушаете) биткойны внутри XDN, и это дает вам право разблокировать их внутри блокчейна BTC.

Достижения Blockstream


Весной 2014, через год после описания 2-way pegging Blockstream выпустили статью. Ещё годом позже, недавно, ребята анонсировали свой первый Sidechain, названный «Liquid». Цель его состоит в том, чтобы убедиться в возможности быстрых транзакций между большими финансовыми узлами (биржами и онлайн-кошельками).

Вместо того, чтобы снимать средства с Kraken и переводить их на счет BTCC, пользователь просто нажимает на кнопку в своем профиле. Его биткойны посылаются на адрес Kraken в Liquid-блокчейне, который мгновенно переводит их на адрес BTCC, а BTCC уже отсылает их обратно в блокчейн Биткойна, на собственный Биткойн-кошелек. Технически, это живой аналог банковского клиринга.

Почему данная последовательность действий быстрее, чем просто прямая транзакция с Биткойн-адреса Kraken на Биткойн-адрес BTCC?

В данном случае, вам пришлось бы ждать шесть стандартных подтверждений, что заняло бы примерно час. Но Liquid-цепь — это не совсем публичный блокчейн. Транзакции в нем происходят быстрее, потому что он оперирует между участниками, доверяющими друг другу. То есть, если Kraken заранее обладает некоторым количеством средств в Liquid, то Liquid просто отсылает монеты пользователя через свой собственный блокчейн, вместо сети Биткойн. Единственным требованием является наличие некоторого количества средств в обоих блокчейнах (Биткойн и Liquid), чтобы удовлетворять как заявки на межбиржевые Liquid-переводы, так и заявки на обычное снятие средств.

Очевидно, нечто более простое могло бы быть придумано для подобных целей, но в нашем случае, Liquid – более важная сущность.

Реально существующий функционирующий Sidechain.
Первый, но, надеюсь, не последний.
Tags:
Hubs:
+8
Comments 1
Comments Comments 1

Articles