Мультисиговые адреса биткоина

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

Биткоин-адреса

Биткойн-адрес может быть голым открытым ключом (P2PK), но чаще всего это хэш открытого ключа (P2PKH) или хэш блокирующего скрипта (P2SH). Наиболее распространенный тип биткоин-адреса получается путем криптографического хэширования открытого ключа в формате, который легко копировать и передавать, можно проверить на ошибки и верифицировать с помощью кодировки Base58. Этот тип адреса имеет префикс 1 и представляет собой хеширование с оплатой до открытого ключа (P2PKH).

Биткойн-адреса также могут быть получены из скриптов вместо открытых ключей. Адреса этой категории имеют префикс 3, обозначающий адрес хэша с оплатой по скриптам (P2SH), обычно называемый мультисиг-адресом. Существуют также биткоин-адреса, которые представляют собой Segwit апгрейд в Биткоине, и состоят из основных типов хэша с открытым ключом (P2WPKH) и хэша со скриптом (P2WSH). Они имеют префикс bc1 и длиннее, чем первые два типа, поскольку используют кодировку bech32.

Недавно у нас появились адреса, представляющие собой обновление Taproot. Адреса Pay-to-taproot (P2TR) начинаются с bc1p и используют кодировку bech32m. При использовании маршрута траты ключей, P2TR позволяет многоключевым схемам, таким как 3-of-5, выглядеть в сети биткоина так же, как и односторонний адрес pay-to-public key, что дает хорошие преимущества в плане конфиденциальности. Адреса P2TR — это голые открытые ключи, как P2PK.

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

Мультисиговые адреса Биткойн

Для адресов, полученных на основе более чем одного открытого ключа, в зависимости от количества минимальных подписей, установленных при создании адреса, необходимо предоставить их для разблокирования таких UTXO. Такие типы адресов называются мультисиг-адресами. Это похоже на корпоративный/совместный банковский счет, который требует более одной подписи для подписания чека на снятие средств со счета.

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

Мультисиговые транзакции имеют форму m-of-n, где m — количество подписей, необходимых для расходования средств, а n — количество максимальных открытых ключей. Например, для транзакции «2 из 3» потребуется как минимум 2 подписи из возможных 3. В следующем разделе мы рассмотрим, как можно сгенерировать адрес с несколькими подписями на основе 3 открытых ключей и как установить, что для разблокировки средств, отправленных на этот адрес, необходимо предоставить как минимум два из 3 возможных закрытых ключей.

Как сгенерировать 2 из 3 мультисиговых биткоин-адресов

Мы будем использовать демон bitcoin-core для создания P2SH 2of-3 multi-sig адреса. Вот ссылка на то, как его настроить. Убедитесь, что bitcoin core запущен на testnet. Вы можете запустить демон, выполнив команду bitcoind.

Мы будем использовать эту библиотеку для генерации пар закрытых и открытых ключей, чтобы использовать их для генерации наших адресов. Следуйте инструкциям в readme, чтобы сгенерировать 3 пары закрытых и открытых ключей:
Используя библиотеку, мы получили следующие открытые ключи в шестнадцатеричном формате:

"03150176a55b6d77eec5740c1f87f434cf416d5bbde1704bd816288a4466afb7bb"
"02c3b2d3baf90e559346895b43253407fbb345c146910837b61f301f4c9a7edfe5"
"02c6e3e94f7ff77457da9e76cf0779ca7c1e8575db064a2ea55400e6a9d8190225"
Войти в полноэкранный режим Выход из полноэкранного режима

Теперь мы создадим наш мультисиг-адрес с помощью вышеуказанных открытых ключей.
Используя bitcoin-cli, сгенерируем мультисиг-адрес следующим образом:

bitcoin-cli -testnet createmultisig 2 '["03150176a55b6d77eec5740c1f87f434cf416d5bbde1704bd816288a4466afb7bb", "02c3b2d3baf90e559346895b43253407fbb345c146910837b61f301f4c9a7edfe5", "02c6e3e94f7ff77457da9e76cf0779ca7c1e8575db064a2ea55400e6a9d8190225"]'

Результат выполнения вышеприведенной команды показан на титульном изображении.
Параметр 2 указывает bitcoind создать адрес, требующий подписи как минимум двух закрытых ключей. Тот факт, что мы используем три открытых ключа, делает его мультисигма-адресом 2of-3. Вы можете использовать любое количество ключей, если оно равно или больше параметра «minimum required to sign».

Вы можете убедиться, что сгенерированный адрес действителен, используя команду:

bitcoin-cli -testnet validateaddress '2MyxShnGQ5NifGb8CHYrtmzosRySxZ9pZo5'

Результат выполнения команды см. на титульном изображении.
Стоит отметить, что сгенерированный нами адрес P2SH начинается с 2, а не с 3, как было указано ранее, поскольку мы используем testnet (альтернативная цепочка для тестирования).

Вы можете отправить монеты testnet на сгенерированный адрес и построить транзакцию, чтобы потратить UTXO, используя пары ключей. Это выходит за рамки данной статьи. Подробнее об адресах биткоина и транзакциях вы можете прочитать в главе 4 книги Mastering Bitcoin Андреаса Антонопулоса. Спасибо за прочтение.

Оцените статью
Procodings.ru
Добавить комментарий