package org.bitcoinj.core; import org.bitcoinj.crypto.TransactionSignature; import javax.annotation.Nullable; public class TransactionWitness { static TransactionWitness empty = new TransactionWitness(0); public static TransactionWitness getEmpty() { return empty; } byte[][] pushes; public TransactionWitness(int pushCount) { pushes = new byte[pushCount][]; } public byte[] getPush(int i) { return pushes[i]; } public int getPushCount() { return pushes.length; } public void setPush(int i, byte[] value) { pushes[i] = value; } /** * Create a witness that can redeem a pay-to-witness-pubkey-hash output. */ public static TransactionWitness createWitness(@Nullable final TransactionSignature signature, final ECKey pubKey) { final byte[] sigBytes = signature != null ? signature.encodeToBitcoin() : new byte[]{}; final byte[] pubKeyBytes = pubKey.getPubKey(); final TransactionWitness witness = new TransactionWitness(2); witness.setPush(0, sigBytes); witness.setPush(1, pubKeyBytes); return witness; } }