org.bitcoinj.core.Transaction.hasWitness()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(4.8k)|赞(0)|评价(0)|浏览(77)

本文整理了Java中org.bitcoinj.core.Transaction.hasWitness()方法的一些代码示例,展示了Transaction.hasWitness()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Transaction.hasWitness()方法的具体详情如下:
包路径:org.bitcoinj.core.Transaction
类名称:Transaction
方法名:hasWitness

Transaction.hasWitness介绍

[英]Returns true if the transaction has witnesses
[中]如果事务有见证人,则返回true

代码示例

代码示例来源:origin: fr.acinq/bitcoinj-core

/**
 * Make a transaction from the payload. Extension point for alternative
 * serialization format support.
 */
@Override
public Transaction makeTransaction(byte[] payloadBytes, int offset, int length, byte[] payloadHash)
    throws ProtocolException {
  Transaction tx = new Transaction(params, payloadBytes, offset, null, this, length);
  if (payloadHash != null && !tx.hasWitness())
    // We can only use this optimization if payloadHash equals the transaction hash (aka txid). This is not the
    // case for transactions with witnesses. In this case, the transaction hash will be computed later.
    tx.setHash(Sha256Hash.wrapReversed(payloadHash));
  return tx;
}

代码示例来源:origin: fr.acinq/bitcoinj-core

s.append(", opts into full RBF");
if (this.hasWitness() && witnesses.get(i).getPushCount() > 0) {
  s.append("\n          ");
  s.append("witness:");

代码示例来源:origin: fr.acinq/bitcoinj-core

protected void bitcoinSerializeToStream(OutputStream stream, int transactionOptions) throws IOException {
  boolean witSupported = (transactionOptions & TransactionOptions.WITNESS) != 0;
  boolean serializeWit = hasWitness() && witSupported;
  uint32ToByteStreamLE(version, stream);
  if (serializeWit) {
    stream.write(new byte[]{0, 1});
  }
  stream.write(new VarInt(inputs.size()).encode());
  for (TransactionInput in : inputs)
    in.bitcoinSerialize(stream);
  stream.write(new VarInt(outputs.size()).encode());
  for (TransactionOutput out : outputs)
    out.bitcoinSerialize(stream);
  if (serializeWit) {
    for (int i = 0; i < inputs.size(); i++) {
      TransactionWitness witness = getWitness(i);
      stream.write(new VarInt(witness.getPushCount()).encode());
      for (int y = 0; y < witness.getPushCount(); y++) {
        byte[] push = witness.getPush(y);
        stream.write(new VarInt(push.length).encode());
        stream.write(push);
      }
    }
  }
  uint32ToByteStreamLE(lockTime, stream);
}

代码示例来源:origin: greenaddress/GreenBits

protected void bitcoinSerializeToStream(OutputStream stream, int transactionOptions) throws IOException {
  boolean witSupported = (protocolVersion >= NetworkParameters.ProtocolVersion.WITNESS_VERSION.getBitcoinProtocolVersion())
      && (transactionOptions & TransactionOptions.WITNESS) != 0;
  boolean serializeWit = hasWitness() && witSupported;
  uint32ToByteStreamLE(version, stream);
  if (serializeWit) {
    stream.write(new byte[]{0, 1});
  }
  stream.write(new VarInt(inputs.size()).encode());
  for (TransactionInput in : inputs)
    in.bitcoinSerialize(stream);
  stream.write(new VarInt(outputs.size()).encode());
  for (TransactionOutput out : outputs)
    out.bitcoinSerialize(stream);
  if (serializeWit) {
    for (int i = 0; i < inputs.size(); i++) {
      TransactionWitness witness = getWitness(i);
      stream.write(new VarInt(witness.getPushCount()).encode());
      for (int y = 0; y < witness.getPushCount(); y++) {
        byte[] push = witness.getPush(y);
        stream.write(new VarInt(push.length).encode());
        stream.write(push);
      }
    }
  }
  uint32ToByteStreamLE(lockTime, stream);
}

代码示例来源:origin: fr.acinq/bitcoinj-core

for (int i = 1; i < transactions.size(); i++) {
  final Transaction tx = transactions.get(i);
  if (tx.hasWitness()) {
    if (rootHash == null)
      throw new VerificationException("Transaction witness found but no witness commitment present");

代码示例来源:origin: fr.acinq/bitcoinj-core

/**
 * Create a new version of this transaction that serializes using the pre-SegWit method,
 * excluding witness data.
 */
public Transaction disableWitnessSerialization() {
  if ((transactionOptions & TransactionOptions.WITNESS) == TransactionOptions.WITNESS) {
    final Transaction tx = new Transaction(params);
    tx.transactionOptions = transactionOptions & ~TransactionOptions.WITNESS;
    for (TransactionInput i: getInputs()) {
      tx.addInput(i);
    }
    for (TransactionOutput o: getOutputs()) {
      tx.addOutput(o);
    }
    if (tx.hasWitness())
      for (int i = 0; i < countWitnesses(); i++)
        tx.setWitness(i, getWitness(i));
    return tx;
  } else {
    return this;
  }
}

代码示例来源:origin: fr.acinq/bitcoinj-core

final TransactionWitness witness = tx.hasWitness() ? tx.getWitness(index) : null;
sigOps += in.countSigOps(verifyFlags, prevOut.getScript(), witness);
if (sigOps > Block.MAX_BLOCK_SIGOPS)

代码示例来源:origin: greenaddress/GreenBits

assertEquals(3, tx.getOutputs().size());
assertEquals(3, tx.getInputs().size());
assertFalse(tx.hasWitness());
hex2 = tx.bitcoinSerialize();
assertArrayEquals(hex, hex2);
assertEquals(2, tx.getOutputs().size());
assertEquals(2, tx.getInputs().size());
assertTrue(tx.hasWitness());
hex2 = tx.bitcoinSerialize();
assertArrayEquals(hex, hex2);

代码示例来源:origin: fr.acinq/bitcoinj-core

if (input.getValue() != null)
  inputBuilder.setValue(input.getValue().value);
if (tx.hasWitness() && tx.getWitness(i).getPushCount() > 0) {
  TransactionWitness witness = tx.getWitness(i);
  Protos.ScriptWitness.Builder witnessBuilder = Protos.ScriptWitness.newBuilder();

相关文章

微信公众号

最新文章

更多

Transaction类方法