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

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

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

Transaction.getInput介绍

[英]Same as getInputs().get(index).
[中]与getInputs()相同。获取(索引)。

代码示例

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

@Nullable
  @Override
  public VerificationException call() throws Exception {
    try {
      ListIterator<Script> prevOutIt = prevOutScripts.listIterator();
      for (int index = 0; index < tx.getInputs().size(); index++) {
        Coin value = tx.getInput(index).getConnectedOutput() != null ? tx.getInput(index).getConnectedOutput().getValue() : Coin.ZERO;
        tx.getInputs().get(index).getScriptSig().correctlySpends(tx, index, prevOutIt.next(), value, verifyFlags);
      }
    } catch (VerificationException e) {
      return e;
    }
    return null;
  }
}

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

private void signMultisigInput(Transaction tx, Transaction.SigHash hashType,
                boolean anyoneCanPay, @Nullable KeyParameter userKey) {
  TransactionSignature signature = tx.calculateSignature(0, serverKey, userKey, getContractScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createMultiSigInputScriptBytes(ImmutableList.of(bestValueSignature, mySig));
  tx.getInput(0).setScriptSig(scriptSig);
}

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

private void signMultisigInput(Transaction tx, Transaction.SigHash hashType,
                boolean anyoneCanPay, @Nullable KeyParameter userKey) {
  TransactionSignature signature = tx.calculateSignature(0, serverKey, userKey, getContractScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createMultiSigInputScriptBytes(ImmutableList.of(bestValueSignature, mySig));
  tx.getInput(0).setScriptSig(scriptSig);
}

代码示例来源:origin: HashEngineering/dashj

private static void addOutputs(final Transaction outputTransaction, final KeyBag bag) throws ScriptException {
  int numInputs = outputTransaction.getInputs().size();
  for (int i = 0; i < numInputs; i++) {
    TransactionInput txIn = outputTransaction.getInput(i);
    Script scriptPubKey = txIn.getConnectedOutput().getScriptPubKey();
    RedeemData redeemData = txIn.getConnectedRedeemData(bag);
    checkNotNull(redeemData, "Transaction exists in wallet that we cannot redeem: %s", txIn.getOutpoint().getHash());
    txIn.setScriptSig(scriptPubKey.createEmptyInputScript(redeemData.keys.get(0), redeemData.redeemScript));
  }
}

代码示例来源:origin: HashEngineering/dashj

private void signMultisigInput(Transaction tx, Transaction.SigHash hashType, boolean anyoneCanPay) {
  TransactionSignature signature = tx.calculateSignature(0, serverKey, getContractScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createMultiSigInputScriptBytes(ImmutableList.of(bestValueSignature, mySig));
  tx.getInput(0).setScriptSig(scriptSig);
}

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

/**
 * Returns true if the tx is a valid settlement transaction.
 */
public synchronized boolean isSettlementTransaction(Transaction tx) {
  try {
    tx.verify();
    tx.getInput(0).verify(getContractInternal().getOutput(0));
    return true;
  } catch (VerificationException e) {
    return false;
  }
}

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

/**
 * Returns true if the tx is a valid settlement transaction.
 */
public synchronized boolean isSettlementTransaction(Transaction tx) {
  try {
    tx.verify();
    tx.getInput(0).verify(getContractInternal().getOutput(0));
    return true;
  } catch (VerificationException e) {
    return false;
  }
}

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

/**
 * Returns true if the tx is a valid settlement transaction.
 */
public synchronized boolean isSettlementTransaction(Transaction tx) {
  try {
    tx.verify();
    tx.getInput(0).verify(getContractInternal().getOutput(0));
    return true;
  } catch (VerificationException e) {
    return false;
  }
}

代码示例来源:origin: HashEngineering/dashj

/**
 * Returns true if the tx is a valid settlement transaction.
 */
public synchronized boolean isSettlementTransaction(Transaction tx) {
  try {
    tx.verify();
    tx.getInput(0).verify(getContractInternal().getOutput(0));
    return true;
  } catch (VerificationException e) {
    return false;
  }
}

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

private void signMultisigInput(Transaction tx, Transaction.SigHash hashType, boolean anyoneCanPay) {
  //TransactionSignature signature = tx.calculateSignature(0, serverKey, getContractScript(), hashType, anyoneCanPay, true);
  TransactionSignature signature = tx.getVersion() >= Transaction.FORKID_VERSION ?
      tx.calculateWitnessSignature(0, serverKey, getContractScript(), tx.getInput(0).getConnectedOutput().getValue(), Transaction.SigHash.NONE, true):
      tx.calculateSignature(0, serverKey, getContractScript(), hashType, true);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createMultiSigInputScriptBytes(ImmutableList.of(bestValueSignature, mySig));
  tx.getInput(0).setScriptSig(scriptSig);
}

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

private void signP2SHInput(Transaction tx, Transaction.SigHash hashType,
              boolean anyoneCanPay, @Nullable KeyParameter userKey) {
  TransactionSignature signature = tx.calculateSignature(0, serverKey, userKey, createP2SHRedeemScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createCLTVPaymentChannelP2SHInput(bestValueSignature, mySig, createP2SHRedeemScript());
  tx.getInput(0).setScriptSig(scriptSig);
}

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

private void signP2SHInput(Transaction tx, Transaction.SigHash hashType,
              boolean anyoneCanPay, @Nullable KeyParameter userKey) {
  TransactionSignature signature = tx.calculateSignature(0, serverKey, userKey, createP2SHRedeemScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createCLTVPaymentChannelP2SHInput(bestValueSignature, mySig, createP2SHRedeemScript());
  tx.getInput(0).setScriptSig(scriptSig);
}

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

private void signP2SHInput(Transaction tx, Transaction.SigHash hashType, boolean anyoneCanPay) {
  TransactionSignature signature = tx.getVersion() >= Transaction.FORKID_VERSION ?
      tx.calculateWitnessSignature(0, serverKey, createP2SHRedeemScript(), tx.getInput(0).getConnectedOutput().getValue(), hashType, anyoneCanPay):
      tx.calculateSignature(0, serverKey, createP2SHRedeemScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createCLTVPaymentChannelP2SHInput(bestValueSignature, mySig, createP2SHRedeemScript());
  tx.getInput(0).setScriptSig(scriptSig);
}

代码示例来源:origin: HashEngineering/dashj

private void signP2SHInput(Transaction tx, Transaction.SigHash hashType, boolean anyoneCanPay) {
  TransactionSignature signature = tx.calculateSignature(0, serverKey, createP2SHRedeemScript(), hashType, anyoneCanPay);
  byte[] mySig = signature.encodeToBitcoin();
  Script scriptSig = ScriptBuilder.createCLTVPaymentChannelP2SHInput(bestValueSignature, mySig, createP2SHRedeemScript());
  tx.getInput(0).setScriptSig(scriptSig);
}

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

@Test(expected = VerificationException.LargerThanMaxBlockSize.class)
public void tooHuge() throws Exception {
  tx.getInput(0).setScriptBytes(new byte[Block.MAX_BLOCK_SIZE]);
  tx.verify();
}

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

@Test
public void testSequenceNumber() throws Exception {
  Wallet wallet = new Wallet(PARAMS);
  Transaction tx1 = createFakeTx(PARAMS, Coin.COIN, wallet.currentReceiveAddress());
  tx1.getInput(0).setSequenceNumber(TransactionInput.NO_SEQUENCE);
  wallet.receivePending(tx1, null);
  Transaction tx2 = createFakeTx(PARAMS, Coin.COIN, wallet.currentReceiveAddress());
  tx2.getInput(0).setSequenceNumber(TransactionInput.NO_SEQUENCE - 1);
  wallet.receivePending(tx2, null);
  Wallet walletCopy = roundTrip(wallet);
  Transaction tx1copy = checkNotNull(walletCopy.getTransaction(tx1.getHash()));
  assertEquals(TransactionInput.NO_SEQUENCE, tx1copy.getInput(0).getSequenceNumber());
  Transaction tx2copy = checkNotNull(walletCopy.getTransaction(tx2.getHash()));
  assertEquals(TransactionInput.NO_SEQUENCE - 1, tx2copy.getInput(0).getSequenceNumber());
}

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

@Test(expected = VerificationException.DuplicatedOutPoint.class)
public void duplicateOutPoint() throws Exception {
  TransactionInput input = tx.getInput(0);
  input.setScriptBytes(new byte[1]);
  tx.addInput(input.duplicateDetached());
  tx.verify();
}

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

public void completeTxPartiallySignedMarried(Wallet.MissingSigsMode missSigMode, byte[] expectedSig) throws Exception {
  // create married wallet without signer
  createMarriedWallet(2, 2, false);
  myAddress = wallet.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS);
  sendMoneyToWallet(AbstractBlockChain.NewBlockType.BEST_CHAIN, COIN, myAddress);
  SendRequest req = SendRequest.emptyWallet(OTHER_ADDRESS);
  req.missingSigsMode = missSigMode;
  wallet.completeTx(req);
  TransactionInput input = req.tx.getInput(0);
  boolean firstSigIsMissing = Arrays.equals(expectedSig, input.getScriptSig().getChunks().get(1).data);
  boolean secondSigIsMissing = Arrays.equals(expectedSig, input.getScriptSig().getChunks().get(2).data);
  assertTrue("Only one of the signatures should be missing/dummy", firstSigIsMissing ^ secondSigIsMissing);
  int localSigIndex = firstSigIsMissing ? 2 : 1;
  int length = input.getScriptSig().getChunks().get(localSigIndex).data.length;
  assertTrue("Local sig should be present: " + length, length >= 70);
}

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

@Test
public void testPrioSizeCalc() throws Exception {
  Transaction tx1 = FakeTxBuilder.createFakeTx(PARAMS, Coin.COIN, ADDRESS);
  int size1 = tx1.getMessageSize();
  int size2 = tx1.getMessageSizeForPriorityCalc();
  assertEquals(113, size1 - size2);
  tx1.getInput(0).setScriptSig(new Script(new byte[109]));
  assertEquals(78, tx1.getMessageSizeForPriorityCalc());
  tx1.getInput(0).setScriptSig(new Script(new byte[110]));
  assertEquals(78, tx1.getMessageSizeForPriorityCalc());
  tx1.getInput(0).setScriptSig(new Script(new byte[111]));
  assertEquals(79, tx1.getMessageSizeForPriorityCalc());
}

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

@Test
  public void optInFullRBF() throws Exception {
    Transaction tx = FakeTxBuilder.createFakeTx(PARAMS);
    tx.getInput(0).setSequenceNumber(TransactionInput.NO_SEQUENCE - 2);
    DefaultRiskAnalysis analysis = DefaultRiskAnalysis.FACTORY.create(wallet, tx, NO_DEPS);
    assertEquals(RiskAnalysis.Result.NON_FINAL, analysis.analyze());
    assertEquals(tx, analysis.getNonFinal());
  }
}

相关文章

微信公众号

最新文章

更多

Transaction类方法