This page uses machine translation from English, which may contain errors or unclear language. For the most accurate information, please see the original English version. Some content may be in the original English due to frequent updates. Help us improve this page's translation by joining our effort on Crowdin. (Crowdin translation page, Contributing guide)
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