Руководство для разработчиков по Liquid, одному из первых сайдчейнов Биткойн от Blockstream
21 апреля 2022 г.Если вы собираетесь работать над программным обеспечением, используя Liquid, сайдчейн Биткойн, вам необходимо ознакомиться с несколькими концепциями. Эта статья предназначена для разработчиков и основана на презентации, которую я провел для команды Pixelmatic.
:::Информация
Отказ от ответственности: это введение, и оно, очевидно, не охватывает всего. И я намеренно упростил некоторые пояснения. В качестве предварительного условия, если вы не знакомы с Биткойном, вам следует прочитать мое введение в Биткойн [здесь] (https://hackernoon.com/an-essential-introduction-to-bitcoin-for-developers)
==Особая благодарность Sosthene за корректуру моей статьи и за его отзыв! Подпишитесь на него в Твиттере. ==
Давайте начнем сейчас! И чтобы обсудить Liquid, нам нужно сначала обсудить: Элементы.
Что такое элементы?
Это форк Биткойна, расширенный до платформы боковой цепи со следующими функциями:
- Конфиденциальные транзакции
- Выпущенные активы
- Федеративные двухсторонние колышки
- Подписанные блоки
- Дополнительные коды операций
Источник: https://elementsproject.org/
Хорошо, но что такое Liquid?
Итак, Liquid — это экземпляр Elements. Установлен как сайдчейн Биткойн и поддерживается Blockstream. Также:
- Им управляет статическая федерация из 15 членов, но вскоре она становится динамичной.
- Время блокировки настроено на 1 минуту.
- И его основной валютой является L-BTC (жидкий биткойн), результат привязки биткойнов.
Источник: [liquid.net] (https://liquid.net)
Каковы особенности жидкости?
Давайте посмотрим подробнее о различных функциях Liquid/Elements.
📌 Двусторонняя привязка биткойнов
Привязка BTC к Liquid Sidechain
Привязка BTC из основной сети Биткойн к боковой цепи Liquid состоит из внесения BTC в кошелек Liquid Bitcoin, которым управляет Федерация. Затем вам потребуется 102 подтверждения в основной сети Биткойн, чтобы вы могли потребовать причитающуюся вам сумму L-BTC, а затем функционеры предоставляют вам соответствующую сумму в боковой цепи Liquid.
Привязка BTC к Liquid Sidechain
Привязка BTC из боковой цепи Liquid обратно в основную сеть Биткойн состоит в получении BTC от анонимного функционера из его кошелька после предоставления суммы федерацией.
Для разрешения операции требуется 2 подтверждения на Liquid. Затем Федерация подпишет транзакцию из своих 11 из 15 мультиподписных кошельков, которые отправляют запрошенную сумму одному из анонимно описанных функционеров. Наконец, функционер обрабатывает транзакцию, которая предоставит BTC инициатору привязки.
🙈 Конфиденциальные транзакции
- Суммы и активы маскируются с помощью ключа маскировки, но видны UTXO
- Существует мастер-слепой ключ, который генерируется из начального состояния кошелька и выводится по мере необходимости для каждого адреса:
Blinding_private_key:= HMAC_SHA256(key=master_blinding_key, msg=script_pubkey)
где script_pubkey
соответствует определенному неконфиденциальному общедоступному адресу, который вы хотите сделать конфиденциальным
- Это означает, что жидкий кошелек состоит из двух вещей: расширенного закрытого ключа и мастер-слепящего ключа.
- Кроме того, каждый конфиденциальный адрес является неконфиденциальным адресом, скрытым с помощью основного ключа. Таким образом, конфиденциальность — это, по сути, слой, надстроенный над классическими HD-кошельками.
- Обратите внимание, что вы можете сбросить определенный ключ маскирования, чтобы позволить уровню разблокировать его с помощью RPC
unblindrawtransaction
. И как только вы получите ослепляющий ключ, любая транзакция, происходящая с этим конкретным адресом, будет видна на уровне.
К вашему сведению, Blockstream Green имеет функцию открытия esplora с помощью ослепляющих ключей, чтобы позволить определенному уровню видеть конфиденциальную транзакцию в Интернете без ослепления.
Белая книга: [Blockstream] (https://blockstream.com/bitcoin17-final41.pdf)
Технические характеристики: Satoshi Labs
💰 Выпущенные активы
- Один актив на Liquid/Elements имеет следующие атрибуты (все сохранены в блокчейне):
- Идентификатор актива (сгенерированный Liquid)
- Общий запас
- Необязательный ключ перевыпуска
- Необязательный хэш контракта
- Ключи перевыпуска также являются активом, общий запас которого составляет не менее 1 сат.
- L-BTC также является активом, особым, который можно привязывать к входу и выходу: Подробности
- Минимум для выпуска актива:
``` ударить
элементы-cli issueasset 0.00000100 0
Вышеуказанное выдает конфиденциальный актив с общим запасом 100 сатоши и без ключа перевыпуска.
- Контракт определяет метаданные об активе, такие как его имя, тикер, владелец домена, точность и т. д. [Пример токена EXOeu] (https://blockstream.info/liquid/asset/52d77159096eed69c73862a30b0d4012b88cedf92d518f98bc5fc8d34b6c27c9):
```json
"юридическое лицо": {
"домен": "exordium.co"
"issuer_pubkey": "030cff26f9c0d365f090e24917277e23269d7ef5d7f06dec9f09de9255b8950208",
"name": "Токен EXO Европа",
"точность": 0,
"тикер": "EXOeu",
"версия": 0
Перевыпуск
- Для возможности перевыпуска вам нужен только один токен (сатоши) актива перевыпуска.
- Если вы выпустили более одного актива для перевыпуска, это означает, что вы можете поделиться этим активом с другим лицом. Затем каждый, у кого он есть, может перевыпустить актив. Хотя будьте осторожны с этим вариантом использования, потому что повторный выпуск может быть конфиденциальным, тогда почти невозможно проверить, какая часть актива находится в обращении.
Регистрация
- По умолчанию активы не регистрируются в реестре ликвидных активов.
- Это дает вам возможность перевыпустить другой актив, если вы допустили ошибку перед его регистрацией.
- Но после регистрации это необратимо, и кортеж домен + тикер будет занят навсегда.
- Подробная информация о регистрации актива: https://docs.blockstream.com/liquid/developer-guide/proof-of-issuance.html
🪢 Федерация
- Федерация состоит из 15 функционеров
- Они могут предлагать блоки для добавления в блокчейн в циклическом режиме.
- Они совместно подписывают блоки, блоку требуется 11 из 15 подписей, чтобы быть действительным
- Они обрабатывают колышки.
- Когда федерация станет динамичной, общее количество функционеров может динамически меняться
📃 Жидкий интерфейс RPC
Будучи форком Биткойна, мы находим те же RPC, что и его родитель, а также некоторые новые, такие как issueasset
, blindrawtransaction
и другие:
Источник: [elementsproject.org] (https://elementsproject.org/en/doc/0.21.0.0/rpc/)
🧰 Жидкая экосистема
Для пользователей
Белая бумага
Совместимые кошельки
- Зеленый: https://blockstream.com/green/
- СайдСвап: https://sideswap.io/
- Монеты: https://coinos.io/
- Призрак: https://specter.solutions/
- Марина: https://vulpem.com/marina.html
Централизованные биржи
- Битфинекс: https://www.bitfinex.com/
- БТСЭ: https://www.btse.com/
- Рок Трейдинг: https://www.therocktrading.com/en/
DEX/Своп
- Сайдшифт.ai: https://sideshift.ai/
- СайдСвап: https://sideswap.io/
- Биск: https://bisq.network/
- монеты: https://coinos.io/
- TDEX: tdex.network
- Битовая матрица: beta.bitmatrix.app
Исследователи
- blockstream.информация: https://blockstream.info/liquid/
- Liquid.network: https://liquid.network/
Для разработчиков
Документация
- Об элементах: https://elementsproject.org/
- О Liquid Testnet: https://liquidtestnet.com/
Узел
Кэшированный API/Бэкенд
- Blockstream ElectRS: https://github.com/Blockstream/electrs
Исследователь
- Реестр Blockstream: https://blockstream.info/liquid/assets
Библиотеки
- Элементы Vulpem Go: https://github.com/vulpemventures/go-elements
- Vulpem LiquidJS: https://github.com/vulpemventures/liquidjs-lib
- Vulpem LDK: https://github.com/vulpemventures/ldk
- Blockstream GDK: https://github.com/Blockstream/gdk/
Инструменты кошелька
- Преобразователь мнемонического кода: https://iancoleman.io/bip39/
- Генератор BIP32: http://bip32.org/
Стек окружения
Liquid Sidechain Доступные среды
Как и Биткойн, Liquid имеет в вашем распоряжении несколько сред.
Вы можете настроить в своем elements.conf цепочку, которую хотите использовать.
Жидкий регтест (chain=liquidregtest
)
- На самом деле я тебе лгу. Вы можете ввести любую неизвестную цепочку, и она создаст среду Elements с выбранными вами параметрами. Таким образом,
liquidregtest
не является известной цепочкой, она запустит цепочку с этим именем. Но вы можете назвать его по-другому, например, andrewschain, ethereum или как-то еще. Подробности: https://github.com/ElementsProject/elements#modes
- Regtest означает режим регрессионного тестирования. Это режим, который вы используете для локальной разработки.
- При инициализации вашего узла вы можете указать количество бесплатных монет, которые вы создадите и которые будут служить вашей основной валютой (ваши собственные тестовые биткойны).
- Нет привязки, майнинга или федераций. Но вы можете генерировать блоки по запросу.
- Чтобы имитировать производственную среду, вы можете настроить задачу cron для создания блока каждую минуту.
- Все, что вы делаете, остается локальным в вашем узле.
Liquid Testnet (chain=liquidtestnet
)
- Он был недавно развернут.
- Привязки нет, поэтому, если вам нужны монеты, вы можете использовать официальный сборщик здесь: https://liquidtestnet.com/faucet.
- Как и в продакшене, время блока составляет 1 минуту.
- Чтобы настроить для него свой узел Elements, следуйте инструкциям: https://docs.blockstream.com/liquid/node_setup.html#connecting-to-liquid-testnet
- Имеет официальный проводник: https://blockstream.info/liquidtestnet/
- В отличие от regtest, testnet является общедоступным, поэтому имейте это в виду.
- Кроме того, у testnet есть официальный реестр активов: https://blockstream.info/liquidtestnet/assets
Это может быть полезно для отладки выпуска и регистрации активов, чего нельзя сделать с помощью regtest.
Liquid Mainnet (chain=liquidv1
)
- Производственная среда Liquid.
- Как упоминалось ранее, время блока составляет 1 минуту, и Биткойн основной сети может быть привязан к нему и из него.
🎇 Заключение: Введение в Liquid для разработчиков
С этими знаниями у вас должно быть достаточно, чтобы начать работу над Liquid.
Подводя итог, вот мой совет, если вы готовы:
- добавьте платеж в L-BTC или другой актив Liquid на своем веб-сайте электронной коммерции, посмотрите на BTCPay и WooCommerce с плагином Liquid+: https://github.com/ndeet/liquid-assets-for-woocommerce
- создайте жидкий кошелек, вы можете посмотреть на LDK, сделанный на JS, который так хорош для веб-приложений, или на GDK, созданный на C++ и Rust, подходит для настольных или нативных приложений,
- выпустить актив (либо NFT, либо взаимозаменяемые токены), вы можете посмотреть на Blockstream AMP или создать собственное решение с liquidjs или go-elements
- создайте торговую платформу NFT, вы можете раскошелиться Raretoshi
- создайте платформу SWAP/DEFI, просмотрите проекты с открытым исходным кодом coinos: https://github.com/coinos/.
А чтобы углубиться в кроличью нору, вы можете начать поиск по этим темам:
- Кошельки с мультиподписью
- Стержень
- Частично подписанные транзакции
- Атомный обмен
Радоваться, веселиться!
Также опубликовано здесь
Оригинал