Configuring and Starting Neo-CLI
After installation of Neo-CLI, this section we will walk you through the necessary configurations before running Neo-CLI and the steps to start Neo-CLI using commands.
Modifying configuration files
Neo-CLI accesses two configuration files during execution: config.json
and protocol.json
. You need to make necessary configurations in these files before starting Neo-CLI. For information about attributes of the files, refer to Neo-CLI structure.
Configuring a wallet
Before you can invoke the wallet related API, you need to configure a wallet in the config.json file to enable Neo-CLI to open the wallet automatically when running.
-
ExtraGasInvoke
: The extra GAS amount allowed to be consumed when invoking virtual machine by RPC. The default free limit is 10 GAS. -
Path
: the wallet path -
Password
: the wallet password -
IsActive
: Set totrue
to allow Neo-CLI to open the wallet automatically.
Here is an example:
{
"ApplicationConfiguration": {
"Paths": {
"Chain": "Chain_{0}",
"Index": "Index_{0}"
},
"P2P": {
"Port": 10333,
"WsPort": 10334
},
"RPC": {
"BindAddress": "127.0.0.1",
"Port": 10332,
"SslCert": "",
"SslCertPassword": "",
"ExtraGasInvoke": "0",
"MaxConcurrentConnections": "10"
},
"UnlockWallet": {
"Path": "wallet.json",
"Password": "11111111",
"StartConsensus": false,
"IsActive": true
},
"PluginURL": "https://github.com/neo-project/neo-plugins/releases/download/v{1}/{0}.zip"
}
}
The BindAddress option defaults to local 127.0.0.1. You can set it to 0.0.0.0 to allow RPC invoking. In order to ensure the security of the node, set the firewall policy for the corresponding port.
Configuring HTTPS
If you want to access the RPC server via HTTPS, you need to set the domain name, certificate, and password in config.json before starting the node, as shown below:
{
"ApplicationConfiguration": {
"Paths": {
"Chain": "Chain"
},
"P2P": {
"Port": 10333,
"WsPort": 10334
},
"RPC": {
"Port": 10331,
"SslCert": "YourSslCertFile.xxx",
"SslCertPassword": "YourPassword"
}
...
Connecting the node to network
Neo-CLI connects to Neo main net by default. If you want to connect the node to test net, you need to replace the main net configuration files by the corresponding test net files (i.e. replace config.json
and protocol.json
under Neo-CLI root directory by config.testnet.json
and protocol.testnet.json
, respectively). For more information refer to Main net and Test net .
If you want to connect the node to your private net, refer to Setting up Private Chain to modify the file protocol.json
.
Installing plugins
Since Neo 2.9.0 some additional functionalities are individually encapsulated in plug-ins for the purpose of improving node security, stability, and flexibility. The user can select the desired extension functionality instead of invoking it with additional parameters every time starting neo-cli, thus avoiding many human errors and some tedious instructions such as opening a wallet and calling applicationlogs.
Downloading plugins from GitHub
Download the plugins you need from the following table.
Plugin | Description | API Included | |
---|---|---|---|
ApplicationLogs | Synchronizes the smart contract log (ApplicationLogs) automatically in RPC mode. Currently the log has been changed to be stored in the format of LevelDB. | getapplicationlog | Mandatory for exchanges |
ImportBlocks | Synchronizes the client using offline packages. | Mandatory | |
RpcWallet | Provides wallet-specific RPC functionalities. | claimgas dumpprivkey getbalance getnewaddress getunclaimedgas getwalletheight importprivkey listaddress sendfrom sendmany sendtoaddress invokefunction invokescript | Mandatory |
SimplePolicy | Enables policies for filtrate illegal transactions | Mandatory | |
CoreMetrics | Enquiries the timestamp of history blocks. | getmetricblocktimestamp | Recommended |
RpcSystemAssetTracker | Enquiries the UTXO assets related information. | getunclaimed getclaimable getunspents | Recommended |
RpcNep5Tracker | Enquiries NEP-5 balance and transactions history of accounts through RPC | getnep5balances getnep5transfers | Recommended |
RpcSecurity | Enhances the security of RPC requests by enabling base64 encryption for HTTP requests. You need to configure the user name and password in the plugin config.json file. | Optional | |
StatesDumper | Exports Neo-CLI status data. | Optional |
To install plugins, unzip the package under the Neo-CLI root directory, as shown below.
Downloading plugins using command
It is easier to automatically install or uninstall the plugin using commands, for example:
neo> install ImportBlocks
Downloading from https://github.com/neo-node/neo-plugins/releases/download/v2.12.2/ImportBlocks.zip
Install successful, please restart neo-cli.
neo> uninstall RpcWallet
Uninstall successful, please restart neo-cli.
After installation, restart Neo-CLI for the plugin to take effect.
Synchronizing blockchain data
The client must be fully synchronized before use. In order to speed up network synchronization you can download an offline package of the blockchain data up to a certain block height. This means the client will only need to sync the additional blocks from the Neo network rather than the entire blockchain. For more information, see Synchronizing the blockchain faster .
Starting the Neo node
Open the command line, navigate to the Neo-CLI directory, and enter the following command to start the Neo node:
On Windows 10 :
dotnet neo-cli.dll
or
neo-cli.exe
On Linux (ubuntu 17.10) :
./neo-cli
or
dotnet neo-cli.dll
If you use dotnet install .net core in advance.
Neo-CLI provides a series of APIs for external access. If you want to start the node while opening the API, you can add the parameter --rpc
, /rpc
, or -r
, for example:
neo-cli.dll --rpc
If you want the external program to access the node API need to open the firewall port: 10331-10334, 20331-20334
If you open the API service and the wallet in Neo-CLI, you need to set up your firewall policy. For example, set a whitelist for the firewall to only allow access to these ports by whitelisted IP addresses. If completely opening the service to external network, others may be able to export the private key or transfer assets using API.