ION coin core Qt client (wallet) functions

The ION coin Qt core client (wallet) is a cryptocurrency management application with additional functionality listed on the file menu. Below is a description of the operations from the file menu and deeper into the background console.

File Menu

Open URI…

Uniform Resource Identifiers (URIs) are special links to launch the ION core client (or switch to the ‘Send’ tab) and auto-fill payment details. These can be manually opened by pasting the URI into the subsequent popup window and can even be embedded into web pages for easy payments using ION. It’s easy to create a URI yourself, as well. Simply add the ‘ion:’ prefix to an existing address or use the ‘Receive’ tab to generate one:


Backup wallet

Using this option you can backup the internal wallet.dat file to a secure location away from the computer. By default, the computer will automatically back up to a local file at regular intervals, but this is inadequate insurance against the real possibility that the whole computer fails. Instead, backup to a USB thumb drive or similar secure device for safety and security.


Sign message

By signing a message you can securely prove ownership of the address and associated coins. A personal message, which is then encrypted, can be confirmed by using the “Verify message” function.*

Verify message

You can enter the ION address and encrypted key provided to verify the sender's address.


Sending Addresses

Here you can store regularly used addresses that you send to, for easier and more convenient reference you can name the addresses in the same way as a regular address book. Always double check the amount and recipient address before sending.


Receiving Addresses

These are your regularly-used addresses for receiving payments. Make sure if you use an address more than once, or have significant holdings within it, to safely back up the private keys.

A guide to export the Private keys via the console commands can be found at:

Multisignature creation

Multisignature signing tools enable multiple owners to spend wallet funds by having more than one user with a key that must be used every time funds are sent from the client wallet. Think of this as a regular joint bank account where more than one party is required to sign for access to funds or account operations.


Multisignature Spending

As with multisignature creation, spending multiply-signed funds is accomplished via the RPC console.


Multisignature Signing

To sign a multisignature message or transaction requires more than one client using the getnewaddress / getaccountaddress RPC commands.

Get the consignors public keys using the validateaddress RPC command.

Create 2-of-3 multisigaddress as in:

iond addmultisigaddress 2 '["0443228639179bd64dcc22185ae2d4493111d73244c3668f8ac79ecc79c0ba8d30a6756d0fa20157 709af3281cc721c676785678821a8cabda29b77900b7e4fe0174b114","..second pubkey..","..third pubkey.."]


addmultisigaddress returns the multisignature address. The public keys are raw hexadecimal and do not contain checksums like typical ION addresses do. You can then send funds in a multi-sig transaction using the sendtoaddress/sendmany commands via RPC / or the console.



Closes and exits the Qt client application gracefully. Wait for the message to disappear before shutting down or powering off the machine.

Settings Menu


Encrypt wallet

It is best practice to encrypt your client wallet if you use it for daily transactions. When your wallet is encrypted, funds cannot be sent without entering a passphrase to authorize the transaction. If you run a staking or masternode wallet, the client needs to be unlocked for minting. You also need to unlock the client in the console windows and daemon for further wallet functions.

When encrypting the wallet.dat file, use a strong password, one that’s very hard to guess but easy enough for you to remember. If, after encrypting the client, you do happen to forget the passphrase, it is unlikely that you could ever recover it. It may be possible to run a brute force attack on the encryption, however, this is an advanced process and will cost a portion of your wallet holdings if using a professional service to retrieve. Protect your passphrase like you would protect money.


Change passphrase

You can change the client password with this tool if it is compromised. You will need to enter the original passphrase and a secure the new one twice in the form. See the comments in the section above about not losing or forgetting your passphrase.


Lock wallet

You can lock the wallet via this function, and via the debug console with the lockwallet command.


BIP38 tool

With this tool you can encrypt your private key. This could be handy if you have a paper wallet exported or for long term storage. Please be aware that if you use this method and forget your passphrase, it will be impossible to retrieve your original private key / funds via this BIP38 encryption medium again.

Bitcoin implementation on BIP38 at



Multisend is a tool that allows the client to automatically send a specified amount of each stake or masternode reward to an address or a set of addresses, after it matures. This is set by percentage of the rewards and can be set accordingly.





Start ION on system login

Adds a shortcut to the operating system to enable client loading at system startup*.

*The client, once opened,  may still need to be manually unlocked for further operations such as remote masternode and staking operations.


Size of database cache

The overall size of the database cache can be limited or raised from this menu option. Default is 100mb.


Number of script verification threads

Set the number of script verification threads (-2 to 16, 0 = auto, <0 = leave that many cores free, default: 0.


Enable xION automint

Checkbox toggles xION Zerocoin minting.


Percentage of autominted xION

From the drop down menu, select the percentage of your ION wallet balance that you wanted autominted into xION.


Preferred Automint xION Denomination

From the drop down menu, select the denominations of xION you prefer to have the client automint. Option include: 5000, 1000, 500, 100, 50, 10, 5 or 1.



Stake split threshold

Enables custom splitting of coin block inputs to enable cleaner splits for staking. The default is 2000.


Show Masternodes Tab

*checkbox to display MN tab in client.




Map port using UPnP

Checkbox to enable UPnP. If you are lacking connections from peers, check this box may help, however, this is an advanced function and should be used with care. To utilise the UPnP advanced protocol functions, research thoroughly and evaluate the risks before checking the box, as there are known security exploits with uPnP.


Allow incoming connections

To contribute to the network, incoming connections must be allowed to the ION core client. You do not necessarily need to have this box checked if, for example, you are on a metered or restricted connection. It is good practice to generally contribute to the ION network by checking this box.


Connect through SOCKS5 proxy (default proxy)

If this is part of the security policies or connections, you may need to configure the client to run on your internal network using SOCKS5 protocol.

Default localhost of port 9050 (127.0.1:9050)



Minimize to the tray instead of the taskbar 

Checkbox as to description.

Minimize on close

Checkbox as to description.



User Interface Language

Dropdown list for preferred client language and feedback.

User Interface Theme

Dropdown selection box for client themes.

Units to show amounts  in:

Select from:

ION (default)

Standard numerical display



MilliION placement with 0.001 decimal



MicroION placement with 0.000001



Network monitor

Displays a network monitor and usage screen with overall and data usage display.


Debug console

The Debug console is like the daemon with a command console in that you can perform deeper wallet functions that just the top file menu layer by entering RPC commands that are context and syntax sensitive.

You can get a list of commands by typing ‘help’ from the command line within the console and pressing return.


Be sure to check for the most up to date version RPC commands at:

Peers list

This displays the direct connections to your client with outside client versions and can aid in diagnosing problems. Sometimes peers can be banned across the network due to various reasons and it can then become impossible to actively connect. This can be seen with clients that stop receiving connections. In certain cases, ‘addodes’ are required to be added to the ioncoin.conf file to then make good connections with other trusted peers and to regain connections. Rarely, the connect= line is required. If either the addnode or connect options are enabled, these lines in the ioncoin.conf file should be removed once full synchronization of the blockchain, masternode, and zerocoin info is fully achieved with trusted peers. This allows connections to additional peers on the network that need to synchronize*.

*Client should be restarted for =addnode and =connect changes to take effect.


Wallet repair

Wallet.dat repair and block synchronization tools are here. Make a backup of your wallet.dat BEFORE you start utilizing these advanced tools on the repair window.


Salvage wallet

With this option you can attempt to recover private keys from a corrupt client on system startup.


  • Can be achieved in console with -salvage wallet



Rescan the blockchain for missing wallet transactions.


  • Can be achieved in console with -rescan


Recover wallet 1

Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup (1 = keep tx metadata e.g. account owner and payment request information)


  • Can be achieved in console with -zapwalletxes1


Recover wallet 2

Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup (2 = drop tx metadata)

  • Can be achieved in console with -zapwallettxes2


Upgrade wallet format

  • Can be achieved in console with -upgradewallet


Rebuild index

  • Can be achieved in console with -reindex

This will rebuild the blockchain index from the local blockchain files.


Delete local blockchain folders

  • Can be achieved in console with -resync

This will delete the local blockchain folders, a full resync from the network will need to be achieved before normal wallet functions can resume.


Open wallet configuration file

This opens the ioncoin.conf text file, this is used to configure the client upon startup and contains commands that are pertinent to the particular operation of the client that is chosen and required. Some information should ideally be contained such as:




  • Allows only RPC command to be allowed from the localhost port (not externally)




  • For RPC access, make a good username




  • Make this password very secure with uppercase and special characters


Any commands added to the ioncoin.conf file should be on their own as separate lines for correct system syntax and operation. If you should need to “comment out” a line so it is not read on system startup, add a # symbol at the start of the line containing the command— this way you can keep the settings handy should you need to revert back in the future.


Open masternode configuration file

This opens the masternode.conf file that is required for advanced masternode configuration and ongoing operations. It is read by the client on startup and needs to be configured for each masternode instance.

Further details are found in the ION Masternode build guide:

Show automatic backups

This will open the folder where the automatically backed up wallet.dat files reside.

Blockchain explorer

This opens the block explorer, which is a tool to check the status of transactions like payments, receipt of funds, staking, masternode and, to a certain degree, zerocoin movements on the blockchain. You can enter an ION address and see the full details and history for all transactions or enter a specific transaction ID (TXid).

Launch Flags

These flags can be added to the command line or shortcut to set options at launch.

Command line usage (‘&’ launches in the background):

iond [flags] &

ion-qt [flags] &

ion-cli [flags] [command]



Launch ION-Qt and IOND on MacOS with a custom data directory and resync the blockchain.


/Applications/ -datadir=/Users/myusername/path/to/my/datadir/ -resync &


/path/to/iond -datadir=/Users/myusername/path/to/my/datadir -resync &

Using ION-CLI on MacOS with a custom data directory to issue a command.


/path/to/ion-cli -datadir=/Users/myusername/path/to/my/datadir getinfo

Launch IOND on Linux with a custom data directory ‘ion01’ and resync the blockchain.


/path/to/iond -datadir=/home/myusername/ion01 -resync &

Using ION-CLI on Linux with a custom data directory ‘ion01’ to issue a command.


/path/to/ion-cli -datadir=/home/myusername/ion01 getinfo


Be sure to check for the most up to date version RPC commands at:


Launch IOND on MacOS



This help message


Print version and exit


Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)


Receive and display P2P network alerts (default: 1)


Execute command when the best block changes (%s in cmd is replaced by block hash)


Execute command when the best block changes and its size is over (%s in cmd is replaced by block hash, %d with the block size)


How many blocks to check at startup (default: 500, 0 = all)


Specify configuration file (default: ioncoin.conf)


Specify data directory


Set database cache size in megabytes (4 to 4096, default: 100)


Imports blocks from external blk000??.dat file on startup


Set the Maximum reorg depth (default: 100)


Keep at most <n> unconnectable transactions in memory (default: 100)


Set the number of script verification threads (-16 to 16, 0 = auto, <0 = leave that many cores free, default: 0)


Rebuild blockchain index from current blk000??.dat files on startup


Reindex the accumulator database on startup


Reindex the ION and xION money supply statistics on startup


Delete blockchain folders and resync from scratch on startup


Maintain a full transaction index, used by the getrawtransaction rpc call (default: 0)


Attempt to force blockchain corruption recovery on startup


Connection options:



Add a node to connect to and attempt to keep the connection open


Threshold for disconnecting misbehaving peers (default: 100)


Number of seconds to keep misbehaving peers from reconnecting (default: 86400)


Bind to given address and always listen on it. Use [host]:port notation for IPv6


Connect only to the specified node(s)


Discover own IP address (default: 1 when listening and no -externalip)


Allow DNS lookups for -addnode, -seednode and -connect (default: 1)


Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)


Specify your own public address


Always query for peer addresses via DNS lookup (default: 0)


Accept connections from outside (default: 1 if no -proxy or -connect)


Automatically create Tor hidden service (default: 1)


Maintain at most <n> connections to peers (default: 125)


Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000)


Maximum per-connection send buffer, <n>*1000 bytes (default: 1000)


Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: -proxy)


Only connect to nodes in network <net> (ipv4, ipv6 or onion)


Relay non-P2SH multisig (default: 1)


Support filtering of blocks and transaction with bloom filters (default: 1)


Listen for connections on <port> (default: 55002 or testnet: 55004)


Connect through SOCKS5 proxy


Randomize credentials for every proxy connection. This enables Tor stream isolation (default: 1)


Connect to a node to retrieve peer addresses, and disconnect


Specify connection timeout in milliseconds (minimum: 1, default: 5000)


Tor control port to use if onion listening enabled (default:


Tor control port password (default: empty)


Use UPnP to map the listening port (default: 0)


Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6


Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway


Wallet options:



Specify custom backup path to add a copy of any wallet backup. If set as dir, every backup generates a timestamped file. If set as file, will rewrite to that file every backup.


Number of automatic wallet backups (default: 10)


Number of custom location backups to retain (default: 1)


Do not load the wallet and disable wallet RPC calls


Set key pool size to <n> (default: 100)


Fee (in ION/kB) to add to transactions you send (default: 0.00)


Rescan the block chain for missing wallet transactions on startup


Attempt to recover private keys from a corrupt wallet.dat on startup


Send transactions as zero-fee transactions if possible (default: 0)


Spend unconfirmed change when sending transactions (default: 1)


Disable OS notifications for incoming transactions (default: 0)


If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: 1)


Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: 1.00)


Upgrade wallet to latest format on startup


Specify wallet file (within data directory) (default: wallet.dat)


Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)


Wallet window title


Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)


ZeroMQ notification options:



Enable publish hash block in <address>


Enable publish hash transaction in <address>


Enable publish hash transaction (locked via SwiftX) in <address>


Enable publish raw block in <address>


Enable publish raw transaction in <address>


Enable publish raw transaction (locked via SwiftX) in <address>


Debugging/Testing options:



Output debugging information (default: 0, supplying <category> is optional). If <category> is not supplied, output all debugging information.<category> can be: addrman, alert, bench, coindb, db, lock, rand, rpc, selectcoins, tor, mempool, net, proxy, http, libevent, ion, (obfuscation, swiftx, masternode, mnpayments, mnbudget, zero), qt.


Generate coins (default: 0)


Set the number of threads for coin generation if enabled (-1 = all cores, default: 1)


Show all debugging options (usage: --help -help-debug)


Include IP addresses in debug output (default: 0)


Prepend debug output with timestamp (default: 1)


Fees (in ION/Kb) smaller than this are considered zero fee for relaying (default: 0.001)


Send trace/debug info to console instead of debug.log file (default: 0)


Shrink debug.log file on client startup (default: 1 when no -debug)


Use the test network


Disable all ion specific functionality (Masternodes, Zerocoin, SwiftX, Budgeting) (0-1, default: 0)


Staking options:



Enable staking functionality (0-1, default: 1)


Enable or disable staking functionality for ION inputs (0-1, default: 1)


Enable or disable staking functionality for xION inputs (0-1, default: 1)


Keep the specified amount available for spending at all times (default: 0)


Masternode options:



Enable the client to act as a masternode (0-1, default: 0)


Specify masternode configuration file (default: masternode.conf)


Lock masternodes from masternode configuration file (default: 1)


Set the masternode private key


Set external address:port to get to this masternode (example:


Change automatic finalized budget voting behavior. mode=auto: Vote for only exact finalized budget match to my generated budget. (string, default: auto)


Zerocoin options:



Enable automatic Zerocoin minting (0-1, default: 1)


Percentage of automatically minted Zerocoin (1-100, default: 10)


Preferred Denomination for automatically minted Zerocoin (1/5/10/50/100/500/1000/5000), 0 for no preference. default: 0)


Enable automatic wallet backups triggered after each xION minting (0-1, default: 1)


Specify custom backup path to add a copy of any automatic xION backup. If set as dir, every backup generates a timestamped file. If set as file, will rewrite to that file every backup. If backuppath is set as well, 4 backups will happen


Delete all zerocoin spends and mints that have been recorded to the blockchain database and reindex them (0-1, default: 0)


SwiftX options:



Enable SwiftX, show confirmations for locked transactions (bool, default: true)


Show N confirmations for a successfully locked transaction (0-9999, default: 5)


Node relay options:



Relay and mine data carrier transactions (default: 1)


Maximum size of data in data carrier transactions we relay and mine (default: 83)


Block creation options:



Set minimum block size in bytes (default: 0)


Set maximum block size in bytes (default: 750000)


Set maximum size of high-priority/low-fee transactions in bytes (default: 50000)


RPC server options:



Accept command line and JSON-RPC commands


Accept public REST requests (default: 0)


Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces)


Location of the auth cookie (default: data dir)


Username for JSON-RPC connections


Password for JSON-RPC connections


Listen for JSON-RPC connections on <port> (default: 55003 or testnet: 55005)


Allow JSON-RPC connections from specified source. Valid for <ip> are a single IP (e.g., a network/netmask (e.g. or a network/CIDR (e.g. This option can be specified multiple times


Set the number of threads to service RPC calls (default: 4)


UI Options:



Choose data directory on startup (default: 0)


Set language, for example "de_DE" (default: system locale)


Start minimized


Set SSL root certificates for payment request (default: -system-)


Show splash screen on startup (default: 1)

ion-cli and ion-qt Console Commands

Be sure to check for the most up to date version RPC commands at:


== Blockchain ==

calculateaccumulatorvalues "height"

findserial "serial"

getaccumulatorvalues "height"


getblock "hash" ( verbose )



getblockhash index

getblockheader "hash" ( verbose )



getfeeinfo blocks


getrawmempool ( verbose )

gettxout "txid" n ( includemempool )


verifychain ( numblocks )


== Control ==


help ( "command" )



== Generating ==



setgenerate generate ( genproclimit )


== Ion ==


createmasternodebroadcast "command" ( "alias")


decodemasternodebroadcast "hexstring"

getbudgetinfo ( "proposal" )


getbudgetvotes "proposal-name"



getmasternodescores ( blocks )


getmasternodewinners ( blocks "filter" )



listmasternodeconf ( "filter" )

listmasternodes ( "filter" )

masternode "command"...

masternodeconnect "address"



mnbudget "command"... ( "passphrase" )

mnbudgetrawvote "masternode-tx-hash" masternode-tx-index "proposal-hash" yes|no time "vote-sig"

mnbudgetvote "local|many|alias" "votehash" "yes|no" ( "alias" )

mnfinalbudget "command"... ( "passphrase" )

mnsync "status|reset"

preparebudget "proposal-name" "url" payment-count block-start "ion-address" monthy-payment

relaymasternodebroadcast "hexstring"

spork "name" ( value )

startmasternode "local|all|many|missing|disabled|alias" lockwallet ( "alias" )

submitbudget "proposal-name" "url" payment-count block-start "ion-address" monthy-payment "fee-tx"


== Mining ==

getblocktemplate ( "jsonrequestobject" )


getnetworkhashps ( blocks height )

prioritisetransaction <txid> <priority delta> <fee delta>

reservebalance ( reserve amount )

submitblock "hexdata" ( "jsonparametersobject" )


== Network ==

addnode "node" "add|remove|onetry"


disconnectnode "node"

getaddednodeinfo dns ( "node" )







setban "ip(/netmask)" "add|remove" (bantime) (absolute)


== Rawtransactions ==

createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...}

decoderawtransaction "hexstring"

decodescript "hex"

fundrawtransaction "hexstring"

getrawtransaction "txid" ( verbose )

sendrawtransaction "hexstring" ( allowhighfees )

signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )


== Util ==

createmultisig nrequired ["key",...]

estimatefee nblocks

estimatepriority nblocks

validateaddress "ionaddress"

verifymessage "ionaddress" "signature" "message"


== Wallet ==

addmultisigaddress nrequired ["key",...] ( "account" )

autocombinerewards enable ( threshold )

backupwallet "destination"

bip38decrypt "ionaddress" "passphrase"

bip38encrypt "ionaddress" "passphrase"


dumpprivkey "ionaddress"

dumpwallet "filename"

enableautomintaddress enable

getaccount "ionaddress"

getaccountaddress "account"

getaddressesbyaccount "account"

getbalance ( "account" minconf includeWatchonly )


getnewaddress ( "account" )


getreceivedbyaccount "account" ( minconf )

getreceivedbyaddress "ionaddress" ( minconf )



gettransaction "txid" ( includeWatchonly )



importaddress "address" ( "label" rescan )

importprivkey "ionprivkey" ( "label" rescan )

importwallet "filename"

keypoolrefill ( newsize )

listaccounts ( minconf includeWatchonly)




listreceivedbyaccount ( minconf includeempty includeWatchonly)

listreceivedbyaddress ( minconf includeempty includeWatchonly)

listrecordssinceblock ( "blockhash" target-confirmations includeWatchonly)

listsinceblock ( "blockhash" target-confirmations includeWatchonly)

listtransactionrecords ( "account" count from includeWatchonly)

listtransactions ( "account" count from includeWatchonly)

listunspent ( minconf maxconf  ["address",...] )

lockunspent unlock [{"txid":"txid","vout":n},...]

move "fromaccount" "toaccount" amount ( minconf "comment" )

multisend <command>

sendfrom "fromaccount" "toionaddress" amount ( minconf "comment" "comment-to" )

sendmany "fromaccount" {"address":amount,...} ( minconf "comment" {"address":true,...} )

sendtoaddress "ionaddress" amount ( "comment" "comment-to" subtractfeefromamount )

sendtoaddressix "ionaddress" amount ( "comment" "comment-to" )

setaccount "ionaddress" "account"

setstakesplitthreshold value

settxfee amount

signmessage "ionaddress" "message"


walletpassphrase "passphrase" timeout ( anonymizeonly )

walletpassphrasechange "oldpassphrase" "newpassphrase"


== Zerocoin ==


exportzerocoins include_spent ( denomination )



getspentzerocoinamount hexstring index



importzerocoins importdata

listmintedzerocoins (fVerbose) (fMatureOnly)



mintzerocoin amount ( utxos )


resetmintzerocoin ( fullscan )



setxionseed "seed"

spendzerocoin amount mintchange minimizechange securitylevel ( "address" )

spendzerocoinmints mints_list ("address")

Be sure to check for the most up to date version RPC commands at:

== About ion core ==

Gives info about the ion core build version, open source info and credits


== About Qt ==

Gives info about the version of Qt framework and copymarks / credits

Have more questions? Submit a request


Article is closed for comments.