]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - src/js/index.js
Generate addresses for P2WSH and P2WSH-P2SH
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / src / js / index.js
index db4741256e30ba66b0873800013db5333f364793..5fb0c478a19e17bb57487d7244afa3cb327f751e 100644 (file)
                         address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
                     }
                     else if (isP2wsh) {
-                        // TODO
-                        address = "";
+                        // https://github.com/bitcoinjs/bitcoinjs-lib/blob/v3.3.2/test/integration/addresses.js#L71
+                        // This is a 1-of-1
+                        var witnessScript = bitcoinjs.bitcoin.script.multisig.output.encode(1, [key.getPublicKeyBuffer()]);
+                        var scriptPubKey = bitcoinjs.bitcoin.script.witnessScriptHash.output.encode(bitcoinjs.bitcoin.crypto.sha256(witnessScript));
+                        address = bitcoinjs.bitcoin.address.fromOutputScript(scriptPubKey, network);
                     }
                     else if (isP2wshInP2sh) {
-                        // TODO
-                        address = "";
+                        // https://github.com/bitcoinjs/bitcoinjs-lib/blob/v3.3.2/test/integration/transactions.js#L183
+                        // This is a 1-of-1
+                        var witnessScript = bitcoinjs.bitcoin.script.multisig.output.encode(1, [key.getPublicKeyBuffer()]);
+                        var redeemScript = bitcoinjs.bitcoin.script.witnessScriptHash.output.encode(bitcoinjs.bitcoin.crypto.sha256(witnessScript));
+                        var scriptPubKey = bitcoinjs.bitcoin.script.scriptHash.output.encode(bitcoinjs.bitcoin.crypto.hash160(redeemScript));
+                        address = bitcoinjs.bitcoin.address.fromOutputScript(scriptPubKey, network)
                     }
                 }