本文整理了Java中org.bitcoinj.core.Transaction.hasWitness()
方法的一些代码示例,展示了Transaction.hasWitness()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Transaction.hasWitness()
方法的具体详情如下:
包路径:org.bitcoinj.core.Transaction
类名称: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();
内容来源于网络,如有侵权,请联系作者删除!