Unleash the Blockchain Superpowers: 10 Mighty Node.js Libraries That Will Transform Your Applications! one must know!!
Top-10 mighty Libraries
Here are the Top-10 Blockchain Modules for Node.js along with code implementations.
Ethers.js (Ethereum):
Developer-friendly APIs for smart contract interaction, wallet creation, and transaction management.documentation: https://docs.ethers.org/v6/getting-started/
npm: https://www.npmjs.com/package/ethers
Github: https://github.com/ethers-io/ethers.jsconst ethers = require('ethers'); // Example: Creating a wallet const wallet = ethers.Wallet.createRandom(); console.log('Wallet Address:', wallet.address); // Example: Sending a transaction const provider = ethers.getDefaultProvider('rinkeby'); const transaction = { to: '0x123456789...', value: ethers.utils.parseEther('1.0') }; const signedTransaction = await wallet.sign(transaction); const sentTransaction = await provider.sendTransaction(signedTransaction); console.log('Transaction Hash:', sentTransaction.hash);
Web3.js (Ethereum):
Extensive API for contract deployment, transaction management, and event handling.documentation: https://web3js.readthedocs.io/en/v1.2.7/web3.html
npm: https://www.npmjs.com/package/web3
Github: https://github.com/ethereum/web3.jsconst Web3 = require('web3'); const web3 = new Web3('http://localhost:8545'); // Example: Getting the latest block number web3.eth.getBlockNumber() .then(blockNumber => { console.log('Latest Block Number:', blockNumber); }) .catch(error => { console.error('Error:', error); });
Solana web3.js (solana/web3.js)
Solana Web3.js is a powerful library for interacting with the Solana blockchain in Node.js applications. It provides a comprehensive set of APIs for contract deployment, transaction management, and data retrieval.documentation: https://solana-labs.github.io/solana-web3.js/
npm: https://www.npmjs.com/package/@solana/web3.js
Github: https://github.com/solana-labs/solana-web3.jsconst Web3 = require('@solana/web3.js'); const web3 = new Web3('https://api.mainnet-beta.solana.com'); // Example: Getting the latest block number web3.getBlockNumber().then((blockNumber) => { console.log('Latest Block Number:', blockNumber); }).catch((error) => { console.error('Error:', error); });
Polkadot (@polkadot/api)
a powerful tool for interacting with the Polkadot blockchain in Node.js applications. It provides a comprehensive set of APIs and utilities to connect to Polkadot networks, query blockchain data, submit transactions, and interact with smart contracts.documentation: https://polkadot.js.org/docs/api/start/install
npm: https://www.npmjs.com/package/@polkadot/api
Github: https://github.com/polkadot-js/apiconst { ApiPromise, WsProvider } = require('@polkadot/api'); // Example: Connecting to a Polkadot node and querying blockchain data async function connectAndQuery() { const provider = new WsProvider('wss://rpc.polkadot.io'); const api = await ApiPromise.create({ provider }); const blockHash = await api.rpc.chain.getBlockHash(); const blockHeader = await api.rpc.chain.getHeader(blockHash); const blockNumber = blockHeader.number.toNumber(); console.log('Latest Block Number:', blockNumber); } connectAndQuery().catch((error) => { console.error('Error:', error); });
Bitcoinjs-lib (Bitcoin):
Comprehensive support for Bitcoin wallet creation, transaction signing, and block verification.
npm: https://www.npmjs.com/package/bitcoinjs-lib
Github: https://github.com/bitcoinjs/bitcoinjs-libconst bitcoin = require('bitcoinjs-lib'); // Example: Creating a new Bitcoin address const keyPair = bitcoin.ECPair.makeRandom(); const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey }); console.log('Bitcoin Address:', address); // Example: Creating a transaction const txb = new bitcoin.TransactionBuilder(); txb.addInput('prev_tx_hash', 0); // Previous transaction hash and output index txb.addOutput('recipient_address', 1000000); // Recipient address and amount in satoshis txb.sign(0, keyPair); // Sign the transaction input const txHex = txb.build().toHex(); console.log('Transaction Hex:', txHex);
Truffle (Ethereum):
Simplified smart contract development with built-in compilation, testing, and deployment tools.
documentation: https://trufflesuite.com/docs/truffle/how-to/install/
npm: https://www.npmjs.com/package/truffle
Github: https://github.com/trufflesuite/truffleconst TruffleContract = require('@truffle/contract'); const contractJson = require('./build/contracts/MyContract.json'); // Example: Interacting with a smart contract const MyContract = TruffleContract(contractJson); MyContract.setProvider('http://localhost:8545'); const instance = await MyContract.deployed(); const result = await instance.myMethod(param1, param2); console.log('Result:', result);
Hyperledger-fabric-client (Hyperledger Fabric):
Seamless integration with Hyperledger Fabric networks for transaction submission and data querying.
npm: https://www.npmjs.com/package/fabric-network
GitHub: https://github.com/hyperledger/fabric-sdk-nodeconst { Gateway, Wallets } = require('fabric-network'); const path = require('path'); // Example: Submitting a transaction to a Fabric network async function submitTransaction() { const ccpPath = path.resolve(__dirname, 'connection.json'); const walletPath = path.resolve(__dirname, 'wallet'); const wallet = await Wallets.newFileSystemWallet(walletPath); const gateway = new Gateway(); await gateway.connect(ccpPath, { wallet, identity: 'user1', discovery: { enabled: true, asLocalhost: true }, }); const network = await gateway.getNetwork('channel1'); const contract = network.getContract('mychaincode'); const response = await contract.submitTransaction('myFunction', 'arg1', 'arg2'); console.log('Transaction Response:', response.toString()); await gateway.disconnect(); } submitTransaction();
Stellar-sdk (Stellar):
Stellar blockchain integration with features like wallet creation, transaction management, and balance retrieval.documentation: https://web3js.readthedocs.io/en/v1.2.7/web3.html
npm: https://www.npmjs.com/package/stellar-sdk
Github: https://github.com/stellar/js-stellar-sdkconst StellarSdk = require('stellar-sdk'); const server = new StellarSdk.Server('https://horizon.stellar.org'); // Example: Retrieving an account's balances server.loadAccount('public_key') .then(account => { console.log('Account Balances:', account.balances); }) .catch(error => { console.error('Error:', error); });
Sawtooth-sdk (Hyperledger Sawtooth):
Simplified development on Hyperledger Sawtooth networks with transaction submission and state management.npm: https://www.npmjs.com/package/sawtooth-sdk
Github: https://github.com/hyperledger/sawtooth-sdk-javascriptconst { createContext, CryptoFactory } = require('sawtooth-sdk/signing'); const { createHash } = require('crypto'); const { protobuf } = require('sawtooth-sdk'); // Example: Creating a new transaction header const context = createContext('secp256k1'); const privateKey = context.newRandomPrivateKey(); const signer = new CryptoFactory(context).newSigner(privateKey); const payload = 'hello'; const transactionHeaderBytes = protobuf.TransactionHeader.encode({ signerPublicKey: signer.getPublicKey().asHex(), familyName: 'myfamily', familyVersion: '1.0', inputs: ['address1', 'address2'], outputs: ['address3', 'address4'], nonce: createHash('sha512').update(payload).digest('hex'), payloadSha512: createHash('sha512').update(payload).digest('hex'), batcherPublicKey: signer.getPublicKey().asHex(), dependencies: [], payloadEncoding: 'utf-8', }).finish(); console.log('Transaction Header:', transactionHeaderBytes);
eosjs (EOS):
Extensive functionality for EOS blockchain, including transaction signing, contract interaction, and data retrieval.
documentation: https://developers.eos.io/manuals/eosjs/latest/index
npm: https://www.npmjs.com/package/eosjs
Github: https://github.com/EOSIO/eosjsconst { Api, JsonRpc } = require('eosjs'); const fetch = require('node-fetch'); const rpc = new JsonRpc('https://api.example.com', { fetch }); // Example: Getting a blockchain account rpc.get_account('account_name') .then(account => { console.log('Account:', account); }) .catch(error => { console.error('Error:', error); });
Conclusion
These libraries provide a wide range of tools and functionalities for building blockchain applications in Node.js. Each library is tailored to work with different blockchain platforms and offers its own set of advantages in terms of features, community support, and ease of use.
For Amazing Content Follow me on Twitter
until then see you in next tech-blog