Skip to main content

Web3.js Extension for kaia

Web3.js Extension for kaia offers:

  • Drop-in replacement to new Web3(...) that supports both Ethereum and kaia transaction types involving AccountKey and TxTypes. See Modifications to the Web3 object section for details

Install​

Node.js​

  • Install

    npm install --save @kaiachain/web3js-ext

  • ESM or TypeScript

    import { Web3 } from "@kaiachain/web3js-ext";
    const web3 = new Web3("https://public-en-kairos.node.kaia.io");

  • CommonJS

    const { Web3 } = require("@kaiachain/web3js-ext");
    const web3 = new Web3("https://public-en-kairos.node.kaia.io");

Browser​

It is not recommended to use CDNs in production, But you can use below for quick prototyping.


<script src="https://cdn.jsdelivr.net/npm/@kaiachain/web3js-ext@latest/dist/web3js-ext.bundle.js"></script>
<script>
const web3 = new web3_ext.Web3(window.klaytn);
</script>

Usage​

See example and test.

Modifications to the Web3 object​

See DESIGN for source code organization.

Accounts​

  • Following functions can handle kaia TxTypes. See src/account/index.ts

    // account independent functions
    web3.eth.accounts.recoverTransaction(rlp)
    web3.eth.accounts.signTransaction(obj or rlp)
    web3.eth.accounts.signTransactionAsFeePayer(obj or rlp)
    // account-bound functions
    var account = web3.eth.accounts.create()
    var account = web3.eth.accounts.privateKeyToAccount(priv)
    var account = web3.eth.accounts.decrypt(keystore)
    account.signTransaction(obj or rlp)
    account.signTransactionAsFeePayer(obj or rlp)

  • Following functions can handle the KIP-3 kaia keystore format v4

    web3.eth.accounts.decrypt(keystore)
    web3.eth.accounts.decryptList(keystore)

Eth RPC wrappers​

  • Following functions calls different RPC, and handle kaia TxTypes. See src/eth/index.ts

    // Try klay_protocolVersion, falls back to eth_protocolVersion
    web3.eth.getProtocolVersion()
    // klay_sendTransaction if kaia TxType, otherwise eth_sendTransaction
    // Additional treatment for Kaia Wallet compatibility
    web3.eth.sendTransaction(obj)
    // klay_sendRawTransaction if kaia TxType, otherwise eth_sendRawTransaction
    web3.eth.sendSignedTransaction(rlp)
    // klay_signTransaction if kaia TxType, otherwise eth_signTransaction
    // Additional treatment for Kaia Wallet compatibility
    web3.eth.signTransaction(obj)

kaia RPCs​

  • Following functions calls kaia RPCs. See src/web3.ts

    web3.klay.blockNumber() // klay_blockNumber
    web3.net.networkID() // net_networkID