Controlling Auto Combine

+1 vote



We use raw transactions extensively in our platform and a consequence of this is we issue tokens to addresses that write to streams or issue assets that are used as the inputs for these non-transfer based transactions.  We typically send the tokens back to the address performing the stream write or asset issuance so that it always has a supply of tokens with which to build these type of transactions.

We have been experimenting with the number of tokens we allocate to addresses building these transactions for both scale and concurrency under load (the assumption being the more tokens that are available the more transactions we can create under load)

What we found is that we hit a point where Multichain autocombines the tokens from multiple unspent outputs that have a quantity of 1 to a single unspent output equating to the sum of all the single tokens.  This breaks the platform under load as it can only handle a single transaction at a time with it's single unspent output.




Do you think the approach is assumption is that I need to provide the addresses generating the raw transactions unspent outputs for constructing the transaction hence we took the decision to explicitly issue them tokens solely for this purpose

Secondly, if the approach is sound,  what are the recommended runtime parameters to stop multichain combining tokens so that we have enough unspent outputs per address to support load and concurrency?





asked Oct 4, 2017 by marty

1 Answer

0 votes

If you're using a single node to generate transactions, and the MultiChain API is being accessed over a low-latency (or local) connection, you won't get a great increase in concurrency or throughput by working in this way, but only a slight improvement compared to creating each transaction in series, one after the next.

Nonetheless, if you want to do this, you can just set the autocombineminconf runtime parameter to a ridiculously high value like 2000000000 and that should stop all auto combining.

answered Oct 5, 2017 by MultiChain
We have multiple application nodes in a cluster generating transactions against a single MultiChain node.  I've seen a quote stating MultiChain should scale to around 1000 TPS, can you share the runtime configuration that was used to achieve this metric.  We are trying to access the tolerances of our platform design and this would be invaluable is assessing if we have a robust and scalable architecture?


See the description above and below the table in this blog post:

As I mentioned before, the MultiChain JSON-RPC API currently uses locks in such a way that you won't see much improvement in throughput above 2 concurrent processes calling the API.