Skip to Content

@cfxdevkit/devnode


@cfxdevkit/devnode / ServerManager

Class: ServerManager

Defined in: packages/devnode/src/server-manager.ts:55

Server Manager for xcfx/node lifecycle management Handles starting, stopping, and managing the Conflux development node

Constructors

Constructor

new ServerManager(config): ServerManager

Defined in: packages/devnode/src/server-manager.ts:69

Parameters

config

ServerConfig

Returns

ServerManager

Methods

addAccount()

addAccount(privateKey?): Promise<AccountInfo>

Defined in: packages/devnode/src/server-manager.ts:349

Add a new account to the server

Parameters

privateKey?

string

Returns

Promise<AccountInfo>


fundAccount()

fundAccount(address, amount, chainType?): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:385

Fund an account with CFX Note: @xcfx/node doesn’t provide direct funding methods. This would require using RPC calls to send transactions from funded genesis accounts.

Parameters

address

string

amount

string

chainType?

"core" | "evm"

Returns

Promise<void>


fundCoreAccount()

fundCoreAccount(targetAddress, amount): Promise<string>

Defined in: packages/devnode/src/server-manager.ts:787

Fund a Core Space account using the faucet account

Parameters

targetAddress

string

amount

string

Returns

Promise<string>


fundDualChainAccount()

fundDualChainAccount(privateKey, coreAmount, evmAmount): Promise<{ coreAddress: string; coreHash: string; evmAddress: string; evmHash: string; }>

Defined in: packages/devnode/src/server-manager.ts:968

Fund both Core and eSpace accounts for the same private key

Parameters

privateKey

string

coreAmount

string

evmAmount

string

Returns

Promise<{ coreAddress: string; coreHash: string; evmAddress: string; evmHash: string; }>


fundEvmAccount()

fundEvmAccount(targetAddress, amount): Promise<string>

Defined in: packages/devnode/src/server-manager.ts:883

Fund an eSpace account from the Core-Space faucet/mining account.

Funds ALWAYS originate from the Core-Space faucet wallet (which accumulates mining rewards). For eSpace (0x…) targets the transfer is routed through the Conflux internal cross-chain bridge contract (0x0888…0006 / transferEVM), which locks CFX on Core and mints it on eSpace — no separate eSpace balance is needed on the faucet account.

Parameters

targetAddress

string

amount

string

Returns

Promise<string>


getAccounts()

getAccounts(): AccountInfo[]

Defined in: packages/devnode/src/server-manager.ts:315

Get generated accounts

Returns

AccountInfo[]


getConfig()

getConfig(): ServerConfig

Defined in: packages/devnode/src/server-manager.ts:305

Get server configuration

Returns

ServerConfig


getCoreBalance()

getCoreBalance(address): Promise<string>

Defined in: packages/devnode/src/server-manager.ts:1036

Check Core Space balance

Parameters

address

string

Returns

Promise<string>


getEthereumAdminAddress()

getEthereumAdminAddress(): string

Defined in: packages/devnode/src/server-manager.ts:1100

Get Ethereum-compatible admin address derived from mnemonic Uses the standard Ethereum derivation path: m/44’/60’/0’/0/0 This address will match what MetaMask and other Ethereum wallets derive

Returns

string


getEvmBalance()

getEvmBalance(address): Promise<string>

Defined in: packages/devnode/src/server-manager.ts:1074

Check eSpace balance

Parameters

address

string

Returns

Promise<string>


getFaucetAccount()

getFaucetAccount(): AccountInfo

Defined in: packages/devnode/src/server-manager.ts:774

Get the faucet/mining account (dedicated mining account with separate derivation path) This account receives mining rewards and serves as the faucet Derivation paths: Core=m/44’/503’/1’/0/0, EVM=m/44’/60’/1’/0/0

Returns

AccountInfo


getFaucetBalances()

getFaucetBalances(): Promise<FaucetBalances>

Defined in: packages/devnode/src/server-manager.ts:1006

Check faucet account balances on both chains

Returns

Promise<FaucetBalances>


getLogs()

getLogs(lines?): Promise<string[]>

Defined in: packages/devnode/src/server-manager.ts:429

Get server logs Note: @xcfx/node doesn’t provide direct log access. Logs would need to be captured during server startup or accessed via system logs.

Parameters

lines?

number = 50

Returns

Promise<string[]>


getMiningStatus()

getMiningStatus(): MiningStatus

Defined in: packages/devnode/src/server-manager.ts:763

Get current mining status

Returns

MiningStatus


getMnemonic()

getMnemonic(): string

Defined in: packages/devnode/src/server-manager.ts:322

Get the mnemonic phrase

Returns

string


getNodeStatus()

getNodeStatus(): object

Defined in: packages/devnode/src/server-manager.ts:285

Get comprehensive node status including mining

Returns

object

accounts

accounts: number

config

config: Partial<ServerConfig>

mining

mining: MiningStatus

rpcUrls

rpcUrls: object

rpcUrls.core

core: string

rpcUrls.coreWs

coreWs: string

rpcUrls.evm

evm: string

rpcUrls.evmWs

evmWs: string

rpcUrls.ws

ws: string

server

server: ServerStatus


getRpcUrls()

getRpcUrls(): object

Defined in: packages/devnode/src/server-manager.ts:329

Get RPC URLs

Returns

object

core

core: string

coreWs

coreWs: string

evm

evm: string

evmWs

evmWs: string

ws

ws: string


getStatus()

getStatus(): ServerStatus

Defined in: packages/devnode/src/server-manager.ts:278

Get current server status

Returns

ServerStatus


isRunning()

isRunning(): boolean

Defined in: packages/devnode/src/server-manager.ts:298

Check if server is running

Returns

boolean


mine()

mine(blocks?): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:675

Mine a specific number of blocks immediately

Parameters

blocks?

number = 1

Returns

Promise<void>


packMine()

packMine(): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:722

Pack and mine: calls test_generateOneBlock (mine({ numTxs:1 })) which forces pending eSpace/Core transactions into a block. Each call internally generates deferredStateEpochCount (default 5) blocks.

This is the ONLY way to include eSpace (EVM) transactions — mine({ blocks }) skips the txpool for eSpace. Uses a long timeout because test_generateOneBlock can take several seconds on slow machines.

Returns

Promise<void>


restart()

restart(): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:270

Restart the Conflux development node

Returns

Promise<void>


saveConfig()

saveConfig(filepath): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:447

Save server configuration to file

Parameters

filepath

string

Returns

Promise<void>


setMiningInterval()

setMiningInterval(interval): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:645

Change mining interval (stops and restarts mining with new interval)

Parameters

interval

number

Returns

Promise<void>


setNextBlockTimestamp()

setNextBlockTimestamp(timestamp): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:409

Set next block timestamp (for testing) Note: @xcfx/node doesn’t provide direct timestamp control. Use createTestClient from ‘cive’ and connect to the running node’s RPC.

Parameters

timestamp

number

Returns

Promise<void>


start()

start(): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:119

Start the Conflux development node

Returns

Promise<void>


startMining()

startMining(interval?): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:562

Start automatic block mining using testClient This creates an interval that mines blocks automatically

Parameters

interval?

number

Mining interval in milliseconds (default: 2000ms)

Returns

Promise<void>


stop()

stop(): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:222

Stop the Conflux development node

Returns

Promise<void>


stopMining()

stopMining(): Promise<void>

Defined in: packages/devnode/src/server-manager.ts:623

Stop automatic block mining

Returns

Promise<void>


loadConfig()

static loadConfig(filepath): Promise<ServerConfig>

Defined in: packages/devnode/src/server-manager.ts:476

Load server configuration from file

Parameters

filepath

string

Returns

Promise<ServerConfig>