Vout содержит список адресов, который, как я заметил, всегда имеет размер = 1, если он существует. Ниже приведен пример из тестовой сети Биткойн:
{
"value": 0.91840581,
"n": 2,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 1416b8f3a1c1c7e3e73a05046f002e66004accc3 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9141416b8f3a1c1c7e3e73a05046f002e66004accc388ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"mhMB2g88n42ghQ5p1VA7Mt9VgTp9QvpDXU"
]
}
}
Почему поле "адреса" (адрес) представляет собой список? Есть ли случаи, когда это может занять более одного адреса? Кто тогда может это потратить?
Это происходит из-за исторической путаницы между адресами и ключами.
Первоначальной целью этого поля было сообщение об открытых ключах, задействованных в необработанных мультиподписных выходных данных. Однако на эти открытые ключи ссылались по соответствующему им адресу P2PKH.
Это сбивает с толку, потому что очевидно, что каждый вывод соответствует только одному адресу. Эта функция также теперь бесполезна из-за введения P2SH, где вместо того, чтобы помещать все открытые ключи в вывод, сохраняется только хэш сценария, включающий все эти ключи.
РЕДАКТИРОВАТЬ: Начиная с Bitcoin Core 23.0, поле «адреса» больше не существует вместе с несколькими другими полями (например, «reqSigs»), которые имеют отношение (но сбивают с толку) только для голых мультиподписей.
Квантовый физик
Питер Уилле