BCoin bsock : écoutez les transactions et donnez-leur un sens
J’essaie de configurer bsock dans mon application bcoin, dans le but d’écouter certaines transactions diffusées sur le réseau Bitcoin. Cela permettrait aux utilisateurs de mon application d’avoir des informations en temps réel sur les paiements (non confirmés) à des adresses qui sont pertinentes pour eux, sans avoir à interroger activement mon nœud à intervalles réguliers.
La documentation de BCoin.io est plutôt bonne et j’ai réussi à établir une connexion socket en utilisant bsock. J’arrive à m’abonner à la chaîne mempool pour écouter ‘tx’. J’ai également configuré le filtre de floraison avec les règles appropriées.
L’application enregistre correctement les transactions dans le mempool qui correspondent au filtre. Jusqu’ici tout va bien.
Quoi qu’il en soit, je ne peux pas obtenir les adresses des entrées et des sorties de l’objet de transaction en cours de journalisation.
Chaque propriété d’adresse dans le TX ressemble à ceci:
adresse:
Inutile de dire que ce format ne me permet pas de faire grand-chose avec les adresses …
Que dois-je faire pour obtenir la chaîne d’adresse (dans ce cas: ‘bc1qsgjma9uamep8k6eln4j9xeq6aqhrljmnwhtjdj’) dans JS en utilisant la bibliothèque BCOIN?
Merci beaucoup
Désolé mais cela ne fonctionne pas.
Voici la réponse que j’obtiens:
Nœud – Événement TX:
{
hauteur: -1,
bloc: nul,
temps: 0,
date: nul,
indice: -1,
version 1,
contributions:[
{
type: ‘témoinpubkeyhash’,
sous-type: nul,
adresse:,
scénario:,
témoin:,
racheter: nul,
séquence: 4294967295,
prévaut:,
pièce: nul
}
],
les sorties:[
{
tapez: ‘scripthash’,
valeur: ‘0.00011244’,
scénario:,
adresse:
},
{
type: ‘témoinpubkeyhash’,
valeur: ‘0.00002918’,
scénario:,
adresse:
}
],
locktime: 0
}
Les sorties
Valeur OUT: 11244
OUT: indéfini
(node: 8138) UnhandledPromiseRejectionWarning: TypeError: Impossible de lire la propriété ‘toString’ d’undefined
à EventEmitter. (/home/mmmilione/api/index.js:64:66)
à EventEmitter.emit (events.js: 210: 5)
à Socket.handleEvent (/home/mmmilione/api/node_modules/bsock/lib/socket.js:685:19)
à Socket.handlePacket (/home/mmmilione/api/node_modules/bsock/lib/socket.js:620:21)
à Socket.handleMessage (/home/mmmilione/api/node_modules/bsock/lib/socket.js:526:21)
à Socket.handleFrame (/home/mmmilione/api/node_modules/bsock/lib/socket.js:448:21)
à Parser. (/home/mmmilione/api/node_modules/bsock/lib/socket.js:150:20)
à Parser.emit (events.js: 210: 5)
à Parser.feedBinary (/home/mmmilione/api/node_modules/bsock/lib/parser.js:40:10)
à Socket.onMessage (/home/mmmilione/api/node_modules/bsock/lib/socket.js:238:17)
(nœud: 8138) UnhandledPromiseRejectionWarning: Rejet de promesse non géré. Cette erreur est née soit en jetant à l’intérieur d’une fonction asynchrone sans bloc catch, soit en rejetant une promesse qui n’était pas
manipulé avec .catch (). (identifiant de rejet: 2)
(nœud: 8138) [DEP0018] DeprecationWarning: les rejets de promesses non gérées sont obsolètes. À l’avenir, les refus de promesse qui ne sont pas traités mettront fin au processus Node.js avec un code de sortie différent de zéro.
Mon code:
nodeSocket.bind (‘tx’, (brut) => {
const newTX = TX.fromRaw (brut);
console.log (‘Node – Événement TX: n’, newTX);
console.log (« Sorties »);
//newTX.outputs.forEach(output => {
for (let out = 0; out