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
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");
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>
See DESIGN for source code organization.
- Following functions can handle Klaytn 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 Klaytn keystore format v4
web3.eth.accounts.decrypt(keystore) web3.eth.accounts.decryptList(keystore)
- Following functions calls different RPC, and handle Klaytn TxTypes. See src/eth/index.ts
// Try klay_protocolVersion, falls back to eth_protocolVersion web3.eth.getProtocolVersion() // klay_sendTransaction if Klaytn TxType, otherwise eth_sendTransaction // Additional treatment for Kaikas compatibility web3.eth.sendTransaction(obj) // klay_sendRawTransaction if Klaytn TxType, otherwise eth_sendRawTransaction web3.eth.sendSignedTransaction(rlp) // klay_signTransaction if Klaytn TxType, otherwise eth_signTransaction // Additional treatment for Kaikas compatibility web3.eth.signTransaction(obj)
- Following functions calls Klaytn RPCs. See src/web3.ts
web3.klay.blockNumber() // klay_blockNumber web3.net.networkID() // net_networkID