Первый митап в Киеве открыл сооснователь 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 открывает возможность каждому создать свой лайткоин и этот лайткоин будет биткоином, то есть это будет тестнет биткоина с маленькой капитализацией, где можно будет протестировать все перечисленные в данной лекции и многие другие экспериментальные технологии.
@cyberevents, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество опубликованных постов
Вы можете нажать на бейдж, чтобы увидеть свою страницу на Доске Почета.
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Чтобы поддержать вашу работу, я также проголосовал за ваш пост!
Не пропустите прочитать последний пост в Доске почета!