Networks and endpoints

NULL runs one public network, mainnet, and a separate test network for development. This page lists the parameters that matter to node operators and integrators, the default ports and data directories, and the public services built around the chain.

Mainnet

Mainnet is live. Release v0.1.8 is current; see Network upgrades for how rule changes are scheduled.

ParameterValue
Name and tickerNull network, NULL
Smallest unit1 NULL = 100,000,000 units
Address prefixnull1 (bech32m)
Viewing key prefixnullview1
Proof of workEquihash (144, 5), about 1.8 GB of memory per solver thread
Target block interval120 seconds
Difficulty adjustmentLWMA over the last 60 blocks
Coinbase maturity100 blocks (about 3 hours 20 minutes)
Maximum reorganization depth200 blocks
Maximum future timestamp drift2 hours
Anchor maximum age100 blocks
Maximum transactions per block512
Genesis branch id0x4d41494e
Scheduled upgradesnone
Genesis hasha47d659978361de625cfb4d84641b4f2de6f69ef04338e52612e5f8d95853c92
P2P port19000
Seed nodesseed1.nullnet.sh to seed5.nullnet.sh, port 19000

A coinbase reward mined at height h becomes spendable at height h + 100. Wallets only see a reward once it matures. Seed hostnames are resolved each time they are dialed, so a node needs no configuration to find the network.

Emission

ParameterValue
Maximum supply21,000,000 NULL
Premine630,000 NULL (3% of maximum supply), paid by the genesis block to the development fund
Initial block subsidy9.7 NULL
Halving interval1,050,000 blocks (about 4 years at 120-second blocks)

The development fund address is null1z0z9psxvllg396329fcj546gt3dya32zjcxf3w3gg78x2lgffxhgz2snzw6wuwzk930pzv4cvfn. Its key is held offline.

Fees

There is no fee field. The fee is fixed by the number of actions in a transaction: 10,000 units per action. Transactions are padded to 2, 4, 8 or 16 actions, so the fee is 20,000, 40,000, 80,000 or 160,000 units. A wallet spending many small notes moves into a larger action class and pays more; consolidating inputs avoids that.

Confirmations

The network refuses reorganizations deeper than 200 blocks, so 200 confirmations is safe against anything the network will accept. Ten confirmations, about twenty minutes, is a reasonable threshold for ordinary deposits. Exchanges should read the exchange guide and pools the pool guide for crediting and payout rules.

Test network

The test network uses a tiny proof of work and short blocks so a single machine can mine, pay and confirm in seconds.

ParameterValue
Network nametest
Address prefixtnull1
Viewing key prefixtnullview1
Proof of workEquihash (48, 5)
Target block interval5 seconds
Difficulty adjustmentover the last 6 blocks
Coinbase maturity10 blocks
Genesis branch id0x54455354
Seed nodesnone

The test network has no public seeds: pass --connect or --seed to reach another node. Its premine pays the account 0 key of the all-zero seed phrase, which is published, so anyone can fund a test wallet from it. Test network transactions are never valid on mainnet, because the two networks sign under different branch ids.

Default ports

All local services bind to 127.0.0.1 by default. Only the peer port is meant to be reachable from the internet.

ServiceDefaultFlag
Peer-to-peer19000, only when listeningnulld run --listen
Control socket127.0.0.1:18444nulld run --rpc
Node JSON-RPC over HTTPoffnulld run --rpc-http, conventionally 127.0.0.1:18446
Prometheus metricsoffnulld run --metrics, for example 127.0.0.1:9100
Wallet daemon JSON-RPC127.0.0.1:18447null-wallet-rpc --listen
Desktop wallet combined RPC127.0.0.1:18448null-desktop --rpc

A node without --listen connects out only. To accept peers, see Run a node.

Data directories

nulld, null-wallet-rpc and the desktop wallet share one per-user data directory when no path flags are given.

OSData directory
Linux$XDG_DATA_HOME/null, else ~/.local/share/null
macOS~/Library/Application Support/Null
Windows%LOCALAPPDATA%\Null, else %APPDATA%\Null

Inside it, each network has its own directory, main/ or test/:

PathContents
<network>/chain/chain.redbthe node's chain database
<network>/chain/rpc.tokenthe node's control and JSON-RPC token
<network>/chain/peers.datthe address book of verified peers
<network>/wallet.redbthe default wallet
null.confdesktop wallet settings

Only one process can open a database at a time, so stop the desktop wallet before running nulld run on the same chain, and the other way around. On Unix, new directories are created owner-only (0700) and token files 0600.

Public services

ServiceURL
Releasesgithub.com/NullNetProtocol/null-chain/releases
Block explorerexplorer.nullnet.sh
Explorer APIhttps://explorer.nullnet.sh/v1, see Explorer API
Disposable mailmail.nullnet.sh
Mail APIhttps://mail.nullnet.sh/v1, see Mail API
Encrypted pastepaste.nullnet.sh
Paste APIhttps://paste.nullnet.sh/api, see Paste API
Websitenullnet.sh

The explorer API reports the height it has indexed and the state of its node, which is a quick way to compare your own node's tip with the network:

Request

GET
/v1/status
curl -s https://explorer.nullnet.sh/v1/status

Response

{
  "network": "main",
  "indexed_height": 6206,
  "indexed_hash": "00000fc8d37f816b43e79acbaba7d736adbbcbfdca48182361e0dd943a456273",
  "node_height": 6206,
  "node_syncing": false,
  "node_connections": 43,
  "last_pass_at": 1793000988
}