1Two nodes, one chain
The original Divi node is written in C++ and descends from Bitcoin Core by way of PIVX. Its last release is v3.0.0 from July 2023, and it reports itself to other nodes as DIVI Core: 3.0.0.0. Divi Desktop runs a copy of it behind its window.
IronDivi is a new node written in Rust. Its latest release is v0.2.6 from 22 October 2026, and it reports itself as /IronDivi:0.2.6/. It follows the same chain, accepts the same blocks, talks the same network protocol, and answers the same commands, so you can swap one for the other and your scripts keep working. The rest of this page is about the edges where that is not quite true.
Everything below was first measured on 2026-10-21 with both programs running on one Ubuntu 22.04 machine, each synced to the testnet tip, with the same IronDivi and C++ node installs the previous tutorials walk through. That was IronDivi 0.2.5. On 2026-10-23 we ran the commands, answers and stop steps again on the 0.2.6 release, against a C++ node on the same machine; where 0.2.6 behaves differently, this page says so.
2What is the same
- The chain. Both nodes reported the same height, and the same hash for block 100,000 (
5d279fae…702c), to each other and to the explorer. A block is valid on one if and only if it is valid on the other. - The network. They connect to each other and to the rest of testnet. Our IronDivi node's eight peers were all C++ nodes.
- The wallet. Both use the same kind of 24-word recovery phrase. On mainnet both derive keys on the same tree (
m/44'/301'/…), so a phrase from one restores the same addresses in the other. On testnet they differ: Divi Core usesm/44'/1'/…there, while IronDivi 0.2.6 keepsm/44'/301'/…, so the same words give different testnet addresses in the two programs. Either way the phrase brings back only keys made from it: imported keys, watch-only and multisig addresses and managed vaults have to be moved by hand (Rescue a wallet, step 6). - The commands. 101 commands are listed by both, with the same names and arguments: everything in A tour of irondivi-cli works unchanged with
divi-cli. - The command tool.
irondivi-clianddivi-clitake the same command words. Only the way you tell them which network and folder to use differs (step 4).
3Files, folders and ports
| C++ node | IronDivi | |
|---|---|---|
| Programs | divid, divi-cli | irondivid, irondivi-cli |
| Data folder, Linux | ~/.divi, testnet in testnet3 under it | ~/.irondivi/testnet |
| Data folder, Mac | ~/Library/Application Support/DIVI | ~/Library/Application Support/IronDivi/testnet |
| Settings file | divi.conf, key=value lines | irondivi.conf, TOML: key = "value" |
| Wallet | one file, wallet.dat | a folder, wallet/ |
| Blocks on disk | blocks/ and chainstate/ | chainstate/ holds both; txindex/ if enabled |
| Log | debug.log, trimmed by the node | debug.log, rotated into debug.log.1 and so on |
| Network port, mainnet / testnet | 51472 / 51474 | 51472 / 51474 |
| Command port, mainnet / testnet | 51473 / 51475 | 51471 / 51473 |
| Windows build | yes | no |
IronDivi's testnet command port, 51473, is the C++ node's mainnet command port. If you run both programs on one machine, or move from one to the other and keep an old rpcport line, you can end up talking to the wrong node, or get HTTP 401 Unauthorized because the name and password belong to the other one. Set rpcport yourself in both settings files when they share a machine.
The network ports match, so two nodes on one machine still need one of them moved with port, whichever programs they are.
4Starting and configuring
The C++ node takes single-dash options and the same words in divi.conf; IronDivi takes double-dash options and a TOML file. The common ones:
| You want | C++ node | IronDivi |
|---|---|---|
| testnet | -testnet or testnet=1 | --testnet (command line only; it picks the folder) |
| run in the background | -daemon or daemon=1 | --daemon |
| another folder | -datadir=/path | --datadir /path |
| a peer to try first | addnode=host:51474, one line each | addnode = "host:51474", or a list ["a:51474", "b:51474"] |
| keep every transaction findable | txindex=1 | txindex = true |
| stake or not | staking=0 | staking = false, or setstaking while running |
| print the log to the screen | -printtoconsole | --printtoconsole |
| rebuild the chain from the block files | -reindex | no such option, still none in 0.2.6; delete chainstate/ and sync again |
| a settings file elsewhere | -conf=/path/divi.conf | --conf /path/irondivi.conf |
| stop the node | divi-cli stop; it exits in a few seconds | irondivi-cli stop; 0.2.6 exits in a few seconds. (On 0.2.5, stop answered Divi server stopping but the node kept running; use kill and its process number there.) |
The C++ node reads testnet=1 from the settings file; IronDivi does not, because it needs to know the network before it knows which folder to read the file from. Give --testnet on the command line every time, to the node and to irondivi-cli. Three things only IronDivi has: --addressindex and --spentindex for looking up any address's history, --disablewallet to run with no wallet at all, and --export-chain to write the chain out as JSON. The full list for each is in Config files explained.
Start-up feels different. The C++ node spends about two and a half minutes on "Loading wallet" before it opens a single connection; IronDivi had its first two peers one second after starting.
5Commands only one of them has
We asked both nodes for every command, then called each name that appeared on one side only, so this list is what the programs actually do, not what their help text claims. Masternode commands exist on both and are left out of this tutorial.
C++ node only: none any more. IronDivi 0.2.5 answered Method not found for invalidateblock, reconsiderblock, reverseblocktransactions, getinvalid, ban, setmocktime, encryptwallet, bip38paperwallet and signtransactionwithaddresskey; 0.2.6 answers all of them. A few are there in name only:
setmocktimeanswerssetmocktime is not supported by this node, andban outdatedanswers that peer versions are not tracked.generateblockandsetgenerateanswernot yet implemented, so you cannot make blocks on demand in IronDivi's regtest the way the C++ node does.encryptwallet,walletpassphrase,walletpassphrasechangeandwalletlockare real in 0.2.6: an IronDivi wallet can now have a passphrase. See Encrypt your wallet.
IronDivi only (divi-cli answers Method not found):
- Staking from the command line:
setstaking,reservebalance,getmintinginfo,getstakesplitthreshold,setstakesplitthreshold. - Address lookups:
getaddressinfo,validateaddresses,getaddresshistory,getaddressesbylabel,getimmaturebalance,getkeypoolsize,gettxindex,rescanblockchain. - Fees:
estimatefee,estimatesmartfee,estimatepriority(on testnet, 0.2.6 gave 0.00001 for the first two and -1 for the third). - Peers and logs:
disconnectnode,setban,getpeerscores,getlogconfig,setlogconfig. signrawtransactionwithwalletandgetlitewalletinfo, which the IronDivi web wallet uses, andbip38encrypt(the C++helplists it, but calling it givesMethod not found).
The C++ help lists 102 commands and hides a few that work, such as walletpassphrase; it also lists signTransactionWithAddressKey, but the name that works is all lower case. IronDivi 0.2.6's help lists 134, including signmessage and verifymessage, which 0.2.5 answered but left out. When in doubt, call the command.
6Where the answers differ
For commands both nodes have, the fields are nearly always the same. IronDivi keeps a running parity audit that calls every command on both nodes and compares the shape of the answers; at its last run before the 0.2.6 release, 61 commands matched exactly, 11 could not be compared, and 23 differed, mostly by extra fields that IronDivi adds. In release 0.2.6 you will notice these:
- Formatting. The C++ node indents by four spaces and writes
"key" : value; IronDivi indents by two, writes"key": value, and sorts the keys alphabetically. Read answers by field name, never by line number. getblock. Both now givemoneysupply(the total coins in existence after that block) andacc_checkpoint. IronDivi 0.2.5 left them out. On 0.2.6,moneysupplyappears only for blocks the node has added itself since it ran 0.2.6, so a node upgraded from 0.2.5 shows it on old blocks only after a fresh sync.getpeerinfo. 0.2.6 now givesbanscore,inflightandwhitelistedand real byte and time counters per peer (0.2.5 reported them as 0). Only the C++ node givesaddrlocal.getstakingstatus. Both answer"staking status": falseand"stake split threshold". IronDivi adds a text,"staking status text": "Staking Disabled"(0.2.5 gave only the text).- Addresses in decoded transactions. On testnet both now write them as
y…. IronDivi 0.2.5 wrote the mainnet formD…for the same key; if you still run 0.2.5, compare thehexof the output script instead. - Errors. The codes now match. Leave out an argument and both answer code -1, but the C++ node sends the command's whole help text and IronDivi one line, such as
Missing height parameter. A hash that does not exist is -5Block not foundon both. Both say -32601 for an unknown command. (0.2.5 used -32602 for the first two.) - Version numbers.
getinfosays"version": "3.0.0.0"on both, which is the Divi version IronDivi is compatible with, not its own. Usesubversionfromgetnetworkinfoto tell them apart:/IronDivi:0.2.6/. - Protocol. IronDivi speaks protocol 70920, the C++ node 70915. They understand each other.
7Memory, disk and sync time
Both nodes, same machine, same afternoon, both at the testnet tip with a transaction index, after about five hours running (IronDivi 0.2.5, 2026-10-21; not measured again on 0.2.6):
IronDivi's folder was 946 MB of chain data plus a 131 MB log; the C++ node's was 415 MB of blocks, 37 MB of chain state and a log it keeps short. IronDivi's log is far chattier than the C++ node's at its default level, so give it room or lower it with setlogconfig.
Sync time from nothing to the tip, on the same machine the same afternoon: the C++ node took about 20 minutes and IronDivi 0.2.5 62 minutes. IronDivi 0.2.6, on another machine on 2026-10-23 with no peer on the local network and a second node syncing beside it, was at the tip within 68 minutes. Both found a fast node on the local network as well as the internet, so this measures the programs more than the connection; on the open internet both will be slower, and an hour or two is normal for either. Testnet had 360,000 blocks at the time; mainnet has many more and takes proportionally longer.
8Which one to run
- Run IronDivi for a new node on Linux or a Mac, especially one you talk to from scripts or use for address lookups: it starts in seconds, has the more complete command set, and is where the work is happening. Use 0.2.6 or newer: 0.2.5 had no wallet passphrase and wrote mainnet-form addresses in decoded transactions.
- Run the C++ node on Windows, where IronDivi has no build; on a machine short of memory; or when you need the exact behaviour Divi Desktop has, since Desktop ships the C++ node.
- Run both if you want to check one against the other, on different command ports. Each needs its own
portandrpcport, and they can peer with each other throughaddnodeon 127.0.0.1.
Whichever you choose, the settings that matter are in Config files explained, and Run a node as a service keeps either one running after a reboot.
If something goes wrong
| You see | What it means |
|---|---|
HTTP 401 Unauthorized from irondivi-cli | It reached a node, but the C++ one: IronDivi's testnet command port is the C++ mainnet port. Set rpcport in both settings files. |
Method not found for a command the other node has | See step 5. On IronDivi, check you run 0.2.6 (irondivid --version): 0.2.5 lacked several. Command names are case-sensitive: use signtransactionwithaddresskey, all lower case. |
A script that parses getblock breaks on IronDivi | It probably counted lines, or expected moneysupply on an old block of an upgraded node. Parse by field name and treat missing fields as absent. |
Addresses start with D on a testnet IronDivi node | A 0.2.5 decoding quirk, fixed in 0.2.6. The key is right; the prefix is not. Upgrade, or compare the script hex. |
| Bind failed or address already in use | Both nodes on one machine want the same network port. Give one of them another port. |
testnet=1 in irondivi.conf has no effect | IronDivi takes the network from the command line only. Add --testnet. |
Still stuck? Ask the Divi chatbot, or see all tutorials.