0.0.6 • Published 3 days ago
libcardano v0.0.6
Cardano Node JS
Components:
1.Interceptor
It intercepts connection between two cardano-nodes. The communication is logged with decoded protocol messages.
example:
##
## [[ Node1 ]] ----->> [127.0.0.1:3001 [[Interceptor]]] ----->> [172.31.0.15:3002 [[Node 2]]]
##
yarn interceptor 0.0.0.0:3001 172.31.0.15:3002
2.Client
Attempts connection to remote node and
- maintain connection with it with periodic ping
- log all the communication to/from the server
example:
yarn client preview-node.world.dev.cardano.org:30002
3. Using as a library
import { createInMemoryClientWithPeer } from 'libcardano/helper'
import cbor from 'libcardano/lib/cbor'
import { parseTransaction, removeUndefined } from 'libcardano/cardano/ledger-serialization/transaction'
const blockchain = createInMemoryClientWithPeer("sanchonet-node.play.dev.cardano.org:3001", 4, false)
blockchain.pipeline("extendBlock", (block, cb) => {
setImmediate(cb)
const decoded = cbor.decode(block.body)[1]
const transactionBodies = cbor.encode(decoded[1]).toString('hex')
const transactionWitnesses = cbor.encode(decoded[2]).toString('hex')
console.log("New Block hash:", block.headerHash.toString('hex'), "blockNo:", block.blockNo, "slotNo:", block.slotNo)
if (transactionBodies !== "80" && transactionWitnesses !== "80") {
const transaction = parseTransaction(decoded[1], decoded[2], decoded[3])
const filteredTransaction = {
transactionBody: transaction.transactionBody.map(removeUndefined),
transactionWitnessSet: transaction.transactionWitnessSet.map(removeUndefined),
auxiliaryDataSet: transaction.auxiliaryDataSet
}
console.log("Block Contents: ")
console.log(filteredTransaction)
}
else {
console.log("Empty Block")
}
})