passer de p2sh avec bitcoinj


d’abord, je génère p2sh et envoie des pièces à ce p2sh

ECKey clientKey = new ECKey();

ECKey serverKey = new ECKey();

ECKey thirdPartyKey = new ECKey();

Lister keys = ImmutableList.of(clientKey, serverKey,thirdPartyKey);

Script multisigScript = ScriptBuilder.(2, clés);

passer de p2sh avec bitcoinj

Adresse de chaîne = multisigScript.getToAddress(params).toString();

puis j’envoie des pièces à l' »adresse » sur testnet3

Deuxièmement, j’utilise le portefeuille en bitcoinj pour regarder « l’adresse » et obtenir le tx

WalletAppKit walletAppKit = new WalletAppKit(params, new File(« ./btcWallet »), « test »);

walletAppKit.startAsync();

walletAppKit.awaitRunning();

Portefeuille walletTemp = walletAppKit.wallet();

«  »);

walletTemp.addWatchedAddress(watchAddress,1576573079);

Régler transSet = walletTemp.getTransactions(false);

Troisièmement, après avoir reçu le tx et la sortie, je veux le dépenser

TransactionOutput out =..//output que la deuxième étape que je reçois du tx

Script scriptOut = out.getScriptPubKey()

Coin outValue = Coin.valueOf (10000);

Script reverseScript = ScriptBuilder.createRedeemScript(2, clés);

«  »);

Dépenses de transaction Tx = new Transaction(params);

passerTx.addOutput(outValue, sendAddress);

Entrée de transaction = dépenseTx.addInput(out);

Sha256Hash sighash = passerTx.hashForSignature(0, racheterScript, Transaction.SigHash.ALL,

faux);

ECKey.ECDSASignature cSignature = clientKey.sign(sighash);

ECKey.ECDSASignature sSignature = serverKey.sign(sighash);

TransactionSignature cTransactionSignature = new TransactionSignature(cSignature, Transaction.SigHash.ALL,

faux);

TransactionSignature sTransactionSignature = new TransactionSignature(sSignature, Transaction.SigHash.ALL,

faux);

Script inputScript = ScriptBuilder.(ImmutableList.of(cTransactionSignature, sTransactionSignature), scriptOut);

input.setScriptSig(inputScript);

input.verify(out);

il y a une erreur à « input.verify(out); »,Le script a entraîné une pile non vraie  :

Je ne sais pas où mon code est faux et comment le résoudre.

trouver un problème similaire, mais pas le même : Erreurs lors de la création/envoi de transactions multisig