0.0.6 • Published 3 days ago

libcardano v0.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
3 days ago

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")
    }
})