¿Cómo funciona exactamente BIP11 y cómo se puede utilizar, en particular con/sin P2SH?

Estoy tratando de escribir un cliente C# compatible con BIP11 que crea una transacción 2 de 2 o 2 de 3.

También estoy tratando de entender si también se admite una transacción 3 de 3.

Este ejemplo dice que están creando una dirección PS2H , pero no estoy seguro de qué script se está firmando exactamente, y el significado de los parámetros "2" en addmultisigaddress, y qué sucede cuando se llama a addmultisigaddress.

He investigado el BIP, la documentación de RPC y los foros. Me estoy confundiendo dónde, si y cuándo, se necesita el P2SH.

Respuestas (1)

Creo que la razón por la que podría confundirse es que en realidad hay dos tipos de multisig, multisig sin formato y multisig P2SH (pay-to-script-hash). P2SH multisig básicamente consiste simplemente en codificar el scriptPubKey real deseado y colocar el scriptPubKey en el scriptSig. Estas preguntas de intercambio de pila las explican con más detalle: ¿Cuáles son los límites de m y n en m-de-n direcciones multisig? .

También estoy tratando de entender si también se admite una transacción 3 de 3.

Sí, puede realizar transacciones multisig m-of-3 con multisig sin formato y multisig P2SH.

el significado de los parámetros "2" en addmultisigaddress

El número proporcionado es la m en la m-de-n. Entonces, si quieres un 1 de 2, lo haces:

addmultisigaddress 1 '["1xy..", "1Jm..."]' 

La propuesta BIP11 (aceptada) que mencionó acaba de hacer de raw multisig un tipo de transacción estándar que los clientes estándar reconocen y reenvían. BIP16 ( https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki ) propone las direcciones P2SH, que permiten scriptPubKeys mucho más cortos y admiten más tipos de multisig (por ejemplo, 5 de 9, que no puede hacerlo fácilmente con multisig sin procesar porque m-of-n multisigs con n> 3 se consideran no estándar, como se muestra en el enlace en el primer párrafo).

Tienes m y n mezclados. BIP11 usa m-of-n, donde m es el número mínimo de firmas y n es el número de claves. (O al menos así lo recuerdo).
@DavidA.Harding, actualizo la publicación para usar la notación estándar.
@NickODell, ¿qué parte crees que necesita una aclaración? Me vinculé a this , que explica los límites de tamaño.
@ StephenM347 (e.g. 5-of-9, which you can't do with raw multisig because it would make the scriptPubKey too large).Creo que todo hasta 20 de 20 multigrado incluido es válido. Por ejemplo: blockchain.info/tx-index/49797406/0
@NickODell Gotcha, aclararé que es una cuestión de estandarización en lugar de validez.