Generación de secuencias de comandos de salida desde Bitcoin.js u otra biblioteca de Javascript

Estoy intentando usar la API de Ledger Wallet para firmar una transacción de varias firmas. La API funciona de la siguiente manera:

var inputs = [
  [ "71f97fa2a21486ecd99674a8ae068d92acd2e9db49c199473be39984e6cbe0f6", "00000000" ],
  [ "171e6a969ff196a2cfaaba4780c292e33fc297672a065cc5c5c684727cf9e3ba", "00000001" ]
];

var scripts = [     
"52210289b4a3ad52a919abd2bdd6920d8a6879b1e788c38aa76f0440a6f32a9f1996d02103a3393b1439d1693b063482c04bd40142db97bdf139eedd1b51ffb7070a37eac321030b9a409a1e476b0d5d17b804fcdb81cf30f9b99c6f3ae1178206e08bc500639853ae", 
"522102afe2165371442437b86089a17e8d1c26d127e3723b19f568e9c11e326946111521032d139518b16c112d5f1a52157f1468c0b7a570c41673debee8cd2e53eb084df12103b13fe78b0320ceb77795c87ed72069f12edf64169d15f8f9827f0bb4fdbe760f53ae"
];    

var paths = [
  "44'/0'/0'/0/0/0/1",
  "44'/0'/0'/0/0/0/2",
];

var outputs_number = 2
var outputs_script = "40420f00000000001976a91496986c2703c6b311c884bf916d28621bc61e8b7a88acdc0c03000000000017a914ddf0a9f3e0c9822feef702d36dee6c0bd2bf7c6d87"

Ledger.signP2SH(inputs, scripts, outputs_number, outputs_script, paths);

Tengo todo funcionando excepto generar outputs_script. Sé que hay formas de construir esto manualmente , pero debo suponer que hay un mecanismo dentro de una de las bibliotecas de JavaScript que existen. Encontré en la biblioteca bitcoin.js un método que convertirá una dirección en un script de salida:

var outScript = bitcoin.address.toOutputScript("1LRVwrvGF6XxQbCzqEBG71cPv9RrF8Uu5P")

Pero eso no incorpora valor o múltiples direcciones. ¿Cómo puedo generar solo el componente de secuencia de comandos de salida, para una dirección principal y de cambio, desde una biblioteca de Javascript?

Respuestas (1)

Escribí un pequeño módulo para hacer precisamente esto: https://github.com/lukechilds/build-output-script

Se puede usar así:

const buildOutputScript = require('build-output-script');

buildOutputScript([{address: '1LukeQU5jwebXbMLDVydeH4vFSobRV9rkj', value: 100000000}]);
// '0100e1f505000000001976a914da6473ed373e08f46dd8003fca7ba72fbe9c555e88ac'

Puede pasar varias direcciones P2PKH.