MAST постарается улучшить Биткоин

22.10.2016

MAST постарается улучшить Биткоин

Новая разработка от Питера Вюлле — SegWit (от полного Segregated Witness) сможет повысить эффективность Биткоина одновременно по нескольким аспектам. Созданный на его основе проект MAST поможет не только увеличить гибкость смарт-контрактов, но и значительно повысить конфиденциальность и масштабируемость сети Биткоин.

Принципы MAST были придуманы создателями Blockstream, технологии Segregated Witness и BitcoinCore Питером Вюлле, Расселом О’Коннором и Петером Тоддом. А реализовывать данную идею для дальнейшего усовершенствования Биткоина взялся программист Джонсон Ло.

Как и все гениальное, идея решения MAST очень простая, и, тем не менее, она имеет колоссальный потенциал для повышения эффективности криптовалюты.

Merkle tree

Разработка Merkle tree стала одной из составляющих проекта MAST. Такое дерево является криптографическим алгоритмом, осуществляющим хэширования разнообразных данных в общий хэш, называемый корнем Merkle. Как и в случае других хэшей, такой корень не позволяет восстанавливать первоначальные данные из Merkle tree.

Однако подобный прием обладает одним очень важным преимуществом. В том случае, если некоторые данные из Merkle tree известны, его корень поможет подтвердить, что именно эти данные включены в дерево, даже тогда, когда они не полностью известны.
Проиллюстрируем принцип работы Merkle tree на наглядном примере. Алиса создала такое дерево из наборов данных «135» и «246», получив при этом корень Merkle «987». Затем она сообщает Энди, что в дереве находится пакет данных «135». И Энди, которому известен только корень «987» имеет возможность удостовериться в том, что данные «135» действительно находятся в дереве. При этом Энди может не знать, что там же находится и пакет данных «246». Таким образом, в Merkle tree может быть включено большое количество пакетов данных, но ни один из них не может быть восстановлен.

Механизм P2SH

Механизм P2SH, имплементированный в некоторые транзакции уже на протяжении нескольких лет, лег в основу второй составляющей MAST.

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

Блокировка Биткоина проводится при помощи специального скрипта, представляющего собой определенный набор кодов. В типовых транзакциях данные коды включаются в выход. Он содержит инструкции по разблокировке Биткоина в дальнейших транзакциях.
В нетиповых транзакциях, содержащих мультиподписи или дополнительный код CHECKLOCKTIMEVERIFY, применяется более сложный механизм, получивший название «Pay-to-Script-Hash» (или сокращенно P2SH).

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

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

MAST

В проекте MAST разработчики смогли объединить возможности механизма P2SH и перспектив Merkle tree.
Благодаря применению MAST, Биткоины блокируются выходом не в общий скрипт, а в разные. Таким образом, при блокировании можно предусмотреть выполнение различных, а порой и взаимоисключающих, условий. Например, средства могут быть потрачены, если Алиса поставит свою подпись, или Энди с Бобом одновременно поставят свои подписи.

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

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

Механизм расходования Биткоинов аналогичен процессу P2SH. При создании новой транзакции включенные в корень Merkle скрипты разблокируются и интегрируются в транзакцию наряду со скриптами для разблокировки.

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

Ноды сети при помощи включенного в выход корня Merkle подтвердят, что при использовании Merkle tree условия, содержащиеся во включенном скрипте, выполняются. А это даст им основание подтвердить транзакцию.

Достоинства MAST

Использование нового решения в Биткоин-транзакциях позволит улучшить масштабируемость, сделает смарт-контракты более гибкими и повысит конфиденциальность.

Следует отметить, что предлагаемое MAST решение для повышения гибкости смарт-контрактов нельзя считать новым. Уже создан ряд конструкций «и/или», позволяющих добиться той же цели в сочетании с P2SH. Но общепринятый протокол ограничивает действие подобных опций.

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

Конструкции «и/или», применяющие механизм P2SH, разблокируются исключительно после включения всех возможных скриптов, а не только того, который непосредственно применялся. Такой вариант может быть приемлемым для транзакций с большим количеством данных или с высокой стоимостью комиссии. Предоставляемая MAST возможность включать в транзакцию только тот скрипт, который использовался, позволит существенно улучшить масштабируемость. Такой механизм позволяет сократить количество передаваемой информации, которую каждый узел сети должен отправить, подтвердить и сохранить.

Кроме того, благодаря тому, что те скрипты, которые не были выполнены, будут навсегда скрыты, MAST невольно поможет повысить конфиденциальность, что станет его дополнительным преимуществом.

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


Назад