Несколько адресов в одном UTXO

RPC-метод decoderawtransaction клиента Bitcoin-QT предоставляет объект JSON с массивом адресов в каждом UTXO. Например, когда я запускаю:

decoderawtransaction "01000000010fb72b5d299f095c3d3abc2130f20ce59d0ed08d56b3f247d6ae554f200eb561010000006a473044022073717edfcde0200f8aca33b6ff4f60a4aa84c6692cd1713876d94f3f19013f6d022057610074eef8285082cb9943913040031869cc98bc71642a3dc5e085a19a1805012103f071bc0f54b95e9049ba515f19cbfb647605a9f1d2f002b4e70ec548af5fbf5bffffffff02b02bc37d010000001976a9148037b2fd4114347070236b37f792966ade2bc4a688acd0ce4101000000001976a914336e5078d05a350fb5e6cdf8fc15d826e625423888ac00000000"

Я получаю следующий JSON:

{  
  ...
  "vout":[  
    {  
      "value":64.04910000,
      "n":0,
      "scriptPubKey":{  
        "asm":"OP_DUP OP_HASH160 8037b2fd4114347070236b37f792966ade2bc4a6 OP_EQUALVERIFY OP_CHECKSIG",
        "hex":"76a9148037b2fd4114347070236b37f792966ade2bc4a688ac",
        "reqSigs":1,
        "type":"pubkeyhash",
        "addresses":[  
          "1CgxDbrb9d18DFvQn6DW8ij3c6ARpipehU"
        ]
      }
    }
  ]
  ...
}

Здесь вы можете видеть, что «адреса» — это массив. Почему это массив? Может ли один UTXO отправлять на несколько адресов? Я знаю, что адреса P2SH могут платить на адрес, который можно использовать с использованием нескольких адресов, но меня интересует отправка на несколько адресов без использования адресов P2SH. Каким будет формат scriptSig/scriptPubKey для этого?

Кроме того, если у вас есть только адрес P2SH, можете ли вы определить требования для выкупа с этого адреса?

Спасибо!

Ответы (2)

Адрес — это сокращенная запись для определенного сценария. Поскольку выход транзакции содержит ровно один скрипт, он имеет не более одного адреса (хотя возможно, что скрипт не соответствует конкретному адресу).

Однако по историческим причинам адрес (обычный pay-to-pubkey-hash) также используется для ссылки на ключи (путем предоставления адреса, который будет соответствовать сценарию, оплачивающему хэш этого ключа). Массив, который decoderawtransactionи gettransactionвозвращает как «адреса», является примером этого. Для мультиподписного адреса (не P2SH), если это сценарий с мультиподписью m-из-n, он декодирует сценарий и выдает ключи , которым он платит (в адресной нотации).

Интересно, спасибо Питер. Итак, этот список кажется просто списком всех адресов, которые использовались в «scriptPubKey», верно? И если используется только один адрес, то монеты можно рассматривать как зачисление на баланс этого адреса. Но если в сценарии используется более одного адреса (например, в необработанной мультиподписной транзакции без P2SH), то сценарий не соответствует конкретному адресу и не может рассматриваться как зачисление баланса любого из включенных адресов. Все это звучит правильно?
Зачисление баланса (некоторая совокупность включенных ключей ). Перечисленные «адреса» на самом деле не являются адресами — просто ключи, отформатированные как адрес, который был бы, если бы это был единственный ключ.
Спасибо, Питер. Знаете ли вы какие-либо примеры транзакций, в которых несколько адресов (ключей) возвращались бы в массиве JSON «адреса»? Я ищу ссылку на транзакцию в обозревателе блоков, который использует необработанную мультиподпись, но не могу ее найти.
Я нашел один здесь . Но когда я декодирую эту транзакцию, используя свой собственный кошелек QT (консоль отладки), «тип» scriptPubKey просто нестандартен, и нет массива адресов. Будет ли когда-нибудь иметь место более одного адреса в массиве «адресов»? Я не могу найти случай с более чем одним. Выходы, которые оплачиваются по адресам P2SH, также имеют только один адрес в массиве «адреса».
Я только что нашел эту транзакцию , которая проливает свет на меня. Если это n из m необработанных мультиподписных адресов, все m адресов задаются в массиве scriptPubKey.

Может ли один UTXO отправлять на несколько адресов?

Нет. UTXO это пункт назначения/адрес/выход/scriptPubKey/...

Я знаю, что адреса P2SH могут платить на несколько адресов

Неправильный. Выходы P2SH могут быть погашены владельцами нескольких (даже ни одного) закрытых ключей. P2SH-выход не разделяет средства.

P2SH-адрес, то можете ли вы определить, каковы требования для выкупа с этого адреса?

Обычно нет. Иногда могут помочь Google и другие поисковые системы. P2SH-адрес представляет собой хэш неизвестного скрипта. Невозможно построить скрипт обратно из его хэша.

Спасибо, Амаклин. Насчет мультиподписных адресов я неправильно выразился. Я хотел сказать, что адреса с мультиподписью включают много адресов в расходах с этих адресов. Это означает, что вознаграждение дается на один адрес, и требуется несколько закрытых ключей, чтобы сформулировать скрипт, который может потратить деньги, присужденные этому адресу с мультиподписью. Правильный? Полезно знать, что каждый UTXO вознаграждает ровно один адрес. Однако существует ли пограничный случай, когда пользовательский сценарий может присвоить два адреса в сценарии.