KardiaChain Docs
  • Introduction
  • Technology
    • Consensus
    • Kardia Virtual Machine (KVM)
    • Kardia Smart Contract Markup Language
    • Peer to Peer (P2P)
    • Onchain AI
    • NF3 Chip
  • For Users
    • KardiaChain Proposer Validator Selection Process
    • Staking
      • Validators
      • Delegators
      • Disciplines and Rewards
        • Disciplines
        • Rewards
    • Transaction Fee
    • Wallets
      • MetaMask Compatible
      • KardiaChain Mobile App Wallet
      • [Deprecated] KardiaChain Web Wallet
        • [Deprecated] KardiaChain Wallet Extension
  • For Developers
    • Tutorials
      • Platform
        • Running KardiaChain node
        • Private KardiaChain Network
        • KAI Integration for Exchanges
      • Smart contract development
        • Dev environment
          • Solidity
          • IDE and tools
            • Remix
            • Hardhat
            • Truffle
        • Contract verification
      • KRC20 Tokens
        • Deploying KRC20 Token
        • KRC20 token verification
      • KRC721 Tokens
        • Deploy KRC721 tokens
      • Building DApp
        • Frontend
        • Data indexing service
    • SDK
      • Web3
      • [Deprecated] KardiaChain JS SDK
      • [Deprecated] KardiaChain Golang SDK
    • RPC
      • JSON RPC API
    • KardiaID Service
      • KardiaID Service Design
      • KardiaID Service API
  • Archived Docs
    • Golang SDK
    • Network
    • KVM
    • System requirement
    • Deployment
      • Configuration
      • Local
      • Public testnet
      • Mainnet
    • KSML
    • Staking Overview
      • Delegation period
      • Consensus
      • Delegator
        • What is a delegator ?
        • Choose validator
        • Directive of delegator
        • Risk
      • Proposer selection procedure
      • Staking rewards and distributions
        • Block reward distributed
        • Fee distributed
      • Slashing and Jail
      • Rewards mechanism
      • Validator
        • What is a validator ?
        • The different states a validator
        • The responsibility of validator
        • The incentive run a validator
        • To become validator
    • KardiaChain Metamask (extension) Wallet
Powered by GitBook
On this page
  • Getting Started
  • Installation
  • Usage
  • Account Module
  • Generating a wallet
  • Get KAI balance of a wallet
  • Access wallet by private key
  • Access wallet by seed phrase
  • KAI Module
  • Event Handler
  • KRC20 Module
  • Get KRC20 balance of a wallet
  • Send a KRC20 transaction
  • Transaction Module
  • Creating a transaction
  • Get transaction detail
  • Get transaction receipt

Was this helpful?

  1. For Developers
  2. SDK

[Deprecated] KardiaChain JS SDK

Note: KardiaChain is now fully compatible with standard web3 client libraries. Developers are recommended to use the standard web3 libraries in previous page instead of this.

PreviousWeb3Next[Deprecated] KardiaChain Golang SDK

Last updated 11 months ago

Was this helpful?

This is just a quick introduction to Kardia JS SDK. For more detailed documentation, please refer to

Getting Started

KardiaChain JS SDK contains 5 modules:

  • Account module is for managing KardiaChain wallet

  • KAI module is for interacting directly with KardiaChain's blockchain network

  • Contract module is for interacting with KardiaChain's smart contract.

  • KRC20 module is for interacting with KRC20 tokens

  • Transaction module is for creating KardiaChain's transaction.

Installation

KardiaChain JS SDK can be installed from npm

npm i kardia-js-sdk

Usage

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

// Account module
const accountModule = kardiaClient.account;

// KAI module
const kaiModule = kardiaClient.kaiChain;

// Smart contract module
const smcModule = kardiaClient.contract;

// KRC20 module
const krcModule = kardiaClient.krc20;

// Transaction module
const transactionModule = kardiaClient.transaction;

Account Module

Generating a wallet

import {KardiaAccount} from 'kardia-js-sdk';

const wallet = KardiaAccount.generateWallet();

// Expected result:
// {
//    address: "YOUR_WALLET_ADDRESS",
//    privateKey: "YOUR_ADDRESS_PRIVATE_KEY",
//    balace: 0
// }

Get KAI balance of a wallet

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

// Account module
const accountModule = kardiaClient.account;

// Get balance
const balance = await accountModule.getBalance('YOUR_WALLET_ADDRESS');

Access wallet by private key

import {KardiaAccount} from 'kardia-js-sdk';

const wallet = KardiaAccount.getWalletFromPK('YOUR_ADDRESS_PRIVATE_KEY');

// Expected result:
// {
//    address: "YOUR_WALLET_ADDRESS",
//    privateKey: "YOUR_ADDRESS_PRIVATE_KEY",
//    balace: 123 // your wallet balance
// }

Access wallet by seed phrase

import {KardiaAccount} from 'kardia-js-sdk';

const wallet = KardiaAccount.getWalletFromMnemonic('YOUR_MNEMONIC_PHRASE');

// Expected result:
// {
//    address: "YOUR_WALLET_ADDRESS",
//    privateKey: "YOUR_ADDRESS_PRIVATE_KEY",
//    balace: 123 // your wallet balance
// }

KAI Module

Event Handler

const topic = keccak256('Transfer(address,address,uint256)');

    const filterId = await kardiaClient.kaiChain.newFilter({
      fromBlock: 200000,
      topics: [topic]
    })

    // To get all logs
    const allLogs = await kardiaClient.kaiChain.getFilterLogs(filterId);

    // To get logs since last poll
    const logs = await kardiaClient.kaiChain.getFilterChanges(filterId);

KRC20 Module

Get KRC20 balance of a wallet

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const krc20Instance = kardiaClient.krc20;

// Fetch KRC20 token's data from smart contract
await krc20Instance.getFromAddress('KRC20_TOKEN_ADDRESS');

const balance = await krc20Instance.balanceOf('YOUR_WALLET_ADDRESS');
// `balance` will be your wallet's balance, but with token's `decimals` padding.
// To get real ballance, use the following code

const decimals = krc20Instance.getDecimals();
const parsedBalance = balance / 10 ** decimals;

Send a KRC20 transaction

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const krc20Instance = kardiaClient.krc20;

const txResult = await krc20Instance.transfer(
    'YOUR_WALLET_PRIVATE_KEY',
    'RECEIVER_ADDRESS',
    1 // Amount of tokens to send
);

Transaction Module

Creating a transaction

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

// Get your wallet's latest nonce
const nonce = await kardiaClient.account.getNonce('YOUR_WALLET_ADDRESS');
const txData = {
  to: 'RECEIVER_WALLET_ADDRESS',
  nonce,
  gas: 3000000,      // Gas limit
  gasPrice: 1*10**9,     // Minimum Gas Price = 1 OXY
  value: 231095,    // Amount of KAI to send
};

// Send transaction to network and get transaction hash immediately
const txHash = await kardiaClient.transaction.sendTransaction(
  txData,
  'YOUR_WALLET_PRIVATEKEY'
);

// txHash should be something like '0x0a2db5831c314363a97a79f416061a9daec5230f8b6306cd1c431b467c42f820'

// If you want to wait to the transaction to complete, follow the below code

const txResult = await kardiaClient.transaction.sendTransaction(
  txData,
  'YOUR_WALLET_PRIVATEKEY',
  true,    // Flag to indicate if you want to wait for the transaction to complete
  50000    // Time (in ms) you want to wait for transaction to complete, default will be 300000 (300s)
);

Get transaction detail

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const txDetail = await kardiaClient.transaction.getTransaction('TRANSACTION_HASH');

Get transaction receipt

import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const txReceipt = await kardiaClient.transaction.getTransactionReceipt('TRANSACTION_HASH');
https://docs.kardiachain.io/js-sdk/