0.0.1-b.3 • Published 8 months ago

@first-ledger/kit v0.0.1-b.3

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

First-Ledger Data Kit

The Data Kit is a modular, lightweight package designed to fetch, aggregate, and parse data from various blockchain networks. It provides developers with a unified interface to access blockchain data in a structured and usable format, enabling seamless integration into applications such as wallets, analytics tools, decentralized finance (DeFi) platforms, and more.

Features

  • Multi-Chain Support: Fetch data from popular blockchains like Ethereum, Bitcoin, Binance Smart Chain, Solana, and more.
  • Data Aggregation: Combine raw blockchain data (e.g., transactions, blocks, smart contract events) into a cohesive format.
  • Custom Parsers: Transform chain-specific data into standardized outputs tailored to your application's needs.
  • Extensible Design: Easily add support for new blockchains or data types with modular adapters.
  • Real-Time & Historical Data: Retrieve both live updates and archived blockchain data.
  • Error Handling: Robust mechanisms to manage network issues, rate limits, and malformed data.

Installation

Install the package via npm:

npm install @first-ledger/kit

Or with Yarn:

yarn add @first-ledger/kit

Usage

Basic Example

Fetch and parse the latest block data from Ethereum:

const { BlockchainDataKit } = require('@first-ledger/kit');

// Initialize the kit with a blockchain adapter
const kit = new BlockchainDataKit({
  chain: 'ethereum',
  rpcUrl: 'https://mainnet.infura.io/v3/YOUR_INFURA_KEY',
});

// Fetch the latest block
kit
  .getLatestBlock()
  .then((block) => {
    console.log('Latest Ethereum Block:', block);
  })
  .catch((err) => {
    console.error('Error fetching block:', err);
  });

Aggregating Transaction Data

Aggregate transaction data for a specific address:

const { BlockchainDataKit } = require('blockchain-data-kit');

const kit = new BlockchainDataKit({
  chain: 'bitcoin',
  rpcUrl: 'http://your-bitcoin-node:8332',
});

kit
  .getAddressTransactions('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa')
  .then((transactions) => {
    console.log('Bitcoin Transactions:', transactions);
  })
  .catch((err) => {
    console.error('Error:', err);
  });

Supported Blockchains

BlockchainAdapter NameStatus
XRP LedgerxrplStable
EthereumethereumTBD
BitcoinbitcoinTBD
Binance Smart ChainbscTBD
SolanasolanaTBD
PolygonpolygonTBD

To request support for additional chains, see Contributing (#contributing).

Configuration

The kit accepts a configuration object to customize its behavior:

javascript

const kit = new BlockchainDataKit({
  chain: 'ethereum', // Blockchain adapter name
  rpcUrl: 'YOUR_RPC_URL', // RPC endpoint
  apiKey: 'YOUR_API_KEY', // Optional: API key if required
  timeout: 5000, // Request timeout in ms
  maxRetries: 3, // Retry failed requests
  parser: customParserFunction, // Optional: Custom parsing logic
});

Custom Parsers

You can define custom parsers to format data according to your needs:

javascript

function customParserFunction(rawData) {
  return {
    blockNumber: rawData.number,
    timestamp: new Date(rawData.timestamp * 1000),
    transactionCount: rawData.transactions.length,
  };
}

const kit = new BlockchainDataKit({
  chain: 'ethereum',
  rpcUrl: 'YOUR_RPC_URL',
  parser: customParserFunction,
});

kit.getLatestBlock().then((parsedBlock) => {
  console.log('Custom Parsed Block:', parsedBlock);
});

API Reference

BlockchainDataKit(config)

  • config: Object containing chain type, RPC URL, and optional settings.

Methods

  • .getLatestBlock(): Fetches the most recent block.
  • .getBlockByNumber(number): Fetches a block by its number or height.
  • .getAddressTransactions(address): Retrieves transactions for a given address.
  • .getContractEvents(contractAddress, eventName): Fetches smart contract events (if supported by the chain).

For detailed method documentation, see the API Docs (docs/api.md).

Contributing

We welcome contributions! To add a new blockchain adapter or improve the kit:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/your-feature).
  3. Submit a pull request with your changes.

See CONTRIBUTING.md for more details.

License

This project is licensed under the MIT License. See LICENSE for details.

Support

For issues or questions, open a ticket on our GitHub Issues page or reach out via email at support@first-ledger.com.