Skip to Content
Packages@cfxdevkit/core

@cfxdevkit/core

Foundation layer of the cfxdevkit SDK: chain clients, HD wallet derivation, contract read/write utilities, and automation primitives.

pnpm add @cfxdevkit/core

Subpath exports

ImportContents
@cfxdevkit/coreFull barrel — everything
@cfxdevkit/core/clientsClientManager, CoreClient, EspaceClient
@cfxdevkit/core/configChain definitions for Core + eSpace networks
@cfxdevkit/core/typesShared TypeScript types
@cfxdevkit/core/utilsLogger
@cfxdevkit/core/walletHD derivation, session keys, batching, embedded wallets
@cfxdevkit/core/contractsContractDeployer, ContractReader, ContractWriter, ERC ABIs
@cfxdevkit/core/automationSafetyGuard, RetryQueue, PriceChecker, KeeperClient

ClientManager

import { ClientManager, EVM_MAINNET, EVM_TESTNET } from '@cfxdevkit/core' // Testnet const client = new ClientManager({ network: 'testnet' }) await client.connect() const block = await client.evm.publicClient.getBlockNumber() // Mainnet const mainnet = new ClientManager({ evm: { chain: EVM_MAINNET }, }) await mainnet.connect()

HD Wallet

import { generateMnemonic, deriveAccounts } from '@cfxdevkit/core/wallet' const mnemonic = generateMnemonic() const accounts = deriveAccounts(mnemonic, { count: 5 }) for (const acc of accounts) { console.log(`[${acc.index}]`) console.log(' eSpace:', acc.evmAddress) console.log(' Core: ', acc.coreAddress) }

ContractReader

import { ContractReader, ERC20_ABI } from '@cfxdevkit/core/contracts' const reader = new ContractReader(client) const balance = await reader.read({ address: '0xTokenAddress', abi: ERC20_ABI, functionName: 'balanceOf', args: ['0xYourAddress'], chain: 'evm', })

ContractWriter

import { ContractWriter } from '@cfxdevkit/core/contracts' const writer = new ContractWriter(client, walletClient) const hash = await writer.write({ address: '0xTokenAddress', abi: ERC20_ABI, functionName: 'transfer', args: ['0xRecipient', 1_000_000n], chain: 'evm', })

ContractDeployer

import { ContractDeployer } from '@cfxdevkit/core/contracts' import { erc20BaseAbi, erc20BaseBytecode } from '@cfxdevkit/contracts' import { parseEther } from 'viem' const deployer = new ContractDeployer(client, walletClient) const { address, hash } = await deployer.deploy({ abi: erc20BaseAbi, bytecode: erc20BaseBytecode, args: ['My Token', 'MTK', parseEther('1000000'), ownerAddress], chain: 'evm', })

Supported networks

ConstantChain IDRPC
EVM_MAINNET1030https://evm.confluxrpc.com
EVM_TESTNET71https://evmtestnet.confluxrpc.com
EVM_LOCAL2030http://localhost:8545
CORE_MAINNET1029https://main.confluxrpc.com
CORE_TESTNET1https://test.confluxrpc.com
CORE_LOCAL2029http://localhost:12537
Last updated on