본문으로 건너뛰기
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

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

페이지를 개선해 주세요