Multichain in-node wallet adresses performance

+2 votes


We are currently developing an application in Python (Django) using Multichain to control all the transaction and currency related user information.

The transactions we make are pretty simple: getnewaddress, grant, issuemore, getaddressbalances and sendassetfrom. Everything is working fine, however, we have experienced a serious slow down in the response time when increasing the number of adresses in the chain.

To give some numbers we have developed a set of unit tests with the basic functionality of the application:

  • Tests completion time without multichain implementation: 80s-100s
  • Tests completion time with multichain implemented and 1000 adresses in the wallet: 120s-150s
  • Tests completion time with multichain implemented and 60k adresses in the wallet: 800s-1000s

Note that these are the same tests just varying the amount of adresses in the wallet.


Right now we just have one node with all the addresses. What's the maximum addresses a node can hold without degrading its performance? Is it the same as if the adresses were watch only (no private keys in the node)? What's the right architecture to support massive numbers of addresses?

Thank you very much for your time.

asked Nov 16, 2018 by anonymous

1 Answer

+1 vote
Best answer
Yes, the MultiChain wallet is not currently architected to deal with a large number of addresses, and we would not recommended using more than a few thousand. It doesn't make a difference if these are watch-only addresses, since the central performance issue is how many UTXOs belonging to those addresses need to be tracked.

For now, you can either wait for a future MultiChain version that is designed to handle a much larger number of addresses, or you can partition your address across multiple MultiChain nodes.
answered Nov 19, 2018 by MultiChain
Wallet performance