Допустим, у нас есть мультиподписной адрес 2 из 2, с которого мы хотим провести транзакцию, поэтому транзакция должна быть подписана обоими закрытыми ключами.
Теперь предположим, что у нас есть транзакция с двумя входами, поэтому транзакция снова должна быть подписана обоими закрытыми ключами входов.
Так как же эти два отличаются в реализации? Даже на концептуальном уровне? Эти процедуры одинаковы?
Это довольно разные вещи и представляют очень разные варианты использования.
Представьте, что вы глава комитета по планированию вечеринки, и у вас есть два работника (А и Б), которые помогают вам покупать товары для вечеринки. Вам дается 1 биткойн для финансирования вечеринки.
У вас есть два варианта.
Подвести итоги:
Тратить 2/2 мультиподписного вывода:
Тратит один ранее UTXO и требует два ключа для подписи.
Тратить несколько входов:
Тратит несколько предыдущих UTXO и требует, чтобы каждый вход был подписан отдельно.
Что касается подписания этих типов транзакций, то их нужно делать немного по-другому.
При подписании ввода, который тратит 2/2 мультиподписи на выходе, транзакция подписывается двумя ключами, и они кодируются в один и тот же scriptSig
вход. Транзакция становится действительной только тогда, когда оба ключа подписаны действительными подписями.
Например, предположим, что scriptPubKey предыдущего мультиподписного вывода 2/2:
OP_2 {pubkey1} {pubkey2} OP_2 OP_CHECKMULTISIG
scriptSig, чтобы потратить этот вывод, будет:
{pubkey1's signature} {pubkey2's signature}
Обратите внимание, как они находятся в scriptSig одного и того же входа.
При подписании двух разных входных данных, предполагая, что их предыдущие scriptPubKeys выглядят примерно так:
{pubkey1} OP_CHECKSIG
и
{pubkey2} OP_CHECKSIG
Тогда два входа будут иметь scripSig в этом формате (соответственно):
{pubkey1 signature}
и
{pubkey2 signature}
ПРИМЕЧАНИЕ. Я использовал простой scriptPubKey, чтобы попытаться понять, как он работает в целом, но вам, вероятно, следует использовать мультиподписной адрес Pay-to-script-hash и адреса pay-to-pubkey-hash вместо необработанных multisig и pay -to-pubkey scriptPubKeys, которые я использовал в этом примере.
Транзакция от a Multisig Bitcoin address
(начиная с 3) требует подписи от N из M
threshold
), чья цифровая подпись требуется для подписания действительной транзакции.Тем не менее, Multi input transaction
это тип транзакции, при которой ввод включает UTXO с 1 или более стандартных или биткойн-адресов с мультиподписью.
Могут возникнуть следующие состояния
Стандартный биткойн-адрес подписывает транзакцию с 1 входом
Стандартный биткойн-адрес подписывает транзакцию с более чем 1 входом (транзакция с несколькими входами)
Биткойн-адрес Multisig подписывает транзакцию с 1 входом
Биткойн-адрес Multisig подписывает транзакцию с более чем 1 входом (транзакция с несколькими входами)
До этого момента ALL UTXO
принадлежат подписавшему транзакцию. Теперь транзакции будут содержать UTXO для более чем 1 биткойн-адреса.
Два стандартных биткойн-адреса подписывают транзакцию с 1 UTXO для каждого из них (транзакция с несколькими входами)
Бывший. Транзакция включает 2 UTXO для 2 отдельных стандартных биткойн-адресов, чтобы создать действительную транзакцию, адрес A должен подписать UTXO(A), а адрес B подписать UTXO(B). Транзакция теперь может иметь 1 выход, что делает стоимость комиссий намного ниже, чем в сценарии, где для каждого биткойн-адреса создается отдельная транзакция.
Два биткойн-адреса Multisig подписывают транзакцию с 1 UTXO для каждого из них (транзакция с несколькими входами)
Бывший. Транзакция включает 2 UTXO для 2 отдельных биткойн-адресов с мультиподписью. Для создания действительной транзакции порог адреса A должен быть подписан UTXO (A), а порог адреса B — UTXO (B).
Бывший. Транзакция состоит из UTXO для 1 или более стандартных биткойн-адресов и 1 или более биткойн-адресов с мультиподписью.
Ник Оделл
морсекодер