From df384c02d1b5669322105ccae94d5215ee960a97 Mon Sep 17 00:00:00 2001 From: Jon Griffiths Date: Fri, 5 Jul 2024 00:22:32 +1200 Subject: [PATCH 1/3] psbt: don't serialize witness data for input non-witness utxos Some test vectors in BIP 0174 are incorrect - they include witness data in non-witness UTXOs, which is not output (at least now) by core. Accept witness data if provided, but do not output it. This matches cores behaviour as can be seen by running utxoupdatepsbt on the test samples that have been fixed here. We keep some old test cases from the BIP to prove wallys re-serialization matches core. --- src/ctest/psbts.h | 10 ++++++++-- src/data/psbt.json | 26 ++++++++++++++++++-------- src/psbt.c | 6 +++--- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/ctest/psbts.h b/src/ctest/psbts.h index a7b6cf7d9..a4d802a9c 100644 --- a/src/ctest/psbts.h +++ b/src/ctest/psbts.h @@ -527,13 +527,19 @@ static const struct psbt_test invalid_psbts[] = static const struct psbt_test valid_psbts[] = { /* PSBT v0 with one P2PKH input. Outputs are empty */ - {"cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA", false, true}, + {"cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA", false, false}, + + /* PSBT v0 with one P2PKH input. Outputs are empty (corrected serialization) */ + {"cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQDMAQAAAAKJo8ceq00g4Dcbu6TMaY+ilclGOvouOX+FM8y2L5Vn5QEAAAAXFgAUvhjRUqmwEgOdrz2n3k9TNJ7suYX/////hviqQ6cd/xRIiTpTCnI372tGCLuy3S0BceY67GpIkLQBAAAAFxYAFP4+nvGnRel02QLENVlDq8s0vVNT/////wIAwusLAAAAABl2qRSFz/EJf9ngCLs0r3CcYhl7OJeKSIiscv74TiwAAAAXqRQzlyW6Ie/WKsdTqbzQZ9bHpqOdBYcAAAAAAAAA", false, true}, /* PSBT v0 with one P2PKH input and one P2SH-P2WPKH input. First input is signed and finalized. Outputs are empty */ {"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEHakcwRAIgR1lmF5fAGwNrJZKJSGhiGDR9iYZLcZ4ff89X0eURZYcCIFMJ6r9Wqk2Ikf/REf3xM286KdqGbX+EhtdVRs7tr5MZASEDXNxh/HupccC1AaZGoqg7ECy0OIEhfKaC3Ibi1z+ogpIAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIAAAA", false, true}, /* PSBT v0 with one P2PKH input which has a non-final scriptSig and has a sighash type specified. Outputs are empty */ - {"cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQMEAQAAAAAAAA==", false, true}, + {"cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQMEAQAAAAAAAA==", false, false}, + + /* PSBT v0 with one P2PKH input which has a non-final scriptSig and has a sighash type specified. Outputs are empty (corrected serialization) */ + {"cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQDMAQAAAAKJo8ceq00g4Dcbu6TMaY+ilclGOvouOX+FM8y2L5Vn5QEAAAAXFgAUvhjRUqmwEgOdrz2n3k9TNJ7suYX/////hviqQ6cd/xRIiTpTCnI372tGCLuy3S0BceY67GpIkLQBAAAAFxYAFP4+nvGnRel02QLENVlDq8s0vVNT/////wIAwusLAAAAABl2qRSFz/EJf9ngCLs0r3CcYhl7OJeKSIiscv74TiwAAAAXqRQzlyW6Ie/WKsdTqbzQZ9bHpqOdBYcAAAAAAAAA", false, true}, /* PSBT v0 with one P2PKH input and one P2SH-P2WPKH input both with non-final scriptSigs. P2SH-P2WPKH input's redeemScript is available. Outputs filled. */ {"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=", false, true}, diff --git a/src/data/psbt.json b/src/data/psbt.json index f9b50bdbf..72f5e918b 100644 --- a/src/data/psbt.json +++ b/src/data/psbt.json @@ -747,7 +747,12 @@ "valid": [ { "comment": "PSBT v0 with one P2PKH input. Outputs are empty", - "psbt": "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA" + "psbt": "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA", + "can_round_trip": false + }, + { + "comment": "PSBT v0 with one P2PKH input. Outputs are empty (corrected serialization)", + "psbt": "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQDMAQAAAAKJo8ceq00g4Dcbu6TMaY+ilclGOvouOX+FM8y2L5Vn5QEAAAAXFgAUvhjRUqmwEgOdrz2n3k9TNJ7suYX/////hviqQ6cd/xRIiTpTCnI372tGCLuy3S0BceY67GpIkLQBAAAAFxYAFP4+nvGnRel02QLENVlDq8s0vVNT/////wIAwusLAAAAABl2qRSFz/EJf9ngCLs0r3CcYhl7OJeKSIiscv74TiwAAAAXqRQzlyW6Ie/WKsdTqbzQZ9bHpqOdBYcAAAAAAAAA" }, { "comment": "PSBT v0 with one P2PKH input and one P2SH-P2WPKH input. First input is signed and finalized. Outputs are empty", @@ -755,7 +760,12 @@ }, { "comment": "PSBT v0 with one P2PKH input which has a non-final scriptSig and has a sighash type specified. Outputs are empty", - "psbt": "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQMEAQAAAAAAAA==" + "psbt": "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAQMEAQAAAAAAAA==", + "can_round_trip": false + }, + { + "comment": "PSBT v0 with one P2PKH input which has a non-final scriptSig and has a sighash type specified. Outputs are empty (corrected serialization)", + "psbt": "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQDMAQAAAAKJo8ceq00g4Dcbu6TMaY+ilclGOvouOX+FM8y2L5Vn5QEAAAAXFgAUvhjRUqmwEgOdrz2n3k9TNJ7suYX/////hviqQ6cd/xRIiTpTCnI372tGCLuy3S0BceY67GpIkLQBAAAAFxYAFP4+nvGnRel02QLENVlDq8s0vVNT/////wIAwusLAAAAABl2qRSFz/EJf9ngCLs0r3CcYhl7OJeKSIiscv74TiwAAAAXqRQzlyW6Ie/WKsdTqbzQZ9bHpqOdBYcAAAAAAAAA" }, { "comment": "PSBT v0 with one P2PKH input and one P2SH-P2WPKH input both with non-final scriptSigs. P2SH-P2WPKH input's redeemScript is available. Outputs filled.", @@ -1063,7 +1073,7 @@ "cTu1wcAMkf6FLqjd2sWM12xjz4bwobV6i1oWao61mPG4uvQPSg8J" ], "psbt": "cHNidP8BAH0CAAAAAZm8gI4B+QwhlZYFU8Bsxh/dt5y2hNyvgHE3Paqy38usAAAAAAD9////AqCGAQAAAAAAIlEgH4rIDI3It8R1lGsWS8Y/oJcgLGXWHP3esRcFTANbDkohR/QFAAAAABYAFLCINJ0ava7brRWRFXPb9gQPtXa8ZgAAAAABAPYCAAAAAAEBToRRljypw8i0XDdchLPfPCEu35IVDAQyJjE7+4BKY7wAAAAAAP3///8CAOH1BQAAAAAiUSCmhOhy2uqiFaiKEq1XHQ5GxEB0ZzKWUkQdDdvHekKkr1sQECQBAAAAIlEgBGBAMo//gsGI9gAqLi1eIQyQfI9OEKPTsHC70K9iFJICRzBEAiAdRYXGxB9GvJjW7wBs3MoIgEM9JLWr68YSY7DimIPiQgIgapXuVzcGsgW/2pALpgiUruJy1r/d7WzA33X2lVTTeKsBIQKv1oxXJ0mTvGCKH3aUGEMPzKG6eFsKZNMz7oK0e83kEWUAAAABASsA4fUFAAAAACJRIKaE6HLa6qIVqIoSrVcdDkbEQHRnMpZSRB0N28d6QqSvIRbkivPnCyb8Yoovvu2XYhO+SdnqbXkf3xdICTCTBzDQkAkAPcQ2kgAAAAAADPwJbGlnaHRuaW5nBAIAAQAiAgKvT3WyoYKdheBSaW4ey+TVgkhT0rRhx4m89r/o+gUyXQiwiDSdAwAAAAA=", - "result": "cHNidP8BAH0CAAAAAZm8gI4B+QwhlZYFU8Bsxh/dt5y2hNyvgHE3Paqy38usAAAAAAD9////AqCGAQAAAAAAIlEgH4rIDI3It8R1lGsWS8Y/oJcgLGXWHP3esRcFTANbDkohR/QFAAAAABYAFLCINJ0ava7brRWRFXPb9gQPtXa8ZgAAAAABAPYCAAAAAAEBToRRljypw8i0XDdchLPfPCEu35IVDAQyJjE7+4BKY7wAAAAAAP3///8CAOH1BQAAAAAiUSCmhOhy2uqiFaiKEq1XHQ5GxEB0ZzKWUkQdDdvHekKkr1sQECQBAAAAIlEgBGBAMo//gsGI9gAqLi1eIQyQfI9OEKPTsHC70K9iFJICRzBEAiAdRYXGxB9GvJjW7wBs3MoIgEM9JLWr68YSY7DimIPiQgIgapXuVzcGsgW/2pALpgiUruJy1r/d7WzA33X2lVTTeKsBIQKv1oxXJ0mTvGCKH3aUGEMPzKG6eFsKZNMz7oK0e83kEWUAAAABASsA4fUFAAAAACJRIKaE6HLa6qIVqIoSrVcdDkbEQHRnMpZSRB0N28d6QqSvARNAb6qU8xiqJKdn+lOZHuzM/JjOiII3rT+4m2sMFRsS0eKNF8zzEZo1UhUOl/D5mjJeNjSdlO3+eZR9fb/P8jWDByEW5Irz5wsm/GKKL77tl2ITvknZ6m15H98XSAkwkwcw0JAJAD3ENpIAAAAAAAz8CWxpZ2h0bmluZwQCAAEAIgICr091sqGCnYXgUmluHsvk1YJIU9K0YceJvPa/6PoFMl0IsIg0nQMAAAAA" + "result": "cHNidP8BAH0CAAAAAZm8gI4B+QwhlZYFU8Bsxh/dt5y2hNyvgHE3Paqy38usAAAAAAD9////AqCGAQAAAAAAIlEgH4rIDI3It8R1lGsWS8Y/oJcgLGXWHP3esRcFTANbDkohR/QFAAAAABYAFLCINJ0ava7brRWRFXPb9gQPtXa8ZgAAAAABAIkCAAAAAU6EUZY8qcPItFw3XISz3zwhLt+SFQwEMiYxO/uASmO8AAAAAAD9////AgDh9QUAAAAAIlEgpoToctrqohWoihKtVx0ORsRAdGcyllJEHQ3bx3pCpK9bEBAkAQAAACJRIARgQDKP/4LBiPYAKi4tXiEMkHyPThCj07Bwu9CvYhSSZQAAAAEBKwDh9QUAAAAAIlEgpoToctrqohWoihKtVx0ORsRAdGcyllJEHQ3bx3pCpK8BE0BvqpTzGKokp2f6U5ke7Mz8mM6IgjetP7ibawwVGxLR4o0XzPMRmjVSFQ6X8PmaMl42NJ2U7f55lH19v8/yNYMHIRbkivPnCyb8Yoovvu2XYhO+SdnqbXkf3xdICTCTBzDQkAkAPcQ2kgAAAAAADPwJbGlnaHRuaW5nBAIAAQAiAgKvT3WyoYKdheBSaW4ey+TVgkhT0rRhx4m89r/o+gUyXQiwiDSdAwAAAAA=" }, { "comment": "PSBTv2 taproot keyspend signature", @@ -1071,7 +1081,7 @@ "cUyfr12WV21eNED5Mk89ZZ9pqWxsd52BM4Cv8PgfAdx3jEAvPuwn" ], "psbt": "cHNidP8BAgQCAAAAAQMEZgAAAAEEAQEBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABAdHR2JpIQRe2veo0llU7ci/9IG5DaeZUaGVTi+/pyHU4AAAAAAD9////AlsQECQBAAAAIlEgxsZa5WXXXxm68nU6uTaApup9Xg9IpVmtlc6VQckjSIUA4fUFAAAAACJRIFp/XvAYFGGG7PtiHthtpLNjSMbyVdoUVCzFxeRehDklAkcwRAIgb9KN1urrT/JXGhu9PqGektpQksoTQqbI8Dk4dk0+sw0CIAITi7J8kNKtaimjodLhB8J+SusFpO4HFKgavrHQzuIgASEDmQTOBGA3eVRjDOwqfrHc15WblP8w02yJKqFR57sugGNlAAAAAQErAOH1BQAAAAAiUSBaf17wGBRhhuz7Yh7YbaSzY0jG8lXaFFQsxcXkXoQ5JQEOIC5m1iLnRBAjV8hXxbwqlh+zKZbKn5IQwqBgj0n7C8jIAQ8EAQAAAAEQBP3///8hFnv81c9bwYL8u6z6StHClhM9qkRIdpa9VB+8sBje8Y69CQDfOmBVAAAAAAABAwighgEAAAAAAAEEIlEgI1j9CN7w241sYgkBDiZTj1TyID4mfFrj8FT4pVE2KP8M/AlsaWdodG5pbmcEAgABACICArL8jMClOwQDu2fC4mXavYTEm5nhdBNYJgJWbEWmRwaKCGLWEuADAAAAAQMIIUf0BQAAAAABBBYAFGLWEuCxEHXTDIVTFmQraKpdLvc+AA==", - "result": "cHNidP8BAgQCAAAAAQMEZgAAAAEEAQEBBQECAQYBAwH7BAIAAAAAAQD2AgAAAAABAdHR2JpIQRe2veo0llU7ci/9IG5DaeZUaGVTi+/pyHU4AAAAAAD9////AlsQECQBAAAAIlEgxsZa5WXXXxm68nU6uTaApup9Xg9IpVmtlc6VQckjSIUA4fUFAAAAACJRIFp/XvAYFGGG7PtiHthtpLNjSMbyVdoUVCzFxeRehDklAkcwRAIgb9KN1urrT/JXGhu9PqGektpQksoTQqbI8Dk4dk0+sw0CIAITi7J8kNKtaimjodLhB8J+SusFpO4HFKgavrHQzuIgASEDmQTOBGA3eVRjDOwqfrHc15WblP8w02yJKqFR57sugGNlAAAAAQErAOH1BQAAAAAiUSBaf17wGBRhhuz7Yh7YbaSzY0jG8lXaFFQsxcXkXoQ5JQEOIC5m1iLnRBAjV8hXxbwqlh+zKZbKn5IQwqBgj0n7C8jIAQ8EAQAAAAEQBP3///8BE0ABp34A+oJT4EIBZCKhL1Vl9bwO801d9bbaofB9Bwcr+R+dNzROjrdc/AHQ7ig+B90ZPIUdwn0UoFhkklUOxyQEIRZ7/NXPW8GC/Lus+krRwpYTPapESHaWvVQfvLAY3vGOvQkA3zpgVQAAAAAAAQMIoIYBAAAAAAABBCJRICNY/Qje8NuNbGIJAQ4mU49U8iA+Jnxa4/BU+KVRNij/DPwJbGlnaHRuaW5nBAIAAQAiAgKy/IzApTsEA7tnwuJl2r2ExJuZ4XQTWCYCVmxFpkcGighi1hLgAwAAAAEDCCFH9AUAAAAAAQQWABRi1hLgsRB10wyFUxZkK2iqXS73PgA=" + "result": "cHNidP8BAgQCAAAAAQMEZgAAAAEEAQEBBQECAQYBAwH7BAIAAAAAAQCJAgAAAAHR0diaSEEXtr3qNJZVO3Iv/SBuQ2nmVGhlU4vv6ch1OAAAAAAA/f///wJbEBAkAQAAACJRIMbGWuVl118ZuvJ1Ork2gKbqfV4PSKVZrZXOlUHJI0iFAOH1BQAAAAAiUSBaf17wGBRhhuz7Yh7YbaSzY0jG8lXaFFQsxcXkXoQ5JWUAAAABASsA4fUFAAAAACJRIFp/XvAYFGGG7PtiHthtpLNjSMbyVdoUVCzFxeRehDklAQ4gLmbWIudEECNXyFfFvCqWH7MplsqfkhDCoGCPSfsLyMgBDwQBAAAAARAE/f///wETQAGnfgD6glPgQgFkIqEvVWX1vA7zTV31ttqh8H0HByv5H503NE6Ot1z8AdDuKD4H3Rk8hR3CfRSgWGSSVQ7HJAQhFnv81c9bwYL8u6z6StHClhM9qkRIdpa9VB+8sBje8Y69CQDfOmBVAAAAAAABAwighgEAAAAAAAEEIlEgI1j9CN7w241sYgkBDiZTj1TyID4mfFrj8FT4pVE2KP8M/AlsaWdodG5pbmcEAgABACICArL8jMClOwQDu2fC4mXavYTEm5nhdBNYJgJWbEWmRwaKCGLWEuADAAAAAQMIIUf0BQAAAAABBBYAFGLWEuCxEHXTDIVTFmQraKpdLvc+AA==" }, { "comment": "Taproot keyspend with SIGHASH_ALL", @@ -1079,7 +1089,7 @@ "cUTSK6U3GZc8JQfQJAr57QmASWtEXRUTaHkLSMxqu9u7DppPW51N" ], "psbt": "cHNidP8BAH0CAAAAAY+Mh9D0AbHD9Rl+XYcoLNDMMkn/2YVy4Vrkw5crqbmSAQAAAAD9////AqCGAQAAAAAAIlEgjkQX4Ln2Vq0OQuEsklHTppzgRLaRgVVHEwKRBsbP9QAhR/QFAAAAABYAFNDRjw/J0bZQj3vqRW7BeJSCcQkVZgAAAAABAPYCAAAAAAEBQ+4i2Sma1U/wC2jAMlMG4Q80vksIDyMuntcHyRfI/hgAAAAAAP3///8CWxAQJAEAAAAiUSCjieYzsMHTKZ4MkmActUBi4PVLF9kKZeBJ/ffmmj6uhQDh9QUAAAAAIlEgAyTUkRT9Qix3UHriIHu6hsOZnjW3dCaOdEfAntOICngCRzBEAiAY5hBUEvQWzRoPVROo1bROJiVI+jUtrQyoVb05S+uoAwIgbpE0CT4qrQNenLo3Wu/cVuH7aHCAU0wOhi51+3tyjRQBIQJkqeBrI44j3khED/LkM+fXXye8zcun5n7qdHjtPnb09mUAAAABASsA4fUFAAAAACJRIAMk1JEU/UIsd1B64iB7uobDmZ41t3QmjnRHwJ7TiAp4AQMEAQAAACEWbtzwwg+NlbzOoN/nPQk/BA7QvpyPqN2qPq1Dzki20sYJAAvjkmkAAAAAAAz8CWxpZ2h0bmluZwQCAAEAIgICEjpp2wUKPRWYKXpjbTV5XJra0KHLjpLvRxJl7mKcp9sI0NGPDwMAAAAA", - "result": "cHNidP8BAH0CAAAAAY+Mh9D0AbHD9Rl+XYcoLNDMMkn/2YVy4Vrkw5crqbmSAQAAAAD9////AqCGAQAAAAAAIlEgjkQX4Ln2Vq0OQuEsklHTppzgRLaRgVVHEwKRBsbP9QAhR/QFAAAAABYAFNDRjw/J0bZQj3vqRW7BeJSCcQkVZgAAAAABAPYCAAAAAAEBQ+4i2Sma1U/wC2jAMlMG4Q80vksIDyMuntcHyRfI/hgAAAAAAP3///8CWxAQJAEAAAAiUSCjieYzsMHTKZ4MkmActUBi4PVLF9kKZeBJ/ffmmj6uhQDh9QUAAAAAIlEgAyTUkRT9Qix3UHriIHu6hsOZnjW3dCaOdEfAntOICngCRzBEAiAY5hBUEvQWzRoPVROo1bROJiVI+jUtrQyoVb05S+uoAwIgbpE0CT4qrQNenLo3Wu/cVuH7aHCAU0wOhi51+3tyjRQBIQJkqeBrI44j3khED/LkM+fXXye8zcun5n7qdHjtPnb09mUAAAABASsA4fUFAAAAACJRIAMk1JEU/UIsd1B64iB7uobDmZ41t3QmjnRHwJ7TiAp4AQMEAQAAAAETQSoAXO5t8Sg9cUToGoa2+nut51CBn7ylz1e+vtFvhQTEx3o7BniXuGagky+DDeEJVIwGZRdodxgrocw7zWV2GFgBIRZu3PDCD42VvM6g3+c9CT8EDtC+nI+o3ao+rUPOSLbSxgkAC+OSaQAAAAAADPwJbGlnaHRuaW5nBAIAAQAiAgISOmnbBQo9FZgpemNtNXlcmtrQocuOku9HEmXuYpyn2wjQ0Y8PAwAAAAA=" + "result": "cHNidP8BAH0CAAAAAY+Mh9D0AbHD9Rl+XYcoLNDMMkn/2YVy4Vrkw5crqbmSAQAAAAD9////AqCGAQAAAAAAIlEgjkQX4Ln2Vq0OQuEsklHTppzgRLaRgVVHEwKRBsbP9QAhR/QFAAAAABYAFNDRjw/J0bZQj3vqRW7BeJSCcQkVZgAAAAABAIkCAAAAAUPuItkpmtVP8AtowDJTBuEPNL5LCA8jLp7XB8kXyP4YAAAAAAD9////AlsQECQBAAAAIlEgo4nmM7DB0ymeDJJgHLVAYuD1SxfZCmXgSf335po+roUA4fUFAAAAACJRIAMk1JEU/UIsd1B64iB7uobDmZ41t3QmjnRHwJ7TiAp4ZQAAAAEBKwDh9QUAAAAAIlEgAyTUkRT9Qix3UHriIHu6hsOZnjW3dCaOdEfAntOICngBAwQBAAAAARNBKgBc7m3xKD1xROgahrb6e63nUIGfvKXPV76+0W+FBMTHejsGeJe4ZqCTL4MN4QlUjAZlF2h3GCuhzDvNZXYYWAEhFm7c8MIPjZW8zqDf5z0JPwQO0L6cj6jdqj6tQ85IttLGCQAL45JpAAAAAAAM/AlsaWdodG5pbmcEAgABACICAhI6adsFCj0VmCl6Y201eVya2tChy46S70cSZe5inKfbCNDRjw8DAAAAAA==" }, { "comment": "Taproot keyspend with SIGHASH_SINGLE", @@ -1087,15 +1097,15 @@ "cRENyqUBi48mhnwdaHK1TmgqCZvB83njEM9SnfRrf5JsVzx1deFS" ], "psbt": "cHNidP8BAH0CAAAAAcxHwxyy9FpFa1AuYMltf+VRZ0Wb+xs7irBhENL3ZNDfAAAAAAD9////AqCGAQAAAAAAIlEg9bpXXraKrTowBOttg43mWTzNvrpNtwi247wAU/AVyx4hR/QFAAAAABYAFMtFjSqHFoz6HBMyvhQ92LQA8Ym8ZgAAAAABAPYCAAAAAAEBjGpkiGzXPIZHUwJRoFnJCri6D22zIPxPcNmGum2dxlAAAAAAAP3///8CAOH1BQAAAAAiUSDntWViRTSufeFdp4iMAPAbwrb04WRr6Uf1t9PQdAybfVsQECQBAAAAIlEgL4ouh0/SbIyGL2nJ1V6Dj43GG94FKkY1Hb2t80Yfcw8CRzBEAiBnLUTCocry1Q3AjlWD9SAmww/OFmYCpPuAP/Datq98mgIgZch0lct0DCe2tdR50JiwkCTg4CmCYxOLPxPJr3BBeGsBIQNvmHE6LKDAAnzhgIJd3fiqYwETAqv0vIFL8t8uOJAaZmUAAAABASsA4fUFAAAAACJRIOe1ZWJFNK594V2niIwA8BvCtvThZGvpR/W309B0DJt9AQMEAwAAACEWJWIryWf7ygfu3yX466mDJOUFUiC+sXCYiZ8QrbhWGEMJAJgFzn0AAAAAAAz8CWxpZ2h0bmluZwQCAAEAIgIDyq/Tn4f9vurbsAxTsyr1yt1XV5etBF3J35+2A5/9wXoIy0WNKgMAAAAA", - "result": "cHNidP8BAH0CAAAAAcxHwxyy9FpFa1AuYMltf+VRZ0Wb+xs7irBhENL3ZNDfAAAAAAD9////AqCGAQAAAAAAIlEg9bpXXraKrTowBOttg43mWTzNvrpNtwi247wAU/AVyx4hR/QFAAAAABYAFMtFjSqHFoz6HBMyvhQ92LQA8Ym8ZgAAAAABAPYCAAAAAAEBjGpkiGzXPIZHUwJRoFnJCri6D22zIPxPcNmGum2dxlAAAAAAAP3///8CAOH1BQAAAAAiUSDntWViRTSufeFdp4iMAPAbwrb04WRr6Uf1t9PQdAybfVsQECQBAAAAIlEgL4ouh0/SbIyGL2nJ1V6Dj43GG94FKkY1Hb2t80Yfcw8CRzBEAiBnLUTCocry1Q3AjlWD9SAmww/OFmYCpPuAP/Datq98mgIgZch0lct0DCe2tdR50JiwkCTg4CmCYxOLPxPJr3BBeGsBIQNvmHE6LKDAAnzhgIJd3fiqYwETAqv0vIFL8t8uOJAaZmUAAAABASsA4fUFAAAAACJRIOe1ZWJFNK594V2niIwA8BvCtvThZGvpR/W309B0DJt9AQMEAwAAAAETQWKqmWGvOp90ZLgN9qvD+STgs1I7In+n537FL4FGyrwyO/rWnP53x54IGNcya9B9JcidUYhDQpAhGgiQUKXoXjsDIRYlYivJZ/vKB+7fJfjrqYMk5QVSIL6xcJiJnxCtuFYYQwkAmAXOfQAAAAAADPwJbGlnaHRuaW5nBAIAAQAiAgPKr9Ofh/2+6tuwDFOzKvXK3VdXl60EXcnfn7YDn/3BegjLRY0qAwAAAAA=" + "result": "cHNidP8BAH0CAAAAAcxHwxyy9FpFa1AuYMltf+VRZ0Wb+xs7irBhENL3ZNDfAAAAAAD9////AqCGAQAAAAAAIlEg9bpXXraKrTowBOttg43mWTzNvrpNtwi247wAU/AVyx4hR/QFAAAAABYAFMtFjSqHFoz6HBMyvhQ92LQA8Ym8ZgAAAAABAIkCAAAAAYxqZIhs1zyGR1MCUaBZyQq4ug9tsyD8T3DZhrptncZQAAAAAAD9////AgDh9QUAAAAAIlEg57VlYkU0rn3hXaeIjADwG8K29OFka+lH9bfT0HQMm31bEBAkAQAAACJRIC+KLodP0myMhi9pydVeg4+NxhveBSpGNR29rfNGH3MPZQAAAAEBKwDh9QUAAAAAIlEg57VlYkU0rn3hXaeIjADwG8K29OFka+lH9bfT0HQMm30BAwQDAAAAARNBYqqZYa86n3RkuA32q8P5JOCzUjsif6fnfsUvgUbKvDI7+tac/nfHnggY1zJr0H0lyJ1RiENCkCEaCJBQpeheOwMhFiViK8ln+8oH7t8l+OupgyTlBVIgvrFwmImfEK24VhhDCQCYBc59AAAAAAAM/AlsaWdodG5pbmcEAgABACICA8qv05+H/b7q27AMU7Mq9crdV1eXrQRdyd+ftgOf/cF6CMtFjSoDAAAAAA==" }, { "comment": "Taproot keyspend with no associated pubkey", "privkeys": [ "cVd4tUYMjuWJS2te21dhjdBpTwvkxwdfjP9AC81PdM9BQwW7oaTo" ], - "psbt": "cHNidP8BAH0CAAAAAd0d8Rfl45hnbKrHUO9vcDujNeb6VPuwyxDEVOwATVHyAQAAAAD9////AqCGAQAAAAAAIlEgeBUu8Q1HKJXIb76zd36Sl+izmyC/+w4AOsb6XLhNXUohR/QFAAAAABYAFFQykddI6WJF1YsFfGREBm/XYEGAZgAAAAABAPYCAAAAAAEB8kLdM97i6CqFRBbkJ+i6WWSIR29OXwwoGhaNk0cAVBIAAAAAAP3///8CWxAQJAEAAAAiUSCw7vWjdFqVRHSeE/1LTI1Li6dxkeis1MUvYOYB0LK8dADh9QUAAAAAIlEgYCnMLzgrgDfrN6eSbdFJphf2yRHfyrePgbqp5nR996kCRzBEAiArmep0f1QFUFm2UBPPkkpAKdgD0qD4akdaj8GBvDTzRgIgcpdvdJgy1QC3VdzUJb3Z1e3/PKIYf/519IMFM6iEYBYBIQJ1M0Db+Nsywk/N2dfavvHnmHfEpqYfOYL9eomaeHR1RmUAAAABASsA4fUFAAAAACJRIGApzC84K4A36zenkm3RSaYX9skR38q3j4G6qeZ0ffepAAz8CWxpZ2h0bmluZwQCAAEAIgICptzvEIBCFHiftDZmp+OKaSowtQOLW6zAtWLpMk7UXYAIVDKR1wMAAAAA", - "result": "cHNidP8BAH0CAAAAAd0d8Rfl45hnbKrHUO9vcDujNeb6VPuwyxDEVOwATVHyAQAAAAD9////AqCGAQAAAAAAIlEgeBUu8Q1HKJXIb76zd36Sl+izmyC/+w4AOsb6XLhNXUohR/QFAAAAABYAFFQykddI6WJF1YsFfGREBm/XYEGAZgAAAAABAPYCAAAAAAEB8kLdM97i6CqFRBbkJ+i6WWSIR29OXwwoGhaNk0cAVBIAAAAAAP3///8CWxAQJAEAAAAiUSCw7vWjdFqVRHSeE/1LTI1Li6dxkeis1MUvYOYB0LK8dADh9QUAAAAAIlEgYCnMLzgrgDfrN6eSbdFJphf2yRHfyrePgbqp5nR996kCRzBEAiArmep0f1QFUFm2UBPPkkpAKdgD0qD4akdaj8GBvDTzRgIgcpdvdJgy1QC3VdzUJb3Z1e3/PKIYf/519IMFM6iEYBYBIQJ1M0Db+Nsywk/N2dfavvHnmHfEpqYfOYL9eomaeHR1RmUAAAABASsA4fUFAAAAACJRIGApzC84K4A36zenkm3RSaYX9skR38q3j4G6qeZ0ffepAAz8CWxpZ2h0bmluZwQCAAEAIgICptzvEIBCFHiftDZmp+OKaSowtQOLW6zAtWLpMk7UXYAIVDKR1wMAAAAA" + "psbt": "cHNidP8BAH0CAAAAAd0d8Rfl45hnbKrHUO9vcDujNeb6VPuwyxDEVOwATVHyAQAAAAD9////AqCGAQAAAAAAIlEgeBUu8Q1HKJXIb76zd36Sl+izmyC/+w4AOsb6XLhNXUohR/QFAAAAABYAFFQykddI6WJF1YsFfGREBm/XYEGAZgAAAAABAIkCAAAAAfJC3TPe4ugqhUQW5CfoullkiEdvTl8MKBoWjZNHAFQSAAAAAAD9////AlsQECQBAAAAIlEgsO71o3RalUR0nhP9S0yNS4uncZHorNTFL2DmAdCyvHQA4fUFAAAAACJRIGApzC84K4A36zenkm3RSaYX9skR38q3j4G6qeZ0ffepZQAAAAEBKwDh9QUAAAAAIlEgYCnMLzgrgDfrN6eSbdFJphf2yRHfyrePgbqp5nR996kADPwJbGlnaHRuaW5nBAIAAQAiAgKm3O8QgEIUeJ+0Nman44ppKjC1A4tbrMC1YukyTtRdgAhUMpHXAwAAAAA=", + "result": "cHNidP8BAH0CAAAAAd0d8Rfl45hnbKrHUO9vcDujNeb6VPuwyxDEVOwATVHyAQAAAAD9////AqCGAQAAAAAAIlEgeBUu8Q1HKJXIb76zd36Sl+izmyC/+w4AOsb6XLhNXUohR/QFAAAAABYAFFQykddI6WJF1YsFfGREBm/XYEGAZgAAAAABAIkCAAAAAfJC3TPe4ugqhUQW5CfoullkiEdvTl8MKBoWjZNHAFQSAAAAAAD9////AlsQECQBAAAAIlEgsO71o3RalUR0nhP9S0yNS4uncZHorNTFL2DmAdCyvHQA4fUFAAAAACJRIGApzC84K4A36zenkm3RSaYX9skR38q3j4G6qeZ0ffepZQAAAAEBKwDh9QUAAAAAIlEgYCnMLzgrgDfrN6eSbdFJphf2yRHfyrePgbqp5nR996kADPwJbGlnaHRuaW5nBAIAAQAiAgKm3O8QgEIUeJ+0Nman44ppKjC1A4tbrMC1YukyTtRdgAhUMpHXAwAAAAA=" } ], "invalid_signer": [ diff --git a/src/psbt.c b/src/psbt.c index 4acde0efc..1b716f924 100644 --- a/src/psbt.c +++ b/src/psbt.c @@ -3002,9 +3002,9 @@ static int push_psbt_input(const struct wally_psbt *psbt, /* Non witness utxo */ if (input->utxo) { push_psbt_key(cursor, max, PSBT_IN_NON_WITNESS_UTXO, NULL, 0); - if ((ret = push_length_and_tx(cursor, max, - input->utxo, - WALLY_TX_FLAG_USE_WITNESS)) != WALLY_OK) + /* Note we don't serialize witness data for input UTXOs */ + ret = push_length_and_tx(cursor, max, input->utxo, 0); + if (ret != WALLY_OK) return ret; } From 24bf7b503d5c3f940c636519bd85a47462ff6c2e Mon Sep 17 00:00:00 2001 From: Jon Griffiths Date: Fri, 5 Jul 2024 22:39:09 +1200 Subject: [PATCH 2/3] docs: update CHANGES.md for psbt serialization changes --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 408cedfb6..d5b180b45 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,11 @@ ## Unreleased +### Changed + +- PSBT: Do not serialize witness data for input non-witness UTXOs, in + order to match the current behaviour of Bitcoin core. + ### Fixed - wally_scriptpubkey_get_type: mark all scripts starting with OP_RETURN as WALLY_SCRIPT_TYPE_OP_RETURN. From 1eb727c985b73989553b1ec4998871293a859d9b Mon Sep 17 00:00:00 2001 From: Jon Griffiths Date: Fri, 5 Jul 2024 22:43:22 +1200 Subject: [PATCH 3/3] build: fix swig install under centos/manylinux --- .github/workflows/wheels.yml | 2 +- tools/install_swig.sh | 49 ++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100755 tools/install_swig.sh diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 1470b5361..4d886071d 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -17,7 +17,7 @@ jobs: matrix: os: [ubuntu-22.04, windows-2019, macos-14] env: - CIBW_BEFORE_ALL_LINUX: yum install -y swig || apk add swig + CIBW_BEFORE_ALL_LINUX: ./tools/install_swig.sh CIBW_BEFORE_ALL_MACOS: brew install gnu-sed swig automake libtool CIBW_BEFORE_ALL_WINDOWS: choco install swig --version=3.0.12 --no-progress --allow-downgrade -y CIBW_BEFORE_BUILD_WINDOWS: .\tools\msvc\swig.bat diff --git a/tools/install_swig.sh b/tools/install_swig.sh new file mode 100755 index 000000000..d03441806 --- /dev/null +++ b/tools/install_swig.sh @@ -0,0 +1,49 @@ +#! /usr/bin/env bash +set -e + +if [ $(command -v swig) ]; then + # Already installed + exit 0 +fi + +if [ $(command -v apt) ]; then + # Debian/Ubuntu + apt install swig + exit 0 +fi + +if [ -d /etc/yum.repos.d ]; then + # Redhat/Fedora + if grep -- mirror.centos.org /etc/yum.repos.d/*.repo >/dev/null 2>&1; then + # mirror.centos.org has been nuked. Attempt to update the repo spec + # for older manylinux docker builds + sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo + sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo + sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo + fi + yum install -y swig + exit 0 +fi + +if [ $(command -v brew) ]; then + # MacOS + brew install swig + exit 0 +fi + +if [ $(command -v apk) ]; then + # Alpine + apk add swig + exit 0 +fi + +# Unknown - install from source +SWIG_URL='https://downloads.sourceforge.net/project/swig/swig/swig-3.0.12/swig-3.0.12.tar.gz?use_mirror=autoselect' +curl -sSL ${SWIG_URL} | tar xz +pushd swig-3.0.12 >/dev/null +./configure +make -j4 +make install +popd >/dev/null +rm -rf swig-3.0.12 +exit 0