Koios Typescript Client is a REST Client library which allows interacting with Koios Server Instances. Koios TypeScript Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators.
Koios is best described as a Decentralized and Elastic RESTful query layer for exploring data on Cardano blockchain to consume within applications/wallets/explorers/etc.
Resource and maintenance requirements for Cardano blockchain components (e.g. cardano-node, cardano-db-sync) are ever-growing. Along with that, every builder needs to identify how to query complex information from the chain.
- Prerequisites
- Features
- Getting Started
- Installation
- Usage
- Supported Environment Variables
- Contributing
This project requires NodeJS (version 16 or later) and NPM. Node and NPM are really easy to install. To make sure you have them available on your machine, try running the following command.
$ npm -v ; node -v
9.6.3
v16.5.0
- Synchronous REST messaging
- Pagination (Limit and Offset)
- Horizontal Filtering
- Vertical Filtering
- Sorting Supported
- Rate Control (soon)
- Inner Retry Mechanism upon Timeouts
Supported REST Services
Service | Endpoint | Description |
---|---|---|
Network | Chain Tip | Get the tip info about the latest block seen by chain |
Genesis Info | Get the Genesis parameters used to start specific era on chain | |
Get historical tokenomic stats | Get the circulating utxo, treasury, rewards, supply and reserves in lovelace for specified epoch, all epochs if empty | |
Param Update Proposals | Get all parameter update proposals submitted to the chain starting Shelley era | |
Epoch | Epoch Information | Get the epoch information, all epochs if no epoch specified |
Epoch's Protocol Parameters | Get the protocol parameters for specific epoch, returns information about all epochs if no epoch specified | |
Epoch's Block Protocols | Get the information about block protocol distribution in epoch | |
Block | Block List | Get summarised details about all blocks (paginated - latest first) |
Block Information | Get detailed information about a specific block | |
Block Transactions | Get a list of all transactions included in a provided block | |
Transactions | Transaction Information | Get detailed information about transaction(s) |
Transaction UTxOs | Get UTxO set (inputs/outputs) of transactions. | |
Transaction Metadata | Get metadata information (if any) for given transaction(s) | |
Transaction Metadata Labels | Get a list of all transaction metalabels | |
Submit Transaction | Submit an already serialized transaction to the network. | |
Transaction Status (Block Confirmations) | Get the number of block confirmations for a given transaction hash list | |
Address | Address Information | Get address info - balance, associated stake address (if any) and UTxO set |
Address Transactions | Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) | |
Address Assets | Get the list of all the assets (policy, name and quantity) for a given address | |
Transactions from payment credentials | Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) | |
Stake Account | Account List | Get a list of all accounts |
Account Information | Get the account info of any (payment or staking) address | |
Account UTxOs | Get a list of all UTxOs for a given stake address (account) | |
Account Information (Cached) | Get the cached account information for given stake addresses (accounts) | |
Account Rewards | Get the full rewards history (including MIR) for a stake address, or certain epoch if specified | |
Account Updates | Get the account updates (registration, deregistration, delegation and withdrawals) | |
Account Addresses | Get all addresses associated with an account | |
Account Assets | Get the native asset balance of an account | |
Account History | Get the staking history of an account | |
Asset | Asset List | Get the list of all native assets (paginated) |
Asset Addresses | Get the list of all addresses holding a given asset | |
NFT Address | Get the address where specified NFT currently reside on | |
Asset Information | Get the information of an asset including first minting & token registry metadata | |
Asset Information (Bulk) | Get the information of a list of assets including first minting & token registry metadata | |
Asset History | Get the mint/burn history of an asset | |
Policy Asset Address List | Get the list of addresses with quantity for each asset on the given policy. | |
Policy Asset Information | Get the information for all assets under the same policy | |
Policy Asset List | Get the list of asset under the given policy (including balances) | |
Asset Summary | Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) | |
Asset Transactions | Get the list of all asset transaction hashes (newest first) | |
Pool | Pool List | A list of all currently registered/retiring (not retired) pools |
Pool Information | Current pool statuses and details for a specified list of pool ids | |
Pool Stake Snapshot | Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation | |
Pool Delegators List | Return information about live delegators for a given pool. | |
Pool Delegators History | Return information about active delegators (incl. history) for a given pool and epoch number - current epoch if not provided. | |
Pool Blocks | Return information about blocks minted by a given pool in current epoch (or _epoch_no if provided) | |
Pool Stake, Block and Reward History | Return information about pool stake, block and reward history in a given epoch _epoch_no (or all epochs that pool existed for, in descending order if no _epoch_no was provided) | |
Pool Updates (History) | Return all pool updates for all pools or only updates for specific pool if specified | |
Pool Relays | A list of registered relays for all currently registered/retiring (not retired) pools | |
Pool Metadata | Metadata (on & off-chain) for all currently registered/retiring (not retired) pools | |
Script | Native Script List | List of all existing native script hashes along with their creation transaction hashes |
Plutus Script List | List of all existing Plutus script hashes along with their creation transaction hashes | |
Script Redeemers | List of all redeemers for a given script hash | |
Datum Information | List of datum information for given datum hashes |
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
BEFORE YOU INSTALL: please read the prerequisites
Start with cloning this repo on your local machine:
$ git clone https://github.com/adabox-aio/koios-typescript-client.git
$ cd koios-typescript-client
To install and set up the library, run:
$ npm i @adabox/koios-ts-client
import {BackendFactory} from "@adabox/koios-ts-client"
- Mainnet
const koiosBackendService = BackendFactory.getKoiosMainnetService()
- Preview
const koiosBackendService = BackendFactory.getKoiosPreviewService()
- Preprod
const koiosBackendService = BackendFactory.getKoiosPreprodService()
const koiosNetworkService = koiosBackendService.getNetworkService()
const koiosEpochService = koiosBackendService.getEpochService()
const koiosBlockService = koiosBackendService.getBlockService()
const koiosTransactionsService = koiosBackendService.getTransactionsService()
const koiosAddressService = koiosBackendService.getAddressService()
const koiosAssetService = koiosBackendService.getAssetService()
const koiosPoolService = koiosBackendService.getPoolService()
const koiosScriptService = koiosBackendService.getScriptService()
const koiosAccountService = koiosBackendService.getAccountService()
Querying a Descending Order of All Address Transactions since Block No. #42248 to Block No. #69447 (inclusive), Limited to Maximum of 10 Results.
const addresses = [
'addr_test1qrvaadv0h7atv366u6966u4rft2svjlf5uajy8lkpsgdrc24rnskuetxz2u3m5ac22s3njvftxcl2fc8k8kjr088ge0qz98xmv',
]
const options = Options.builder()
.option(Limit.of(10))
.option(Offset.of(0))
.option(Order.by("block_height", SortType.DESC))
.option(Filter.of("block_height", FilterType.GTE, "42248"))
.option(Filter.of("block_height", FilterType.LTE, "69447")).build();
const result = await koiosAddressService.getAddressTransactions(addresses, undefined, options)
console.log(result)
Koios TypeScript Client throws 2 types of errors,KoiosHttpError and KoiosTimeoutError. Each of these errors is extended from the built-in Error class, allowing you to properly catch it and handle it in your code.
import {KoiosHttpError, KoiosTimeoutError} from "@adabox/koios-ts-client";
try {
const result = await koiosTransactionsService.getTransactionInformation(["abc"])
} catch (error) {
if (error instanceof KoiosHttpError || error instanceof KoiosTimeoutError) {
console.log(error) // Koios Error
} else {
throw error // rethrow other errors
}
}
Variable | Type | Description | Default |
---|---|---|---|
KOIOS_MAX_RETRIES | integer | Sets the max retry count upon request timeout | 5 |
KOIOS_READ_TIMEOUT_SEC | integer | Sets the default read timeout for new connections (seconds) | 300 |
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Add your changes:
git add .
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request 😎