mirror of
https://github.com/OneKeyHQ/bip39.git
synced 2026-04-18 08:22:16 +00:00
Generate addresses for P2WSH and P2WSH-P2SH
This commit is contained in:
@@ -509,8 +509,8 @@
|
|||||||
<select class="form-control bip141-semantics">
|
<select class="form-control bip141-semantics">
|
||||||
<option value="p2wpkh">P2WPKH</option>
|
<option value="p2wpkh">P2WPKH</option>
|
||||||
<option value="p2wpkh-p2sh" selected>P2WPKH nested in P2SH</option>
|
<option value="p2wpkh-p2sh" selected>P2WPKH nested in P2SH</option>
|
||||||
<option value="p2wsh">P2WSH</option>
|
<option value="p2wsh">P2WSH (1-of-1 multisig)</option>
|
||||||
<option value="p2wsh-p2sh">P2WSH nested in P2SH</option>
|
<option value="p2wsh-p2sh">P2WSH nested in P2SH (1-of-1 multisig)</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1152,12 +1152,19 @@
|
|||||||
address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
|
address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
|
||||||
}
|
}
|
||||||
else if (isP2wsh) {
|
else if (isP2wsh) {
|
||||||
// TODO
|
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/v3.3.2/test/integration/addresses.js#L71
|
||||||
address = "";
|
// 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) {
|
else if (isP2wshInP2sh) {
|
||||||
// TODO
|
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/v3.3.2/test/integration/transactions.js#L183
|
||||||
address = "";
|
// 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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3701,7 +3701,7 @@ it('Can generate BIP141 addresses with P2WSH semanitcs', function(done) {
|
|||||||
driver.executeScript(function() {
|
driver.executeScript(function() {
|
||||||
$(".bip141-semantics option[selected]").removeAttr("selected");
|
$(".bip141-semantics option[selected]").removeAttr("selected");
|
||||||
$(".bip141-semantics option").filter(function(i,e) {
|
$(".bip141-semantics option").filter(function(i,e) {
|
||||||
return $(e).html() == "P2WSH";
|
return $(e).html() == "P2WSH (1-of-1 multisig)";
|
||||||
}).prop("selected", true);
|
}).prop("selected", true);
|
||||||
$(".bip141-semantics").trigger("change");
|
$(".bip141-semantics").trigger("change");
|
||||||
});
|
});
|
||||||
@@ -3712,8 +3712,10 @@ it('Can generate BIP141 addresses with P2WSH semanitcs', function(done) {
|
|||||||
.getAttribute("value")
|
.getAttribute("value")
|
||||||
.then(function(rootKey) {
|
.then(function(rootKey) {
|
||||||
expect(rootKey).toBe("ZprvAhadJRUYsNge9uHspaggavxU1BUQ8QwfT4Z9UGq5sKF2mSt1mVy8EckLAaoBdmLHyP5eYDJ3LxtmzMNnLg2MRFe7QN2ueF4NCH4s5PrCDR6");
|
expect(rootKey).toBe("ZprvAhadJRUYsNge9uHspaggavxU1BUQ8QwfT4Z9UGq5sKF2mSt1mVy8EckLAaoBdmLHyP5eYDJ3LxtmzMNnLg2MRFe7QN2ueF4NCH4s5PrCDR6");
|
||||||
// TODO check first address
|
getFirstAddress(function(address) {
|
||||||
done();
|
expect(address).toBe("bc1q2qhee847pv438tgg8hc7mjy38n8dklleshettn344l0tgs0kj5hskz9p9r");
|
||||||
|
done();
|
||||||
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -3725,7 +3727,7 @@ it('Can generate BIP141 addresses with P2WSH-in-P2SH semanitcs', function(done)
|
|||||||
driver.executeScript(function() {
|
driver.executeScript(function() {
|
||||||
$(".bip141-semantics option[selected]").removeAttr("selected");
|
$(".bip141-semantics option[selected]").removeAttr("selected");
|
||||||
$(".bip141-semantics option").filter(function(i,e) {
|
$(".bip141-semantics option").filter(function(i,e) {
|
||||||
return $(e).html() == "P2WSH nested in P2SH";
|
return $(e).html() == "P2WSH nested in P2SH (1-of-1 multisig)";
|
||||||
}).prop("selected", true);
|
}).prop("selected", true);
|
||||||
$(".bip141-semantics").trigger("change");
|
$(".bip141-semantics").trigger("change");
|
||||||
});
|
});
|
||||||
@@ -3736,8 +3738,10 @@ it('Can generate BIP141 addresses with P2WSH-in-P2SH semanitcs', function(done)
|
|||||||
.getAttribute("value")
|
.getAttribute("value")
|
||||||
.then(function(rootKey) {
|
.then(function(rootKey) {
|
||||||
expect(rootKey).toBe("YprvANkMzkodih9AJc6kzDu4NqrxqDKxBnxAXx2vgswCVJs9iM4nWqoZcZ6C9NqbdrgNZjxqnjhUtJYE74mDcycLd1xWY2LV4LEsvZ1DgqxuAKe");
|
expect(rootKey).toBe("YprvANkMzkodih9AJc6kzDu4NqrxqDKxBnxAXx2vgswCVJs9iM4nWqoZcZ6C9NqbdrgNZjxqnjhUtJYE74mDcycLd1xWY2LV4LEsvZ1DgqxuAKe");
|
||||||
// TODO check first address
|
getFirstAddress(function(address) {
|
||||||
done();
|
expect(address).toBe("343DLC4vGDyHBbBr9myL8zzZA1MdN9TM1G");
|
||||||
|
done();
|
||||||
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -3750,7 +3754,7 @@ it('Uses Vprv for bitcoin testnet p2wsh', function(done) {
|
|||||||
driver.executeScript(function() {
|
driver.executeScript(function() {
|
||||||
$(".bip141-semantics option[selected]").removeAttr("selected");
|
$(".bip141-semantics option[selected]").removeAttr("selected");
|
||||||
$(".bip141-semantics option").filter(function(i,e) {
|
$(".bip141-semantics option").filter(function(i,e) {
|
||||||
return $(e).html() == "P2WSH";
|
return $(e).html() == "P2WSH (1-of-1 multisig)";
|
||||||
}).prop("selected", true);
|
}).prop("selected", true);
|
||||||
$(".bip141-semantics").trigger("change");
|
$(".bip141-semantics").trigger("change");
|
||||||
});
|
});
|
||||||
@@ -3774,7 +3778,7 @@ it('Uses Uprv for bitcoin testnet p2wsh-in-p2sh', function(done) {
|
|||||||
driver.executeScript(function() {
|
driver.executeScript(function() {
|
||||||
$(".bip141-semantics option[selected]").removeAttr("selected");
|
$(".bip141-semantics option[selected]").removeAttr("selected");
|
||||||
$(".bip141-semantics option").filter(function(i,e) {
|
$(".bip141-semantics option").filter(function(i,e) {
|
||||||
return $(e).html() == "P2WSH nested in P2SH";
|
return $(e).html() == "P2WSH nested in P2SH (1-of-1 multisig)";
|
||||||
}).prop("selected", true);
|
}).prop("selected", true);
|
||||||
$(".bip141-semantics").trigger("change");
|
$(".bip141-semantics").trigger("change");
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user