mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-07-31 20:11:23 +00:00
ScriptBuilder: Add createP2WSHOutputScript() helpers.
This commit is contained in:
@@ -23,6 +23,7 @@ import org.bitcoinj.core.Address;
|
|||||||
import org.bitcoinj.core.LegacyAddress;
|
import org.bitcoinj.core.LegacyAddress;
|
||||||
import org.bitcoinj.core.ECKey;
|
import org.bitcoinj.core.ECKey;
|
||||||
import org.bitcoinj.core.SegwitAddress;
|
import org.bitcoinj.core.SegwitAddress;
|
||||||
|
import org.bitcoinj.core.Sha256Hash;
|
||||||
import org.bitcoinj.core.Transaction;
|
import org.bitcoinj.core.Transaction;
|
||||||
import org.bitcoinj.core.Utils;
|
import org.bitcoinj.core.Utils;
|
||||||
import org.bitcoinj.crypto.TransactionSignature;
|
import org.bitcoinj.crypto.TransactionSignature;
|
||||||
@@ -485,6 +486,22 @@ public class ScriptBuilder {
|
|||||||
return ScriptBuilder.createP2SHOutputScript(hash);
|
return ScriptBuilder.createP2SHOutputScript(hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a segwit scriptPubKey that sends to the given script hash.
|
||||||
|
*/
|
||||||
|
public static Script createP2WSHOutputScript(byte[] hash) {
|
||||||
|
checkArgument(hash.length == SegwitAddress.WITNESS_PROGRAM_LENGTH_SH);
|
||||||
|
return new ScriptBuilder().smallNum(0).data(hash).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a segwit scriptPubKey for the given redeem script.
|
||||||
|
*/
|
||||||
|
public static Script createP2WSHOutputScript(Script redeemScript) {
|
||||||
|
byte[] hash = Sha256Hash.hash(redeemScript.getProgram());
|
||||||
|
return ScriptBuilder.createP2WSHOutputScript(hash);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a P2SH output script with given public keys and threshold. Given public keys will be placed in
|
* Creates a P2SH output script with given public keys and threshold. Given public keys will be placed in
|
||||||
* redeem script in the lexicographical sorting order.
|
* redeem script in the lexicographical sorting order.
|
||||||
|
@@ -19,11 +19,7 @@ package org.bitcoinj.script;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import org.bitcoinj.core.NetworkParameters;
|
|
||||||
import org.bitcoinj.core.SegwitAddress;
|
|
||||||
import org.bitcoinj.core.Sha256Hash;
|
|
||||||
import org.bitcoinj.core.ECKey;
|
import org.bitcoinj.core.ECKey;
|
||||||
import org.bitcoinj.params.MainNetParams;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
@@ -33,7 +29,6 @@ import static org.junit.Assert.assertTrue;
|
|||||||
|
|
||||||
public class ScriptPatternTest {
|
public class ScriptPatternTest {
|
||||||
private List<ECKey> keys = Lists.newArrayList(new ECKey(), new ECKey(), new ECKey());
|
private List<ECKey> keys = Lists.newArrayList(new ECKey(), new ECKey(), new ECKey());
|
||||||
private static final NetworkParameters MAINNET = MainNetParams.get();
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCommonScripts() {
|
public void testCommonScripts() {
|
||||||
@@ -47,10 +42,10 @@ public class ScriptPatternTest {
|
|||||||
ScriptBuilder.createOutputScript(keys.get(0))
|
ScriptBuilder.createOutputScript(keys.get(0))
|
||||||
));
|
));
|
||||||
assertTrue(ScriptPattern.isPayToWitnessPubKeyHash(
|
assertTrue(ScriptPattern.isPayToWitnessPubKeyHash(
|
||||||
ScriptBuilder.createOutputScript(SegwitAddress.fromHash(MAINNET, keys.get(0).getPubKeyHash()))
|
ScriptBuilder.createP2WPKHOutputScript(keys.get(0))
|
||||||
));
|
));
|
||||||
assertTrue(ScriptPattern.isPayToWitnessScriptHash(
|
assertTrue(ScriptPattern.isPayToWitnessScriptHash(
|
||||||
ScriptBuilder.createOutputScript(SegwitAddress.fromHash(MAINNET, Sha256Hash.hash(new byte[0])))
|
ScriptBuilder.createP2WSHOutputScript(new ScriptBuilder().build())
|
||||||
));
|
));
|
||||||
assertTrue(ScriptPattern.isSentToMultisig(
|
assertTrue(ScriptPattern.isSentToMultisig(
|
||||||
ScriptBuilder.createMultiSigOutputScript(2, keys)
|
ScriptBuilder.createMultiSigOutputScript(2, keys)
|
||||||
|
Reference in New Issue
Block a user