- var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
- var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
- var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
- var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
- address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
+ var keyhash = libs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
+ var scriptsig = libs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
+ var addressbytes = libs.bitcoin.crypto.hash160(scriptsig);
+ var scriptpubkey = libs.bitcoin.script.scriptHash.output.encode(addressbytes);
+ address = libs.bitcoin.address.fromOutputScript(scriptpubkey, network)
+ }
+ else if (isP2wsh) {
+ // https://github.com/libs.bitcoinjs-lib/blob/v3.3.2/test/integration/addresses.js#L71
+ // This is a 1-of-1
+ var witnessScript = libs.bitcoin.script.multisig.output.encode(1, [key.getPublicKeyBuffer()]);
+ var scriptPubKey = libs.bitcoin.script.witnessScriptHash.output.encode(libs.bitcoin.crypto.sha256(witnessScript));
+ address = libs.bitcoin.address.fromOutputScript(scriptPubKey, network);
+ }
+ else if (isP2wshInP2sh) {
+ // https://github.com/libs.bitcoinjs-lib/blob/v3.3.2/test/integration/transactions.js#L183
+ // This is a 1-of-1
+ var witnessScript = libs.bitcoin.script.multisig.output.encode(1, [key.getPublicKeyBuffer()]);
+ var redeemScript = libs.bitcoin.script.witnessScriptHash.output.encode(libs.bitcoin.crypto.sha256(witnessScript));
+ var scriptPubKey = libs.bitcoin.script.scriptHash.output.encode(libs.bitcoin.crypto.hash160(redeemScript));
+ address = libs.bitcoin.address.fromOutputScript(scriptPubKey, network)