Script-SegWit-Grin. Спикер: Андрей Соболь
Первый митап в Киеве открыл сооснователь Pandora Boxchain Андрей Соболь с темой, в которой обозначил основные векторы развития и усовершенствования экосистемы Биткоин.
В данной лекции спикер осветит следующие пункты
Script
Script - язык программирования встроенный в Биткоин с момента создания экосистемы.
Отметим, что Script является прототипом более раннего языка Forth, который работает со стеком.
Стек - это структура данных, организованная списком по принципу «последним пришёл — первым вышел».
Пример программы на языке Script:
Это стандартный набор действий для выплаты определенному адресу.
В сети Биткоин существует система входов и выходов. Каждый биткоин создается путем coinbase транзакцией в каждом блоке. Полученные биткоины являются не потраченным выходами и входами для следующей транзакции.
Команда OP_DUP дублирует информацию, находящуюся в стеке
PO_HASH160 - считает хеш верхнего элемента стека и возвращает в стек хеш
OP_EQUALVERIFY - сравнивает два последних элемента в стеке - хеш и publicKeyHash
OP_CHECKSIG - подпись из стека
если выполняются условия OP_EQUALVERIFY и OP_CHECKSIG - пользователь может потратить денежные средства.
Atomic Swap
Язык программирования Script не является Тьюринг полным и может выполнять определенный набор команд и опкодов. Но, есть возможность использования Atomic Swap.
Принцип работы Atomic Swap
Два пользователя, владеющие разными коинами (например биткоином и эфиром), хотят совершить обмен. Для данной операции пользователи договариваются о курсе и создают два смарт-контракта в двух цепочках (Эфириум и Биткоин). В Эфириуме функционирует Тьюринг полный язык програмирования EVM, который позволяет пользоваться широким набором операций. В Биткоин этот набор ограничен, но можно написать следующий смарт-контракт:
Существует два варианта получения денежных средств со смарт-контракта: OP_IF и OP_ELSE.
Первый вариант:
Пользователь может забрать денежные средства, если предоставит хеш секретной фразы
Второй вариант:
locktime и CHECKLOCKTIMEVERIFY означает, что через некоторое время тот, кто предоставит хеш и подпись сможет забрать денежные средства
Создавая два смарт-контракта, пользователи обмениваются криптографическими примитивами таким образом, что транзакция, которая разблокирует деньги на Эфириуме, является секретной фразой, которая разблокирует деньги в цепочке Биткоин.
SegWit
SegWit - это обновление протокола Биткоин по структуре транзакций со следующими свойствами:
- Transaction Malleability
Дает возможность изменить транзакцию, поменяв ее ID
- The Segregated Witness Merkle Root
Merkle Root структура данных, которая позволяет оставить блок биткоина неизменным. SegWit выступает второй частью блока
- Softfork
SegWit реализован с помощью Softfork
- Transaction-weight
Вводится новое понятие размера транзакции transaction-weight = 4*old + 1 witness - старый размер умножается на 4 и новая часть транзакции умножается на 1, таким образом получаются абстрактные баллы, с помощью которых можно оценить вероятность вхождения новой транзакции в блок биткоина.
Lightning Network
Lightning Network позволяет создавать каналы между пользователями, таким образом получается сеть из каналов, которая не имеет центр и единую точку отказа. По закрытию канала данные записываются в блокчейн Биткоин.
Но, пользователи могут действовать только в рамках сумм, которые заблокированы у них в сети Lightning Network.
Lightning Network - один из первых протоколов, который позволяет совершать транзакции вне блокчейна и платить небольшую комиссию.
Принцип работы Lightning Network
Открывая канал, пользователь создает транзакцию с двумя выходами. Один выход (часть средств) идет другому пользователю в транзакции, вторая часть имеет следующий набор условий:
Существует ключ (секрет), который открывает доступ к средствам в любой момент и хранит его пользователь, отправляющий транзакцию. С помощью данного ключа и подписи получатель может разблокировать средства.
Более сложный код, который функционирует когда пользователь хочет отправить транзакцию через другого пользователя:
Более подробную информацию можно узнать из документации Lightning Network.
Merkelized Abstract Syntax Tree
Merkelized Abstract Syntax Tree позволяет кодировать части IF и ELSE в отдельные скрипты, тем самым скрывая часть скриптов
Schnorr signatures
Schnorr signatures (Подписи Шнорра) реализуются с помощью Софтфорка. Множество мелких выходов объединяются в одну транзакцию и подписываются одной подписью, что экономит место в блоке и стимулирует использование CoinJoin.
Confidential transactions
Конфиденциальные транзакции скрывает не отправителя и получателя, а сумму транзакции.
В классических конфиденциальные транзакциях существуют лимиты:
2^32 - возможные вариации сумм денежных средств
Между минимальным и максимальным значениями, включая данные значения, суммы хорошо шифруются.
Для достижения результата используется гомоморфное шифрование (Homomorphic Encryption) в частности Доказательство с нулевым разглашением (Zero-knowledge proof), что позволяет совершать действия над математическими цифрами, не разглашая данные цифры, с возможностью доказать, что совершенные действия были произведены.
Конфиденциальные транзакции еще не реализованы в Биткоин, но уже используются в проекте Elements.
Bulletproofs
Bulletproofs не требует доверительной выборки. Также он быстрее и меньше, чем Rangeproofs, который используется в конфиденциальных транзакциях.
Mimblewimble
Mimblewimble технология со следующими отличительными чертами:
- Нет языка Script
- Нет подписей
- Нет транзакций
Mimblewimble - это микс Bulletproofs, Confidential transaction и Schnorr signatures.
Принцип работы Mimblewimble заключается в том, что существует состояние (список не потраченных выходов) и каждый новый блок вносит изменения в этот массив данных. Каждый новый блок является цельной транзакцией со входом и выходом.
Mimblewimble реализуется как проект Grin.
Drivechain
Drivechain модифицирует подход к сайдчейнам. В сайдченах используется SPV (Simple Payment Verification), что крайне ненадежно.
Концепция Drivechain состоит в том, что майнер с помощью hash power может перемещать средства с одного блокчейна в другой.
Также Drivechain открывает возможность каждому создать свой лайткоин и этот лайткоин будет биткоином, то есть это будет тестнет биткоина с маленькой капитализацией, где можно будет протестировать все перечисленные в данной лекции и многие другие экспериментальные технологии.
экрана 2018-06-04 в 22.11.11.png]()