What is addrindex and why is it necessary?

It’s an optional start-up argument to Bitcoin executable (and/or configuration file) which adds another index of the blockchain to one’s Bitcoin setup.

Prior to Nov 9, 2014 txindex was the only blockchain index that Counterparty used. After that, in order to support multisig without relying on Web APIs (which were sometimes unreliable), an addrindex became necessary.

To recap:

  • txindex is an index of all transactions on the blockchain
  • addrindex is an index of all addresses on the blockchain

The both need to be active for Counterparty to be used:

txindex=1
addrindex=1

Blockchain data that had txindex enabled from the beginning (or were reindexed prior to addrindex) need to be reindexed once with -reindex (when starting bitcoind from the console) or you can add reindex=1 to your bitcoin.conf and remove it after Bitcoin-Core has been started and reindexed the blockchain once. The option (addrindex=1) needs to stay enabled as long as Counterparty is using that instance.

For addrindex to work one needs to have Bitcoin Core with an addrindex patch installed because official Bitcoin Core releases do not have that patch and would ignore the addrindex option and so “reindexing” would be pointless as at most it would only build a txindex which is required but not sufficient.

Additional notes on Bitcoin Core with addrindex patch can be found in the official documentation.