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.ECKey;
|
||||
import org.bitcoinj.core.SegwitAddress;
|
||||
import org.bitcoinj.core.Sha256Hash;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.bitcoinj.core.Utils;
|
||||
import org.bitcoinj.crypto.TransactionSignature;
|
||||
@@ -485,6 +486,22 @@ public class ScriptBuilder {
|
||||
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
|
||||
* redeem script in the lexicographical sorting order.
|
||||
|
@@ -19,11 +19,7 @@ package org.bitcoinj.script;
|
||||
|
||||
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.params.MainNetParams;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.math.BigInteger;
|
||||
@@ -33,7 +29,6 @@ import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class ScriptPatternTest {
|
||||
private List<ECKey> keys = Lists.newArrayList(new ECKey(), new ECKey(), new ECKey());
|
||||
private static final NetworkParameters MAINNET = MainNetParams.get();
|
||||
|
||||
@Test
|
||||
public void testCommonScripts() {
|
||||
@@ -47,10 +42,10 @@ public class ScriptPatternTest {
|
||||
ScriptBuilder.createOutputScript(keys.get(0))
|
||||
));
|
||||
assertTrue(ScriptPattern.isPayToWitnessPubKeyHash(
|
||||
ScriptBuilder.createOutputScript(SegwitAddress.fromHash(MAINNET, keys.get(0).getPubKeyHash()))
|
||||
ScriptBuilder.createP2WPKHOutputScript(keys.get(0))
|
||||
));
|
||||
assertTrue(ScriptPattern.isPayToWitnessScriptHash(
|
||||
ScriptBuilder.createOutputScript(SegwitAddress.fromHash(MAINNET, Sha256Hash.hash(new byte[0])))
|
||||
ScriptBuilder.createP2WSHOutputScript(new ScriptBuilder().build())
|
||||
));
|
||||
assertTrue(ScriptPattern.isSentToMultisig(
|
||||
ScriptBuilder.createMultiSigOutputScript(2, keys)
|
||||
|
Reference in New Issue
Block a user