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
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 functionsweb3.eth.accounts.recoverTransaction(rlp)web3.eth.accounts.signTransaction(obj or rlp)web3.eth.accounts.signTransactionAsFeePayer(obj or rlp)// account-bound functionsvar 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_protocolVersionweb3.eth.getProtocolVersion()// klay_sendTransaction if kaia TxType, otherwise eth_sendTransaction// Additional treatment for Kaia Wallet compatibilityweb3.eth.sendTransaction(obj)// klay_sendRawTransaction if kaia TxType, otherwise eth_sendRawTransactionweb3.eth.sendSignedTransaction(rlp)// klay_signTransaction if kaia TxType, otherwise eth_signTransaction// Additional treatment for Kaia Wallet compatibilityweb3.eth.signTransaction(obj)
kaia RPCs
- Following functions calls kaia RPCs. See src/web3.ts
web3.klay.blockNumber() // klay_blockNumberweb3.net.networkID() // net_networkID