This section details the present commands, command flags in the EVMBuilder Edge, and how they're used.
JSON OUTPUT SUPPORT
The --json
flag is supported on some commands. This flag instructs the command to print the output in JSON format
Command
Description
server
The default command that starts the blockchain client, by bootstrapping all modules together
genesis
Generates a genesis.json file, which is used to set a predefined chain state before starting the client. The structure of the genesis file is described below
server flags
seal
SyntaxExample
server [--seal SHOULD_SEAL]
Sets the flag indicating that the client should seal blocks. Default: true
.
data-dir
SyntaxExample
server [--data-dir DATA_DIRECTORY]
Used to specify the data directory used for storing EVMBuilder Edge client data. Default: ./test-chain
.
jsonrpc
SyntaxExample
server [--jsonrpc JSONRPC_ADDRESS]
Sets the address and port for the JSON-RPC service address:port
. If only port is defined :10001
it will bind to all interfaces 0.0.0.0:10001
. If omitted the service will bind to the default address:port
. Default address: 0.0.0.0:8545
.
grpc
SyntaxExample
server [--grpc-address GRPC_ADDRESS]
Sets the address and port for the gRPC service address:port
. Default address: 127.0.0.1:9632
.
libp2p
SyntaxExample
server [--libp2p LIBP2P_ADDRESS]
Sets the address and port for the libp2p service address:port
. Default address: 127.0.0.1:1478
.
prometheus
SyntaxExample
server [--prometheus PROMETHEUS_ADDRESS]
Sets the address and port for the prometheus server address:port
. If only port is defined :5001
the service will bind to all interfaces 0.0.0.0:5001
. If omitted the service will not be started.
block-gas-target
SyntaxExample
server [--block-gas-target BLOCK_GAS_TARGET]
Sets the target block gas limit for the chain. Default (not enforced): 0
.
A more detailed explanation on the block gas target can be found in the TxPool section.
max-peers
SyntaxExample
server [--max-peers PEER_COUNT]
Sets the client's maximum peer count. Default: 40
.
Peer limit should be specified either by using max-peers
or max-inbound/outbound-peers
flag.
max-inbound-peers
SyntaxExample
server [--max-inbound-peers PEER_COUNT]
Sets the client's maximum inbound peer count. If max-peers
is set, max-inbound-peer limit is calculated using the following formulae.
max-inbound-peer = InboundRatio * max-peers
, where InboundRatio
is 0.8
.
max-outbound-peers
SyntaxExample
server [--max-outbound-peers PEER_COUNT]
Sets the client's maximum outbound peer count. If max-peers
is set, max-outbound-peer count is calculated using the following formulae.
max-outbound-peer = OutboundRatio * max-peers
, where OutboundRatio
is 0.2
.
log-level
SyntaxExample
server [--log-level LOG_LEVEL]
Sets the log level for console output. Default: INFO
.
log-to
SyntaxExample
server [--log-to LOG_FILE]
Defines log file name that will hold all log output from the server command. By default, all server logs will be outputted to console (stdout), but if the flag is set, there will be no output to the console when running server command.
chain
SyntaxExample
server [--chain GENESIS_FILE]
Specifies the genesis file used for starting the chain. Default: ./genesis.json
.
join
SyntaxExample
server [--join JOIN_ADDRESS]
Specifies the address of the peer that should be joined.
nat
SyntaxExample
server [--nat NAT_ADDRESS]
Sets the external IP address without the port, as it can be seen by peers.
dns
SyntaxExample
server [--dns DNS_ADDRESS]
Sets the host DNS address. This can be used to advertise an external DNS. Supports dns
,dns4
,dns6
.
price-limit
SyntaxExample
server [--price-limit PRICE_LIMIT]
Sets minimum gas price limit to enforce for acceptance into the pool. Default: 1
.
max-slots
SyntaxExample
server [--max-slots MAX_SLOTS]
Sets maximum slots in the pool. Default: 4096
.
config
SyntaxExample
server [--config CLI_CONFIG_PATH]
Specifies the path to the CLI config. Supports .json
.
secrets-config
SyntaxSecond Tab
server [--secrets-config SECRETS_CONFIG]
Sets the path to the SecretsManager config file. Used for Hashicorp Vault, AWS SSM and GCP Secrets Manager. If omitted, the local FS secrets manager is used.
dev
SyntaxExample
server [--dev DEV_MODE]
Sets the client to dev mode. Default: false
.
dev-interval
SyntaxExample
server [--dev-interval DEV_INTERVAL]
Sets the client's dev notification interval in seconds. Default: 0
.
no-discover
SyntaxExample
server [--no-discover NO_DISCOVER]
Prevents the client from discovering other peers. Default: false
.
restore
SyntaxExample
server [--restore RESTORE]
Restore blocks from the specified archive file
block-time
SyntaxExample
server [--block-time BLOCK_TIME]
Sets block production time in seconds. Default: 2
ibft-base-timeout
SyntaxExample
server [--ibft-base-timeout IBFT_BASE_TIMEOUT]
Sets the base value of timeout on IBFT consensus. IBFT consensus timeout is calculated by BaseTimeout + 2^(round)
, or BaseTimeout * 30
where round exceeds 8. It needs to be larger than block time and BlockTime * 5
is set if it's not specified.
access-control-allow-origins
SyntaxExample
server [--access-control-allow-origins ACCESS_CONTROL_ALLOW_ORIGINS]
Sets the authorized domains to be able to share responses from JSON-RPC requests. Add multiple flags --access-control-allow-origins "https://example1.com" --access-control-allow-origins "https://example2.com"
to authorize multiple domains. If omitted Access-Control-Allow-Origins header will be set to *
and all domains will be authorized.
genesis flags
dir
SyntaxExample
genesis [--dir DIRECTORY]
Sets the directory for the EVMBuilder Edge genesis data. Default: ./genesis.json
.
name
SyntaxExample
genesis [--name NAME]
Sets the name for the chain. Default: polyton-edge
.
pos
SyntaxExample
genesis [--pos IS_POS]
Sets the flag indicating that the client should use Proof of Stake IBFT. Defaults to Proof of Authority if flag is not provided or false
.
epoch-size
SyntaxExample
genesis [--epoch-size EPOCH_SIZE]
Sets the epoch size for the chain. Default 100000
.
premine
SyntaxExample
genesis [--premine ADDRESS:VALUE]
Sets the premined accounts and balances in the format address:amount
. The amount can be in either decimal or hex. Default premined balance: 0x3635C9ADC5DEA00000
.
chainid
SyntaxExample
genesis [--chain-id CHAIN_ID]
Sets the ID of the chain. Default: 100
.
ibft-validators-prefix-path
SyntaxExample
genesis [--ibft-validators-prefix-path IBFT_VALIDATORS_PREFIX_PATH]
Prefix path for validator folder directory. Needs to be present if the flag ibft-validator
is omitted.
ibft-validator
SyntaxExample
genesis [--ibft-validator IBFT_VALIDATOR_LIST]
Sets passed in addresses as IBFT validators. Needs to be present if the flag ibft-validators-prefix-path
is omitted.
block-gas-limit
SyntaxExample
genesis [--block-gas-limit BLOCK_GAS_LIMIT]
Refers to the maximum amount of gas used by all operations in a block. Default: 5242880
.
consensus
SyntaxExample
genesis [--consensus CONSENSUS_PROTOCOL]
Sets consensus protocol. Default: pow
.
bootnode
SyntaxExample
genesis [--bootnode BOOTNODE_URL]
Multiaddr URL for p2p discovery bootstrap. This flag can be used multiple times. Instead of an IP address, the DNS address of the bootnode can be provided.
max-validator-count
SyntaxExample
genesis [--max-validator-count MAX_VALIDATOR_COUNT]
The maximum number of stakers able to join the validator set in a PoS consensus. This number cannot exceed the value of MAX_SAFE_INTEGER (2^53 - 2).
min-validator-count
SyntaxExample
genesis [--min-validator-count MIN_VALIDATOR_COUNT]
The minimum number of stakers needed to join the validator set in a PoS consensus. This number cannot exceed the value of max-validator-count. Defaults to 1.
Peer Commands
Command
Description
peers add
Adds a new peer using their libp2p address
peers list
Lists all the peers the client is connected to through libp2p
peers status
Returns the status of a specific peer from the peers list, using the libp2p address
peers add flags
addr
SyntaxExample
peers add --addr PEER_ADDRESS
Peer's libp2p address in the multiaddr format.
grpc-address
SyntaxExample
peers add [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
peers list flags
grpc-address
SyntaxExample
peers list [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
peers status flags
peer-id
SyntaxExample
peers status --peer-id PEER_ID
Libp2p node ID of a specific peer within p2p network.
grpc-address
SyntaxExample
peers status [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
IBFT Commands
Command
Description
ibft snapshot
Returns the IBFT snapshot
ibft candidates
Queries the current set of proposed candidates, as well as candidates that have not been included yet
ibft propose
Proposes a new candidate to be added/removed from the validator set
ibft status
Returns the overall status of the IBFT client
ibft switch
Add fork configurations into genesis.json file to switch IBFT type
ibft snapshot flags
number
SyntaxExample
ibft snapshot [--number BLOCK_NUMBER]
The block height (number) for the snapshot.
grpc-address
SyntaxExample
ibft snapshot [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
ibft candidates flags
grpc-address
SyntaxExample
ibft candidates [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
ibft propose flags
vote
SyntaxExample
ibft propose --vote VOTE
Proposes a change to the validator set. Possible values: [auth, drop]
.
addr
SyntaxExample
ibft propose --addr ETH_ADDRESS
Address of the account to be voted for.
grpc-address
SyntaxExample
peers add [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
ibft status flags
grpc-address
SyntaxExample
peers list [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
ibft switch flags
chain
SyntaxExample
ibft switch [--chain GENESIS_FILE]
Specifies the genesis file to update. Default: test
.
type
SyntaxExample
ibft switch [--type TYPE]
Specifies the IBFT type to switch. Possible values: [PoS]
.
deployment
SyntaxExample
ibft switch [--deployment DEPLOYMENT]
Specifies the height of contract deployment. Only available with PoS.
from
SyntaxExample
ibft switch [--from FROM]
max-validator-count
SyntaxExample
ibft switch [--max-validator-count MAX_VALIDATOR_COUNT]
The maximum number of stakers able to join the validator set in a PoS consensus. This number cannot exceed the value of MAX_SAFE_INTEGER (2^53 - 2).
min-validator-count
SyntaxExample
ibft switch [--min-validator-count MIN_VALIDATOR_COUNT]
The minimum number of stakers needed to join the validator set in a PoS consensus. This number cannot exceed the value of max-validator-count. Defaults to 1.
Specifies the beginning height of the fork.
Transaction Pool Commands
Command
Description
txpool status
Returns the number of transactions in the pool
txpool subscribe
Subscribes for events in the transaction pool
txpool status flags
grpc-address
SyntaxExample
txpool status [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
txpool subscribe flags
grpc-address
SyntaxExample
txpool subscribe [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
promoted
SyntaxExample
txpool subscribe [--promoted LISTEN_PROMOTED]
Subscribes for promoted tx events in the TxPool.
dropped
SyntaxExample
txpool subscribe [--dropped LISTEN_DROPPED]
Subscribes for dropped tx events in the TxPool.
demoted
SyntaxExample
txpool subscribe [--demoted LISTEN_DEMOTED]
Subscribes for demoted tx events in the TxPool.
added
SyntaxExample
txpool subscribe [--added LISTEN_ADDED]
Subscribes for added tx events to the TxPool.
enqueued
SyntaxExample
txpool subscribe [--enqueued LISTEN_ENQUEUED]
Subscribes for enqueued tx events in the account queues.
Blockchain commands
Command
Description
status
Returns the status of the client. The detailed response can be found below
monitor
Subscribes to a blockchain event stream. The detailed response can be found below
version
Returns the current version of the client
status flags
grpc-address
SyntaxExample
status [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
monitor flags
grpc-address
SyntaxExample
monitor [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
Command
Description
secrets init
Initializes the private keys to the corresponding secrets manager
secrets generate
Generates a secrets manager configuration file which can be parsed by the EVMBuilder Edge
secrets init flags
config
SyntaxExample
secrets init [--config SECRETS_CONFIG]
Sets the path to the SecretsManager config file. Used for Hashicorp Vault. If omitted, the local FS secrets manager is used.
data-dir
SyntaxExample
secrets init [--data-dir DATA_DIRECTORY]
Sets the directory for the EVMBuilder Edge data if the local FS is used.
secrets generate flags
dir
SyntaxExample
secrets generate [--dir DATA_DIRECTORY]
Sets the directory for the secrets manager configuration file Default: ./secretsManagerConfig.json
type
SyntaxExample
secrets generate [--type TYPE]
Specifies the type of the secrets manager [hashicorp-vault
]. Default: hashicorp-vault
token
SyntaxExample
secrets generate [--token TOKEN]
Specifies the access token for the service
server-url
SyntaxExample
secrets generate [--server-url SERVER_URL]
Specifies the server URL for the service
name
SyntaxExample
secrets generate [--name NODE_NAME]
Specifies the name of the node for on-service record keeping. Default: z-edge-node
namespace
SyntaxExample
secrets generate [--namespace NAMESPACE]
Specifies the namespace used for the Hashicorp Vault secrets manager. Default: admin
Status Response
The response object is defined using Protocol Buffers.
minimal/proto/system.proto
Copy
Monitor Response
minimal/proto/system.proto
Copy
loadbot flags
tps
SyntaxExample
loadbot [--tps NUMBER_OF_TXNS_PER_SECOND]
The number of transactions per second to send. Default: 100
.
mode
SyntaxExample
loadbot [--mode MODE]
Sets the loadbot run mode [transfer
, deploy
]. Default: transfer
.
chain-id
SyntaxExample
loadbot [--chain-id CHAIN_ID]
Sets the network chain ID for transactions. Default: 100
.
gas-price
SyntaxExample
loadbot [--gas-price GAS_PRICE]
The gas price that should be used for the transactions. If omitted, the average gas price is fetched from the network.
gas-limit
SyntaxExample
loadbot [--gas-limit GAS_LIMIT]
The gas limit that should be used for the transactions. If omitted, the gas limit is estimated before starting the loadbot.
grpc-address
SyntaxExample
loadbot --grpc-address GRPC_ADDRESS
The GRPC endpoint used to send transactions
detailed
SyntaxExample
loadbot [--detailed DETAILED]
Flag indicating if the error logs should be shown. Default: false
.
contract
SyntaxExample
loadbot [--contract CONTRACT_PATH]
The path to the contract JSON artifact containing the bytecode. If omitted, a default contract is used.
sender
SyntaxExample
loadbot [--sender ADDRESS]
Address of the sender account.
receiver
SyntaxExample
loadbot [--receiver ADDRESS]
Address of the receiver account.
jsonrpc
SyntaxExample
loadbot [--jsonrpc ENDPOINT]
A JSON RPC endpoint used to send transactions.
count
SyntaxExample
loadbot [--count COUNT]
The total number of transactions to send. Default: 1000
.
value
SyntaxExample
loadbot [--value VALUE]
The value to send in each transaction.
max-conns
SyntaxExample
loadbot [--max-conns MAX_CONNECTIONS_COUNT]
Sets the maximum no.of connections allowed per host. Default: 2*tps
.
backup flags
grpc-address
SyntaxExample
backup [--grpc-address GRPC_ADDRESS]
Address of the gRPC API. Default: 127.0.0.1:9632
.
out
SyntaxExample
backup [--out OUT]
Path of archive file to save.
from
SyntaxExample
from [--from FROM]
The beginning height of blocks in archive. Default: 0.
to
SyntaxExample
to [--to TO]
The end height of blocks in archive.
The genesis file should be used to set the initial state of the blockchain (ex. if some accounts should have a starting balance).
The following ./genesis.json file is generated:
Copy
Data Directory
When executing the data-dir flag, a test-chain folder is generated. The folder structure consists of the following sub-folders:
blockchain - Stores the LevelDB for blockchain objects
trie - Stores the LevelDB for the Merkle tries
keystore - Stores private keys for the client. This includes the libp2p private key and the sealing/validator private key
consensus - Stores any consensus information that the client might need while working