Utility functions build as a wrapper around @kadena/client
npm install @kadena/client-utilsUtility functions build as a wrapper around @kadena/client

Introducing @kadena/client-utils, a library that aims to provide a
higher-level API for interacting with smart contracts. The library includes
helpers for the coin module, which can be imported using@kadena/client-utils/coin. The library also exports utilities under /core
for smart contract developers to develop APIs, including some functions that can
be used for any kind of smart contracts.
Find a [minimal interactive example at CodeSandbox][1]
- asyncPipe
- submitClient
- preflightClient
- dirtyReadClient
- crossChainClient
examples
``TS
import { getBalance, transferCrossChain } from "@kadena/client-utils/coin"
import { signWithChainweaver } from "@kadena/client"
const balance = await getBalance(
accountOne.account,
'development',
'0',
'http://localhost:8080',
);
const result = await createAccount(
{
account: 'javad',
keyset: {
pred: 'keys-all',
keys: ['key-a', 'key-b'],
},
gasPayer: { account: 'gasPayer', publicKeys: [''] },
chainId: '0',
},
{
host: 'https://api.testnet.chainweb.com',
defaults: {
networkId: 'testnet04',
},
sign: signWithChainweaver,
},
)
// signed Tx
.on('sign', (data) => console.log(data))
// preflight result
.on('preflight', (data) => console.log(data))
// submit result
.on('submit', (data) => console.log(data))
// listen result
.on('listen', (data) => console.log(data))
.execute();
`
This module also provides tools for estimating optimal gas prices and analyzing
gas usage from recent blocks on the Kadena blockchain.
`ts`
import {
estimateGasPrice,
getBlocksGasInformation,
} from '@kadena/client-utils';
Estimates a suitable gas price by analyzing recent block data. The estimated
value is the median of the minimum gas prices from a set of 20 recent blocks,
after filtering out any empty blocks.
#### Signature
`ts`
estimateGasPrice(parameters: IGasPriceEstimateProperties): Promise
#### Parameters
- host? _(string)_: Optional base URL of the Chainweb API (defaults tonetworkId
Kadena's mainnet/testnet based on ).chainId
- _(string)_: Chain ID (e.g., "0" through "19").networkId?
- _(string)_: Network ID (e.g., "mainnet01", "testnet04" -"mainnet01"
default ).height?
- _(number)_: Optional block max height ( default the chian height).items?
- _(number)_: Number of blocks to fetch (default: 20).
#### Returns
- Promise: Estimated gas price (defaults to 1e-7 if no transactions
are found).
#### Example
`tsSuggested gas price: ${price}
const price = await estimateGasPrice({
chainId: '0',
networkId: 'mainnet01',
});
console.log();`
---
Fetches recent block data and returns gas usage statistics for each block. This
information can be used to estimate gas prices based on custom criteria.
#### Signature
`ts`
getBlocksGasInformation(parameters: IGasPriceEstimateProperties): Promise
#### Parameters
- host? _(string)_: Optional base URL of the Chainweb API (defaults tonetworkId
Kadena's mainnet/testnet based on ).chainId
- _(string)_: Chain ID (e.g., "0" through "19").networkId?
- _(string)_: Network ID (e.g., "mainnet01", "testnet04" -"mainnet01"
default ).height?
- _(number)_: Optional block max height ( default the chian height).items?
- _(number)_: Number of blocks to fetch (default: 20).
#### Returns
- Promise: Array of gas information objects per block.
#### Example
`ts`
const blocks = await getBlocksGasInformation({
chainId: '0',
networkId: 'mainnet01',
});
console.log(blocks);
Each block's gas info includes:
- blockHeight: Block numbertotalGasConsumed
- : Sum of actual gas used by all txstotalGasLimit
- : Sum of declared gas limitstotalGasPaid
- : Total gasPrice * gasLimit of all txstxCount
- : Number of transactionsblockGasUsedPercent
- : Gas usage vs block capacitygasPriceStats
- :min
- : Minimum gas pricemax
- : Maximum gas priceavg
- : Average gas pricemedian
- : Median gas price
- Uses https://api.chainweb.com for mainnet andhttps://api.testnet.chainweb.com
for testnet by default.150000`.
- Block gas capacity is assumed as
- Skips blocks with zero transactions when estimating gas price.
[1]:
https://githubbox.com/kadena-community/kadena.js/tree/main/packages/libs/client-utils/codesandbox