Neo-WorkNet Command Reference
July 11, 2026 ยท View on GitHub
The neo-worknet tool enables a developer to create and run a Neo N3 consensus node that branches
from a public Neo N3 blockchain - including the official Neo N3 MainNet and T5 TestNet. This provides
the developer a local scratchpad environment that mirrors the state of a known public network at a
specified index. Changes to the local branch of the network are independent of the public network.
Note, you can pass -?|-h|--help to show a list of supported commands or to show help information about a specific command.
neo-worknet create
Create a Neo Worknet branch
Usage: neo-worknet create [options] <RpcUri> <Output>
Arguments:
RpcUri URL of Neo JSON-RPC Node
Specify MainNet, TestNet or JSON-RPC URL
Output Name of .neo-worknet file to create (Default: ./default.neo-worknet)
Options:
-i|--index <INDEX> Block height to branch at
Default value is: 0.
-f|--force Overwrite existing data
--disable-log Disable verbose data logging
--gas <GAS> Amount of GAS to seed the consensus account with (Default: 10000)
-?|-h|--help Show help information.
The create command creates a new local WorkNet blockchain as a branch from a public Neo N3 blockchain.
This command will create both a .neo-worknet file to hold details about the blockchain branch and a
data folder that will contain data loaded from the remote blockchain and cached locally as well as
locally generated blocks and contract storage updates.
The user must specify a remote Neo N3 blockchain network to branch from. Neo-WorkNet has built in knowledge
of MainNet and the T5 TestNet. However, the user can specify any Neo N3 RPC API node they wish. The
user can specify a specific block index to branch at. If unspecified, neo-worknet will branch at the
current height of the specified blockchain.
Note, Neo-WorkNet depends on the StateService and RpcServer plugins to be installed on the
RpcUriargument. Furthermore, the StateService MUST be configured withFullStateastrue.
The branched blockchain CANNOT be validated across the branch point. When a Neo Worknet branch network
is created, a new wallet account is created to act as the consensus block signer. The public network's
council members' accounts are obviously not available for signing new blocks on a local branch of the
chain. Changing the consensus account that signs blocks requires an update to the NextConsensus field.
Updating this field requires adding an unsigned block to the local blockchain branch. Since this branch
transition block is unsigned, the blockchain history can not be validated across this transition block.
Unlike Neo-Express, Neo-Worknet doesn't provide an option for creating a multiple consensus nodes for the branched chain. Based on understanding of Neo-Express usage patterns, multiple consensus nodes are not typically used. If four- or seven-consensus-node support in Neo-WorkNet is important to you, please file an issue in our GitHub repo
Consensus account funding
When a worknet is created (and whenever it is reset), the generated consensus account is seeded
with 10,000 GAS by default, configurable with the --gas option, so contracts can be deployed
and invoked on the branch immediately, without waiting for committee emission to accrue. The seed
uses a native GAS transfer from the current committee account to the generated consensus account, so
the GAS total supply is unchanged. Use --gas 0 to disable seeding.
neo-worknet fastfwd
Mint empty blocks to fast forward the block chain
Usage: neo-worknet fastfwd [options] <Count>
Arguments:
Count Number of blocks to mint
Options:
-t|--timestamp-delta <TIMESTAMP_DELTA> Timestamp delta for last generated block
-?|-h|--help Show help information.
--input Path to .neo-worknet data file
The fastfwd command mints the specified number of empty blocks, signed by the worknet
consensus account. This is useful for testing contracts with time-dependent behavior such as
vesting cliffs or auction expiry. Like the equivalent Neo-Express command, the
--timestamp-delta option additionally advances the timestamp of the last minted block by
the specified amount โ either a whole number of seconds or a .NET TimeSpan string such as
1.02:03:04 (one day, two hours, three minutes and four seconds). The timestamps of the
minted blocks are spaced evenly across the delta.
The node must be stopped when running fastfwd; the blocks are appended directly to the
local chain data.
neo-worknet prefetch
Fetch data for specified contract
Usage: neo-worknet prefetch [options] <Contract>
Arguments:
Contract Name or Hash of contract to prefetch contract storage
Options:
--disable-log Disable verbose data logging
-?|-h|--help Show help information.
--input Path to .neo-worknet data file
Neo-WorkNet caches deployed contract storage on first access. For deployed contracts with thousands
of storage records, this can be very time consuming. The prefetch command provides a mechanism to
download contract storage before running the chain. This will ensure all data associated with the specified
contract is downloaded and available so the WorkNet node can run that contract without needing to pause
and download data the first time it's run locally.
neo-worknet reset
Reset WorkNet back to initial branch point
Usage: neo-worknet reset [options]
Options:
-f|--force Overwrite existing data
--gas <GAS> Amount of GAS to seed the consensus account with (Default: 10000)
-?|-h|--help Show help information.
--input Path to .neo-worknet data file
This command resets all the locally generated blocks in the chain. The unsigned branch transition block
(described in the create command section) is deleted and regenerated as part of this process.
Any contract data from the public chain that has been cached locally - either via prefetch or through
the normal process of executing transactions on the branched chain - are not affected. Even after a
reset, contract storage does not need to be prefetched again.
neo-worknet run
Run Neo-WorkNet instance node
Usage: neo-worknet run [options]
Options:
-s|--seconds-per-block <SECONDS_PER_BLOCK> Time between blocks
--rpc-port <PORT> RPC server port
--tcp-port <PORT> TCP server port
--disable-log Disable verbose data logging
-?|-h|--help Show help information.
--input Path to .neo-worknet data file
Runs the branched blockchain locally. New blocks will be added to the chain every 15 seconds unless
overridden with the --seconds-per-block option.
The node listens on RPC port 30332 and TCP port 30333 by default. Use --rpc-port and --tcp-port
when those ports are already in use by another local node. The RPC and TCP ports must be different.
These new blocks added to the chain have no correlation to the blocks added to the public chain that was branched from. From the point of the branch, the original source chain and the local branched chain are independent.
Neo-WorkNet comes bundled with the standard RpcServer module, similar to Neo-Express. This enables
dApps to interact with the branched chain like they would with the public chain. Neo-WorkNet supports
both read operations like
getblock
as well as write operations like
sendrawtransaction.
In addition to the standard RpcServer methods, Neo-WorkNet provides custom implementations of
getapplicationlog,
getnep11balances,
getnep11properties
and getnep17balances
from the ApplicationLogs and TokenTracker plugins (Note, the getnep11transfers and getnep17transfers)
RPC methods are not supported. Additionally, Neo-WorkNet implements ExpressShutdown and ExpressListContracts
RPC methods that are exposed by Neo-Express.
neo-worknet stop
Stop the running Neo-WorkNet instance node
Usage: neo-worknet stop [options]
Options:
-?|-h|--help Show help information.
--input Path to .neo-worknet data file
Stops a running Neo-WorkNet instance node. When running in a terminal window, Neo-WorkNet can be
shut down via standard CTRL-C or CTRL-BREAK operations; the stop command additionally allows
shutting the node down from another terminal or a script, using the same ExpressShutdown RPC
method that Neo-Express uses. If no node is running, the command reports that and exits cleanly.