net

Network commands — list networks/chains, inspect status and fees, view links and statistics, manage sync state.

Verified against public RPC http://rpc.cellframe.net/ (networks: Backbone, KelVPN).

JSON-RPC request

Method name: net. Response type is 2 (TYPE_RESPONSE_JSON).

Two request formats are supported. The response version echoes the request version and affects JSON field names in some subcommands (see v1 vs v2 field names).

Version 1 — legacy params string

{
  "method": "net",
  "params": ["net;-net;Backbone;get;status"],
  "id": 1,
  "version": 1
}

params is an array with one string. Every token (command name, subcommand, flag, value) is separated by ;not spaces. Example: net;-net;Backbone;get;status.

Version 2 — subcommand + arguments

{
  "method": "net",
  "subcommand": "get;status",
  "arguments": {"net": "Backbone"},
  "id": 1,
  "version": 2
}

subcommand may also be a JSON array (one token per element):

{
  "method": "net",
  "subcommand": ["get", "status"],
  "arguments": {"net": "Backbone"},
  "id": 2,
  "version": 2
}

Both forms above produce the same internal command: net;get;status;-net;Backbone.

Spaces in subcommand do not work. "get status" is treated as a single unknown token and returns error code 34. Use "get;status" or ["get","status"].

To use version 2 fields, omit params entirely — if params is present, subcommand / arguments are ignored.

Version 2 arguments mapping

Each key in arguments is prefixed with - automatically. Do not include a leading dash in keys.

arguments keyCLI flagUsed by
net-netAll subcommands except bare list
mode-modego, sync (update or all)
H-HHash output format (hex or base58)
from, to, prev_day-from, -to, -prev_daystats tx
cert, hash-cert, -hashca add, ca del

Argument values must be strings (or null/empty string for bare flags). JSON numbers and booleans are rejected.

Global options

OptionDescription
-H hex|base58Hash output format (default: hex).
-net <net_name>Network selector (required for all subcommands except bare net list).
-mode update|allSync mode for go / sync. Default: update (incremental). all rebuilds from zero.

Subcommands

SubcommandDescriptionPublic RPC
listList network names, or with chains list chain details.tested
get status|fee|idNetwork status, fee info, or network ID.tested
stats txTransaction statistics for a time range.tested
link listList active uplinks/downlinks.tested
link add|del|infoLink management — currently returns "Not implemented".tested (stub)
poa_certs listList PoA certificate public-key hashes configured for the network.tested
ca listList authority certificates from GDB ACL group.error on public node (no ACL group)
go online|offline|syncChange network state / resync.tested
syncTrigger network sync (returns state machine info).tested
link disconnect_allStop network and disconnect all links.state-changing — not tested on public node
ledger reloadPurge ledger cache and reload from chain files.state-changing — not tested on public node
ca addAdd CA cert by -cert or -hash.requires local certificate — not testable on public node
ca del -hashDelete CA cert by hash.requires local certificate / write access — not testable on public node

go and sync are allowed on rpc.cellframe.net and change the public node’s network state. Use with care.

Subcommand syntax (CLI / v1 params)

net;list
net;list;chains                          # all networks with chain details
net;list;chains;-net;<net_name>         # chain names for one network

net;-net;<net_name>;get;status
net;-net;<net_name>;get;fee
net;-net;<net_name>;get;id

net;-net;<net_name>;stats;tx
net;-net;<net_name>;stats;tx;-from;2026-07-01_00:00:00;-to;2026-07-02_00:00:00
net;-net;<net_name>;stats;tx;-prev_day;1

net;-net;<net_name>;link;list
net;-net;<net_name>;link;add            # returns "Not implemented"
net;-net;<net_name>;link;del            # returns "Not implemented"
net;-net;<net_name>;link;info           # returns "Not implemented"
net;-net;<net_name>;link;disconnect_all

net;-net;<net_name>;poa_certs;list
net;-net;<net_name>;ca;list
net;-net;<net_name>;ca;add;-cert;<cert_name>
net;-net;<net_name>;ca;add;-hash;<cert_hash>
net;-net;<net_name>;ca;del;-hash;<cert_hash>

net;-net;<net_name>;-mode;update;go;online
net;-net;<net_name>;-mode;all;go;offline
net;-net;<net_name>;go;sync
net;-net;<net_name>;sync
net;-net;<net_name>;ledger;reload

stats tx time format: YYYY-MM-DD_HH:MM:SS. If -from is omitted, defaults to last 24 hours. -to defaults to now. Use -prev_day <days> as an alternative to -from/-to.

CLI help mentions stats tps and sync {all|gdb|chains}, but the current implementation only handles stats tx and calls a single sync routine without sub-arguments.

Example requests

Version 1

{"method":"net","params":["net;list"],"id":1,"version":1}

{"method":"net","params":["net;list;chains;-net;Backbone"],"id":2,"version":1}

{"method":"net","params":["net;-net;KelVPN;get;status"],"id":3,"version":1}

{"method":"net","params":["net;-net;Backbone;get;fee"],"id":4,"version":1}

{"method":"net","params":["net;-net;KelVPN;stats;tx;-prev_day;1"],"id":5,"version":1}

{"method":"net","params":["net;-net;Backbone;link;list"],"id":6,"version":1}

{"method":"net","params":["net;-net;KelVPN;poa_certs;list"],"id":7,"version":1}

Version 2 (verified on rpc.cellframe.net)

{"method":"net","subcommand":"list","id":1,"version":2}

{"method":"net","subcommand":"list;chains","arguments":{"net":"Backbone"},"id":2,"version":2}

{"method":"net","subcommand":"get;status","arguments":{"net":"Backbone"},"id":3,"version":2}

{"method":"net","subcommand":["get","status"],"arguments":{"net":"Backbone"},"id":4,"version":2}

{"method":"net","subcommand":"get;fee","arguments":{"net":"Backbone"},"id":5,"version":2}

{"method":"net","subcommand":"stats;tx","arguments":{"net":"Backbone","prev_day":"1"},"id":6,"version":2}

{"method":"net","subcommand":"link;list","arguments":{"net":"Backbone"},"id":7,"version":2}

{"method":"net","subcommand":"go;online","arguments":{"net":"Backbone"},"id":8,"version":2}

{"method":"net","subcommand":"go;sync","arguments":{"net":"KelVPN","mode":"update"},"id":9,"version":2}

{"method":"net","subcommand":"sync","arguments":{"net":"Backbone"},"id":10,"version":2}

Response envelope

net is a JSON-response command. On success, HTTP body contains:

{
  "type": 2,
  "result": [ { ... } ],
  "id": 1,
  "version": 2
}

On error, the result array contains an object with an errors array (not a top-level JSON-RPC error field):

{
  "type": 2,
  "result": [
    {
      "errors": [
        { "code": 103, "message": "Network UnknownNet not found" }
      ]
    }
  ],
  "id": 1,
  "version": 2
}

v1 vs v2 response field names

Most net subcommands return the same field names regardless of request version. The main difference is in get status chain sync details under status.processed.<chain>:

Version 1Version 2Context
in networkin_networkTotal atoms in network for each chain

Push-notification payloads (not returned by CLI/RPC commands) also use version-dependent class names: NetInfo/net_info, NetList/net_list, errorMessage/error_message.

Response fields (verified on rpc.cellframe.net)

net list

{
  "result": [
    { "networks": ["KelVPN", "Backbone"] }
  ]
}

net list chains (all networks)

{
  "result": [
    {
      "networks": [
        {
          "name": "Backbone",
          "chain": [
            {
              "name": "zerochain",
              "default_types": ["token", "emission", "ca", "decree"]
            },
            {
              "name": "main",
              "default_types": ["transaction", "anchor"]
            }
          ]
        }
      ]
    }
  ]
}

net list chains -net <name>

{
  "result": [
    {
      "net": "Backbone",
      "chains": ["zerochain", "main"]
    }
  ]
}

net get status

{
  "result": [
    {
      "status": {
        "net": "Backbone",
        "current_addr": "4A57::286A::8CE4::0B50",
        "links": { "active": 3, "required": 3 },
        "processed": {
          "zerochain": {
            "status": "synced",
            "current": 106727,
            "in_network": 106727,
            "percent": "100.000 %"
          },
          "main": {
            "status": "idle",
            "current": 542723,
            "in_network": 542723,
            "percent": "100.000 %"
          }
        },
        "states": {
          "current": "NET_STATE_ONLINE",
          "target": "NET_STATE_ONLINE"
        }
      }
    }
  ]
}

Example above uses version 2 (in_network). With version: 1 the same field is "in network" (with a space). Chain status values: synced, idle, sync in process, error. State strings use NET_STATE_* prefix. links is omitted when the network is offline.

net get fee

{
  "result": [
    {
      "fees": {
        "network": {
          "coins": "0.002",
          "balance": "2000000000000000",
          "ticker": "CELL",
          "addr": "Rj7J7MiX2bWy8sNyX38bB86KTFUnSn7sdKDsTFa2RJyQTDWFaebrj6BucT7Wa5CSq77zwRAwevbiKy1sv1RBGTonM83D3xPDwoyGasZ7"
        },
        "validators": {
          "min": { "balance": "1000000000000", "coin": "0.000001" },
          "max": { "balance": "10000000000000000000", "coin": "10.0" },
          "average": { "balance": "62468943222748815", "coin": "0.062468943222748815" },
          "median": { "balance": "10000000000000000", "coin": "0.01" },
          "token": "CELL"
        },
        "xchange": "service has not announced a commission fee"
      }
    }
  ]
}

xchange may be a JSON object when the exchange service reports fees, or a plain string when not configured. Field names are the same on v1 and v2.

net get id

{
  "result": [
    {
      "network": "Backbone",
      "id": "0x0404202200000000"
    }
  ]
}

net stats tx

{
  "result": [
    {
      "transaction_statistics": {
        "from": "2026-07-13_09:08:18",
        "to": "2026-07-14_09:08:18",
        "transaction_per_day": "1105.000",
        "total": 1105
      }
    }
  ]
}

net link list

{
  "result": [
    {
      "links": {
        "uplinks": [
          {
            "addr": "1B3B::5AE6::8800::D011",
            "ip": "159.203.77.225 ",
            "port": 8079,
            "channel": "RCGEND",
            "total_packets_sent": 8160873
          }
        ],
        "downlinks": null
      }
    }
  ]
}

net link add / del / info (stub)

{ "result": [ { "add": "Not implemented" } ] }
{ "result": [ { "info": "Not implemented" } ] }

net poa_certs list

{
  "result": [
    {
      "poa_certs": [
        "0xCB73427D1124F5EA8068EEFA5AEC91D37888561ED43E737AFD0D08A07BE67809",
        "0x3B244B31B4DC6DD7791FE34A67712BDD7647648BB9089D0266A6CC245AF70DE4"
      ]
    }
  ]
}

net go (verified on rpc.cellframe.net)

// go online
{ "result": [ { "net": "Backbone", "current": "NET_STATE_SYNC_CHAINS", "to": "NET_STATE_ONLINE" } ] }

// go offline
{ "result": [ { "net": "KelVPN", "current": "NET_STATE_ONLINE", "to": "NET_STATE_OFFLINE" } ] }

// go sync
{ "result": [ { "net": "KelVPN", "current": "NET_STATE_SYNC_CHAINS", "start": "resynchronizing" } ] }

go online / go offline return to with the target state. go sync returns start: "resynchronizing" instead of to.

net sync (verified on rpc.cellframe.net)

{
  "result": [
    {
      "state_machine": {
        "current": "NET_STATE_SYNC_CHAINS",
        "requested": "SYNC_ALL"
      }
    }
  ]
}

Common error codes

CodeWhen
34Unknown subcommand (e.g. "get status" with a space instead of "get;status").
102Missing required -net parameter.
103Unknown network name.
15stats subcommand requires tx.
16go subcommand requires online, offline, or sync.
22ca add requires -cert or -hash.
28ca list — database ACL group not defined (observed on rpc.cellframe.net).