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);
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