Bitcoin Core - s'il vous plaît, j'espère savoir comment puis-je modifier la fonction de transfert
voici le journal de mon code source
[
{
txid: 'eb31223773c7b86288e16f63ce16d1ed40ca7b308ab612f3d698db87e33de45e',
vout: 1,
status: {
confirmed: true,
block_height: 790395,
block_hash: '0000000000000000000481a20c90090f35f5efb9c7633d275ec9bd4a1cc519f7',
block_time: 1684465824
},
value: 546
},
{
txid: 'd3b262afa2fd6242952bfbed7b6fefd07d1225f58e35c330ca5bae21ad71d9d5',
vout: 0,
status: {
confirmed: true,
block_height: 826653,
block_hash: '000000000000000000037cddb5c23599063fbc75a4c701dc143a493a9e1c63c0',
block_time: 1705825641
},
value: 10000
},
{
txid: '2429d9ad4f66b8eb0ea240033cd53cc0944e3a8dac32bc291a237145c9ab092d',
vout: 0,
status: {
confirmed: true,
block_height: 819740,
block_hash: '00000000000000000003043fcdbf1f554027bfe32339c8184382704c6b39e690',
block_time: 1701691113
},
value: 546
}
]
Avertissement de dépréciation : TransactionBuilder sera supprimé à l'avenir. (v6.xx ou version ultérieure) Veuillez utiliser la classe Psbt à la place. Des exemples d'utilisation sont disponibles dans le fichier de test d'intégration transactions-psbt.js sur notre Github. Une explication de haut niveau est également disponible dans les fichiers psbt.ts et psbt.js. C'est vrai. UTXO 합계 : 11092 DÉPRÉCIÉ : les arguments de la méthode de signe TransactionBuilder changeront dans la v6, veuillez utiliser l'interface TxbSignArg. DÉPRÉCIÉ : les arguments de la méthode de signe TransactionBuilder changeront dans la v6, veuillez utiliser l'interface TxbSignArg. DÉPRÉCIÉ : les arguments de la méthode de signe TransactionBuilder changeront dans la v6, veuillez utiliser le Interface TxbSignArg Test Mempool Accepter Résultat : [
{ txid : 'e7b368d5ffea7d47039b59b31d5a8e64e6bd8845d697ecb4bdc9bb8889e5c6ac', autorisé : false, 'reject-reason': 'missing-inputs' } ]Erreur lors de la récupération ou du traitement des UTXO : bad-txns-inputs-missingorspent
mais je ne sais pas pourquoi cela ne fonctionne pas et comment y remédier.
qui connaît ce problème... veuillez résoudre ou expliquer ce problème.
mon code source est ici..
fonction asynchrone transferBitcoin (senderAddress, senderPrivate, destinataireAddress, montant) { //const network = bitcoin.networks.mainnet; //getUTX(adresseexpéditeur); // Configuration Bitcoin Core RPC const rpcConfig = { nom d'utilisateur : 'raspibolt', mot de passe : 'test00000', port : 8332, hôte : 'localhost', réseau : 'mainnet', } ;
// Clé privée pour l'envoi du portefeuille const sendPrivateKeyWIF = senderPrivate; const sendingKeyPair = bitcoin.ECPair.fromWIF (sendingPrivateKeyWIF, réseau); // Clé privée pour recevoir le portefeuille const gettingPrivateKeyWIF = senderPrivate; const réceptionKeyPair = bitcoin.ECPair.fromWIF(receivePrivateKeyWIF, réseau); const récepteurAddress = bitcoin.payments.p2wpkh({ pubkey : récepteurKeyPair.publicKey, réseau }).address ; montant = parseInt(btcToSatoshi(montant)); // Client Bitcoin Core const client = nouveau BitcoinCore (rpcConfig); // API Mempool.space pour les UTXO const mempoolApi = 'https://mempool.space/api'; essayez { const réponse = wait axios.get(`${mempoolApi}/address/${senderAddress}/utxo`); const utxos = réponse.data; console.log(utxos); if (utxos.length === 0) { console.error('Aucun UTXO trouvé. Abandon de la transaction.'); retour; } const txb = nouveau bitcoin.TransactionBuilder(réseau); // Parcourir les UTXO utxos.forEach((utxo) => { txb.addInput(utxo.txid, utxo.vout); }); const outputScript = bitcoin.address.toOutputScript (receiveAddress, réseau); const montant de sortie = 5 000 ; // Ajustez ceci en fonction de vos besoins txb.addOutput(outputScript, outputAmount); // Calculer les frais const = 1000 ; // Ajustez les frais si nécessaire // Calculez le montant total d'entrée (somme des valeurs UTXO) const totalInputAmount = utxos.reduce((total, utxo) => total + utxo.value, 0); const totalOutputAmount = outputAmount + frais ; // Il s'agit d'if (totalInputAmount 0) { const changeAddress = senderAddress; // L'adresse de changement est l'adresse de l'expéditeur dans cet exemple const changeScript = bitcoin.address.toOutputScript(changeAddress, network); txb.addOutput(changeScript, changeAmount); } // Signer les entrées utxos.forEach((utxo, index) => { txb.sign(index, sendingKeyPair); }); // Construire la transaction const tx = txb.build(); const rawTx = tx.toHex(); const txid = crypto.createHash('sha256').update(Buffer.from(rawTx, 'hex')).digest('hex'); // Test d'acceptation des transactions dans le mempool const testResult = wait client.testMempoolAccept(); console.log('Test Mempool Accept Result:', testResult); // Diffusez la transaction const BroadcastResult = wait client.sendRawTransaction(rawTx); console.log("Transaction diffusée. Résultat :", BroadcastResult); } catch (erreur) { console.error('Erreur lors de la récupération ou du traitement des UTXO :', error.message); if (error.response && error.response.data) { console.error('Données de réponse d'erreur :', error.response.data); } }
}
