<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>MultiChain Developer Q&amp;A - Recent questions tagged performance</title>
<link>https://www.multichain.com/qa/tag/performance</link>
<description>Powered by Question2Answer</description>
<item>
<title>Single cold node, in-wallet address performance</title>
<link>https://www.multichain.com/qa/33968/single-cold-node-in-wallet-address-performance</link>
<description>&lt;p&gt;Hello,&lt;/p&gt;&lt;p&gt;for a University project, we're currently evaluating the possibility of using Multichain as a financial transaction journal engine, with the basic principle of representing each user account as an address in the wallet and using direct RPC calls to read and write information. With this central database approach in mind, we're thinking of running one node only as there's nothing we'd gain from the decentralisation, simply inside our cluster away from the public.&lt;/p&gt;&lt;p&gt;As part of a performance estimation, we tried setting up a chain to the best of our understanding, aiming to optimise as much for performance as possible:&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;chain-protocol = multichain
chain-description = MultiChain test-10k
root-stream-name = root
root-stream-open = true
chain-is-testnet = false
target-block-time = 2
maximum-block-size = 8388608
maximum-chunk-size = 1048576
maximum-chunk-count = 1024

anyone-can-connect = false
anyone-can-send = true
anyone-can-receive = true
anyone-can-receive-empty = true
anyone-can-create = false
anyone-can-issue = true
anyone-can-mine = false
anyone-can-activate = false
anyone-can-admin = false
support-miner-precheck = true
allow-arbitrary-outputs = false
allow-p2sh-outputs = false
allow-multisig-outputs = false

setup-first-blocks = 3
mining-diversity = 0.0
admin-consensus-upgrade = 0.0
admin-consensus-txfilter = 0.0
admin-consensus-admin = 0.0
admin-consensus-activate = 0.0
admin-consensus-mine = 0.0
admin-consensus-create = 0.0
admin-consensus-issue = 0.0

lock-admin-mine-rounds = 0
mining-requires-peers = true
mine-empty-rounds = 0
mining-turnover = 0.0

initial-block-reward = 0
first-block-reward = -1
reward-halving-interval = 52560000
reward-spendable-delay = 1
minimum-per-output = 0
maximum-per-output = 100000000000000
minimum-offchain-fee = 0
minimum-relay-fee = 0
native-currency-multiple = 100000000

skip-pow-check = true
pow-minimum-bits = 1
target-adjust-freq = -1
allow-min-difficulty-blocks = true

only-accept-std-txs = true
max-std-tx-size = 4194304
max-std-op-returns-count = 32
max-std-op-return-size = 2097152
max-std-op-drops-count = 5
max-std-element-size = 40000

default-network-port = 4771
default-rpc-port = 4770
chain-name = test-10k-fixed
protocol-version = 20012
network-message-start = f9f9cff0
address-pubkeyhash-version = 00330835
address-scripthash-version = 051c4624
private-key-version = 8013627a
address-checksum-value = 906c59f5

genesis-pubkey = 036b0f05c206bb7ac8e6bfd2869f473cf4b4acb0b94195944fe0371a2bfb3157f7
genesis-version = 1
genesis-timestamp = 1618841128
genesis-nbits = 536936447
genesis-nonce = 271
genesis-pubkey-hash = f0b759e6726332558339c7b7a8f6f8721e7927c5
genesis-hash = 00e08d153bf75996cfd758c6d09fd1fca23e7bb836fb47ea59ba15e473f381c5
chain-params-hash = b846252b96d6e3bc24b74eaaaa94163e3fe65584f1d1325992849054dfe07045&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;We then proceeded to create a total of one million addresses on the chain, using a custom golang script with 10 goroutine workers. This process took about 7 hours. Not stellar, but seeing as it would not be part of a burst phase and only needed for new user signups, it's acceptable.&lt;/p&gt;&lt;p&gt;We then proceeded to issue some different assets for each of the generated addresses using IssueMore (to simulate a user entering the ecosystem and having &quot;paid in&quot; to his account), also using a golang script. This process unfortunately is very slow. Each calls takes about 2 seconds. Since the IssueMore would only be used as a &quot;user is paying in new currency&quot; action, it also should not be that burstable, but 2 seconds on a completely empty chain sounds bad. It also prevents us from creating an equal distribution of currency among the addresses, as it would 2 million seconds per asset.&lt;/p&gt;&lt;p&gt;We have not yet proceeded to test the performance of sending assets between addresses. We were thinking of using SendAssetFrom to send currencies between different addresses - and sending to the burn address in order to simulate a user &quot;cashing out&quot; (with the currency leaving the ecosystem again)&lt;/p&gt;&lt;h3&gt;Concrete questions&lt;/h3&gt;&lt;p&gt;With the problem and data laid out above, I'd appreciate any feedback, especially regarding:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Is Multichain a sensible choice for a centralised financial transaction database with high throughput?&lt;/li&gt;&lt;li&gt;Are there any steps we can look at to further improve the current performance?&lt;/li&gt;&lt;li&gt;Is there any data available on general scalability of Multichain?&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;We're happy to supply more information as required and thankful for any further insights.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Kind regards,&lt;/p&gt;&lt;p&gt;Peter&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/33968/single-cold-node-in-wallet-address-performance</guid>
<pubDate>Mon, 21 Jun 2021 15:55:53 +0000</pubDate>
</item>
<item>
<title>Multichain Benchmarking</title>
<link>https://www.multichain.com/qa/32583/multichain-benchmarking</link>
<description>&lt;p&gt;Hello,&amp;nbsp;&lt;/p&gt;&lt;p&gt;We are running multichain network with 10 nodes to test our application which is working on node JS. &amp;nbsp;One complete request takes data from front-end of our application, passes it to backend, and backend pushes it to Multichain node using stream publish.&amp;nbsp;We are using &lt;strong&gt;Apache-Jmeter&lt;/strong&gt; to see the throughput and latency for each node. In my opinion, this is the performance of requests that are sent to multichain node. But in a broader view, how we can analyse&amp;nbsp;&amp;nbsp;multichain network performance.&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/32583/multichain-benchmarking</guid>
<pubDate>Tue, 25 May 2021 09:20:24 +0000</pubDate>
</item>
<item>
<title>Setup for 200-300 Tx per second</title>
<link>https://www.multichain.com/qa/17571/setup-for-200-300-tx-per-second</link>
<description>Hello MC team&lt;br /&gt;
&lt;br /&gt;
I am developing a solution based on 3 nodes &amp;nbsp;( one for main , second for receiving all the transactions generated against the first node and a third node for backup purposes ) that will have mining permission and this nodes will receive a top peak of 300 transaction per second (api calls) to one of the nodes.What is the recommended hardware and configuration ( of the chain) for supporting this burden and give flexibility for more than 1000 transactions per second in a near future.? These transactions include validating of course.&lt;br /&gt;
&lt;br /&gt;
I am using multichain Comunity edition &lt;br /&gt;
&lt;br /&gt;
Best regards.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/17571/setup-for-200-300-tx-per-second</guid>
<pubDate>Tue, 14 Jan 2020 20:38:17 +0000</pubDate>
</item>
<item>
<title>How to improve tx/s performance</title>
<link>https://www.multichain.com/qa/13439/how-to-improve-tx-s-performance</link>
<description>Hi,&lt;br /&gt;
&lt;br /&gt;
i have deployed a Multichain blockchain on my desktop pc (i5@3.20Ghz, 8GB RAM) with 2 nodes. The performance is really low, since i am getting like 1 tx/s.&lt;br /&gt;
&lt;br /&gt;
My params configurations looks as follows:&lt;br /&gt;
&lt;br /&gt;
target-block-time = 2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
maximum-block-size = 1000000000 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
anyone-can-send = true &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
anyone-can-receive = true &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
setup-first-blocks = 60 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
mining-diversity = 0.5 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
max-std-tx-size = 10000 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Also i am using Windows cmd with a for loop to generate transactions:&lt;br /&gt;
&lt;br /&gt;
for /l %x in (1,1, 10) do multichain-cli blockchain2 sendassettoaddress 1CtfVVPeXsvfdo9C1X37sh3B7hQxgNPsyAjEU2 multicoin 1&lt;br /&gt;
&lt;br /&gt;
I would like to get the maximum tx/s out of my resources, can you help me on identifying the bottlenecks?&lt;br /&gt;
&lt;br /&gt;
Thank you!</description>
<guid isPermaLink="true">https://www.multichain.com/qa/13439/how-to-improve-tx-s-performance</guid>
<pubDate>Sat, 20 Apr 2019 09:07:48 +0000</pubDate>
</item>
<item>
<title>Blockchain stops working with 3 nodes using a stream with 2M transactions</title>
<link>https://www.multichain.com/qa/13015/blockchain-stops-working-nodes-using-stream-transactions</link>
<description>&lt;p&gt;I have the following scenario:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;1 node that created the blockchain and a stream, which I used to create a stream and add 2M items into it, with random off-chain content (images).&lt;/li&gt;&lt;li&gt;2 nodes that join the blockchain after all the data has been imported through the master node, so on&amp;nbsp;startup&amp;nbsp;they begin to catch up with the master node at their own pace.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;At the very beginning when the 2 new joined nodes are initially catching up, I can issue commands to any of the 3 nodes using the&amp;nbsp;&lt;em&gt;multichain-&lt;/em&gt;&lt;em&gt;cli&lt;/em&gt;&amp;nbsp;tool. For instance, I send this command to the master node and I get the reply back immediately:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;multichain-cli ipregister -rpcuser=multichainrpc -rpcpassword=m4lt1ch41nRpC! getaddresses&lt;br&gt;{&quot;method&quot;:&quot;getaddresses&quot;,&quot;params&quot;:[],&quot;id&quot;:&quot;85616894-1551974478&quot;,&quot;chain_name&quot;:&quot;ipregister&quot;}&lt;/p&gt;&lt;p&gt;[&lt;br&gt;&amp;nbsp; &amp;nbsp; &quot;1WTvECnAdMgvXDqMDQeiwXExCfvvMuHwq1HR7S&quot;&lt;br&gt;]&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;However, at some point in time, when the volume of data being already synced up grows, the multichain-cli&amp;nbsp;tool stops responding for all the nodes, and as the volume of synced data still grows, the nodes start to degrade dramatically until they just do not respond to commands.&lt;/p&gt;&lt;p&gt;Both 2 nodes join the blockchain through the DNS name of the master and they&amp;nbsp;just subscribe to the stream to be able to find data by key, that's all.&lt;/p&gt;&lt;p&gt;Then I stop everything (without deleting the data) and restart first the master node. It starts to respond again to multichain-cli&amp;nbsp;commands. But when I start again the first of the 2 additional nodes, I start getting this from it:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Node started&lt;br&gt;mchn: Sending minimal parameter set to 174.16.60.237:8099&lt;br&gt;receive version message: /MultiChain:0.2.0.6/: version 70002, blocks=28632, us=174.16.138.178:50952, peer=1&lt;br&gt;Added time data, samples 2, offset +0 (+0 minutes)&lt;br&gt;mchn: Parameter set from peer=1 verified&lt;br&gt;Loading addresses from DNS seeds (could take a while)&lt;br&gt;0 addresses found from DNS seeds&lt;br&gt;dnsseed thread exit&lt;br&gt;socket sending timeout: 61s&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;And then in the master:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Sending minimal parameter set to 174.16.138.178:50952&lt;br&gt;receive version message: /MultiChain:0.2.0.6/: version 70002, blocks=28627, us=174.16.60.237:8099, peer=7&lt;br&gt;Added time data, samples 3, offset +0 (+0 minutes)&lt;br&gt;mchn: Parameter set from peer=7 verified&lt;br&gt;ResendWalletTransactions()&lt;br&gt;Sending minimal parameter set to 174.16.138.178:8099&lt;br&gt;receive version message: /MultiChain:0.2.0.6/: version 70002, blocks=28627, us=174.16.60.237:58276, peer=12&lt;br&gt;mchn: Parameter set from peer=12 verified&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Clearly, the 2nd node degrades just after joining again the blockchain. If I join the 3rd node it gets even worse.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/13015/blockchain-stops-working-nodes-using-stream-transactions</guid>
<pubDate>Thu, 07 Mar 2019 16:26:18 +0000</pubDate>
</item>
<item>
<title>How to properly test transactions throughput?</title>
<link>https://www.multichain.com/qa/12984/how-to-properly-test-transactions-throughput</link>
<description>&lt;p&gt;Hello,&lt;/p&gt;&lt;p&gt;I’d like to test transactions throughput.&lt;/p&gt;&lt;p&gt;My idea was:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;only one node&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;only one address involved&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;only one asset issued&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;make &lt;em&gt;n&lt;/em&gt; transactions (calls to &lt;em&gt;sendasset(); &lt;/em&gt;one unit sent)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I am using python 3.7 and Savoir. I take the time used to make &lt;em&gt;n&lt;/em&gt; transactions, thus the average time per transaction and finally the transactions per second.&lt;/p&gt;&lt;p&gt;I tested on different machines (with &lt;em&gt;n = 100, 1000, 10000)&lt;/em&gt; and I don’t get good results when comparing to these: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.multichain.com/blog/2017/06/multichain-1-beta-2-roadmap/&quot;&gt;https://www.multichain.com/blog/2017/06/multichain-1-beta-2-roadmap/&lt;/a&gt; .&lt;/p&gt;&lt;p&gt;In particular, with &lt;em&gt;n=10000&lt;/em&gt;, I get ~11 TX/s. Am I doing something wrong? Is my machine not good enough (Intel Core i7 2600 @ 3.40 GHz with 8 gigabytes of ram)?&lt;/p&gt;&lt;p&gt;Also, are there any initial blockchain parameters that could influence the throughput so much?&lt;/p&gt;&lt;p&gt;Thank you very much.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/12984/how-to-properly-test-transactions-throughput</guid>
<pubDate>Fri, 01 Mar 2019 18:25:11 +0000</pubDate>
</item>
<item>
<title>Performance impact depending on the number of miners</title>
<link>https://www.multichain.com/qa/12831/performance-impact-depending-on-the-number-of-miners</link>
<description>Hi,&lt;br /&gt;
&lt;br /&gt;
We are currently implementing a private blockchain that has initially 15 nodes as miners. If we increase the number of miners, would this have a significant impact on the a.) confirmation time of a transaction, b.) and the propagation time of committed blocks across the blockchain network.&lt;br /&gt;
&lt;br /&gt;
I am new to the blockchain technology so I would like to understand how exactly the number of miners impacts the blockchain network.&lt;br /&gt;
&lt;br /&gt;
Thank you!</description>
<guid isPermaLink="true">https://www.multichain.com/qa/12831/performance-impact-depending-on-the-number-of-miners</guid>
<pubDate>Mon, 11 Feb 2019 12:34:11 +0000</pubDate>
</item>
<item>
<title>Why is wallet folder size large in contrast to blocks folder?</title>
<link>https://www.multichain.com/qa/12049/why-is-wallet-folder-size-large-in-contrast-to-blocks-folder</link>
<description>&lt;p&gt;&lt;span style=&quot;font-family:helvetica,arial,sans-serif&quot;&gt;&lt;span style=&quot;font-size:14px&quot;&gt;Hello,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family:helvetica,arial,sans-serif&quot;&gt;&lt;span style=&quot;font-size:14px&quot;&gt;We are running tests&amp;nbsp;to determine &lt;strong&gt;per-node storage&lt;/strong&gt; requirements with:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family:helvetica,arial,sans-serif&quot;&gt;&lt;span style=&quot;font-size:14px&quot;&gt;- 2 Nodes&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family:helvetica,arial,sans-serif&quot;&gt;&lt;span style=&quot;font-size:14px&quot;&gt;- Publishing items (&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family:helvetica,arial,sans-serif; font-size:14px&quot;&gt;key-values) to a&amp;nbsp;stream (Not Subscribed)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family:helvetica,arial,sans-serif; font-size:14px&quot;&gt;Observations:&lt;/span&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; style=&quot;width:500px&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot; colspan=&quot;2&quot;&gt;Change in file&amp;nbsp;size&amp;nbsp;after publishing 1 item to a stream in 1 block&amp;nbsp;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:center&quot;&gt;Change in size of ./Blocks folder&lt;/td&gt;&lt;td style=&quot;text-align:center&quot;&gt;3409 bytes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:center&quot;&gt;Change in size of ./Wallet folder&lt;/td&gt;&lt;td style=&quot;text-align:center&quot;&gt;4492 bytes&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table border=&quot;1&quot; cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; style=&quot;width:500px&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot; colspan=&quot;2&quot;&gt;Change in file&amp;nbsp;size&amp;nbsp;after publishing 10 items to a stream in 1 block&amp;nbsp;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:center&quot;&gt;Change in size of ./Blocks folder&lt;/td&gt;&lt;td style=&quot;text-align:center&quot;&gt;3839 bytes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:center&quot;&gt;Change in size of ./Wallet folder&lt;/td&gt;&lt;td style=&quot;text-align:center&quot;&gt;18576 bytes&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table border=&quot;1&quot; cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; style=&quot;width:500px&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot; colspan=&quot;2&quot;&gt;Change in file&amp;nbsp;size&amp;nbsp;after publishing 100 items to a stream in 1 block&amp;nbsp;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:center&quot;&gt;Change in size of ./Blocks folder&lt;/td&gt;&lt;td style=&quot;text-align:center&quot;&gt;7732 bytes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:center&quot;&gt;Change in size of ./Wallet folder&lt;/td&gt;&lt;td style=&quot;text-align:center&quot;&gt;187561 bytes&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;pre&gt;&lt;em&gt;Note: Publishing one item corresponds to one transaction on-chain.&lt;/em&gt;&lt;/pre&gt;&lt;h3&gt;&lt;strong&gt;Questions:&amp;nbsp;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Q1: Why does the node wallet that created the item store such large amount of data in contrast to blocks&amp;nbsp;folder? Even though we have not subscribed to the stream!&lt;/p&gt;&lt;p&gt;Q2: Does Multichain have an option of &lt;strong&gt;not&lt;/strong&gt; storing transactions in wallet? (This is because we are indexing and keeping the reference to on-chain transactions in an external off-chain database)&lt;/p&gt;&lt;p&gt;Thank you !&amp;nbsp;&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/12049/why-is-wallet-folder-size-large-in-contrast-to-blocks-folder</guid>
<pubDate>Fri, 21 Dec 2018 13:26:32 +0000</pubDate>
</item>
<item>
<title>How to achieve highest TPS for simple asset transfer?</title>
<link>https://www.multichain.com/qa/11779/how-to-achieve-highest-tps-for-simple-asset-transfer</link>
<description>We are using 2 VMs having t3.xlarge( 4 vCPU core, 16 Gib RAM, 2.5 GHZ processor) configuration.&lt;br /&gt;
&lt;br /&gt;
We are sending asset from admin node to other peer node for a constant span with &amp;quot;sendfromaddress&amp;quot; API.&lt;br /&gt;
&lt;br /&gt;
Please let us know whether we need to vary default blockchain parameters and what will be the number of users per node to attain 1000Tx/second.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/11779/how-to-achieve-highest-tps-for-simple-asset-transfer</guid>
<pubDate>Thu, 06 Dec 2018 18:45:20 +0000</pubDate>
</item>
<item>
<title>Multichain in-node wallet adresses performance</title>
<link>https://www.multichain.com/qa/11551/multichain-in-node-wallet-adresses-performance</link>
<description>&lt;p&gt;Hello,&lt;/p&gt;&lt;p&gt;We are currently developing an application in Python (Django) using Multichain to control all the transaction and currency related user information.&lt;/p&gt;&lt;p&gt;The transactions&amp;nbsp;we make are pretty simple: getnewaddress, grant, issuemore,&amp;nbsp;getaddressbalances and&amp;nbsp;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.&lt;br&gt;&lt;br&gt;To give some numbers we have developed a set of unit tests with the basic functionality of the application:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tests completion time without multichain implementation: 80s-100s&lt;/li&gt;&lt;li&gt;Tests completion time with multichain implemented and 1000 adresses in the wallet: 120s-150s&lt;/li&gt;&lt;li&gt;Tests completion time with multichain implemented and 60k adresses in the wallet: 800s-1000s&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note that these are the same tests just varying the amount of adresses in the wallet.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;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?&lt;br&gt;&lt;br&gt;&lt;br&gt;Thank you very much for your time.&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/11551/multichain-in-node-wallet-adresses-performance</guid>
<pubDate>Fri, 16 Nov 2018 15:00:29 +0000</pubDate>
</item>
<item>
<title>IssueFrom and Publish performance as asset number grows</title>
<link>https://www.multichain.com/qa/10239/issuefrom-and-publish-performance-as-asset-number-grows</link>
<description>&lt;p&gt;Hi&lt;/p&gt;&lt;p&gt;I've noticed the performance of both the IssueFrom and Publish calls degrade significantly as the number of assets on the chain grows, even at relatively small numbers.&lt;/p&gt;&lt;p&gt;I found that the first issue command took 4ms, but the 10,000th issuance took over&amp;nbsp;100ms&lt;/p&gt;&lt;p&gt;My setup is a Node JS&amp;nbsp;app and chain(single node) spun up with docker-compose.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Multichain version is 1.0.5.&lt;/p&gt;&lt;p&gt;I have&amp;nbsp;been using the multichain-node library but also tried my own code to directly talk to the chain. There wasn't much performance difference (my own code was actually a bit slower).&lt;/p&gt;&lt;p&gt;Apologies for the&amp;nbsp;code snippet below but is there something I'm doing wrong?&amp;nbsp;Any help would be appreciated.&lt;/p&gt;&lt;pre&gt;&lt;strong&gt;async function &lt;/strong&gt;&lt;span style=&quot;color:#ffc66d&quot;&gt;issue&lt;/span&gt;(counter) {
  &lt;strong&gt;const &lt;/strong&gt;assetId = uuid.v4().&lt;span style=&quot;color:#ffc66d&quot;&gt;replace&lt;/span&gt;(&lt;span style=&quot;color:#6a8759&quot;&gt;/-/g&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#6a8759&quot;&gt;''&lt;/span&gt;)&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;metadata = {
    &lt;span style=&quot;color:#9876aa&quot;&gt;streamId&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;`streamId-&lt;/span&gt;${counter}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;cData&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;`c-&lt;/span&gt;${counter}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;lData&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;`l-&lt;/span&gt;${counter}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;sData&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;`s-&lt;/span&gt;${counter}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;mData&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;`m-&lt;/span&gt;${counter}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;dateCreated&lt;/span&gt;: &lt;strong&gt;new &lt;/strong&gt;Date().&lt;span style=&quot;color:#ffc66d&quot;&gt;toString&lt;/span&gt;()&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;}&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;
&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;body = JSON.&lt;span style=&quot;color:#ffc66d&quot;&gt;stringify&lt;/span&gt;({ &lt;span style=&quot;color:#9876aa&quot;&gt;jsonrpc&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;'1.0'&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;id&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;'curltest'&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;method&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;'issuefrom'&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;params&lt;/span&gt;: [MY_ADDRESS&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;MY_ADDRESS&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;assetId&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#6897bb&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#6897bb&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#6897bb&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;, &lt;/span&gt;metadata] })&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;
&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;url = &lt;span style=&quot;color:#6a8759&quot;&gt;`http://&lt;/span&gt;${multichainHost}&lt;span style=&quot;color:#6a8759&quot;&gt;:8571`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;options = {
    url&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;method&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;'POST'&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;headers&lt;/span&gt;:
    {
      &lt;span style=&quot;color:#6a8759&quot;&gt;'content-type'&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;'text/plain'&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;}&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;auth&lt;/span&gt;: {
      &lt;span style=&quot;color:#9876aa&quot;&gt;user&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;'user'&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color:#9876aa&quot;&gt;pass&lt;/span&gt;: &lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;${multichainPassword}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;}&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;    &lt;/span&gt;body&lt;span style=&quot;color:#cc7832&quot;&gt;,
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;}&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;
&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;start = now()&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;response = &lt;strong&gt;await &lt;/strong&gt;rp(options)&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;end = now()&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;const &lt;/strong&gt;duration = (end - start).&lt;span style=&quot;color:#ffc66d&quot;&gt;toFixed&lt;/span&gt;(&lt;span style=&quot;color:#6897bb&quot;&gt;1&lt;/span&gt;)&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;console.&lt;span style=&quot;color:#ffc66d&quot;&gt;log&lt;/span&gt;(&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;${counter}&lt;span style=&quot;color:#6a8759&quot;&gt;, &lt;/span&gt;${duration}&lt;span style=&quot;color:#6a8759&quot;&gt;`&lt;/span&gt;)&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;return &lt;/strong&gt;response.&lt;span style=&quot;color:#9876aa&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;}

&lt;strong&gt;async function &lt;/strong&gt;&lt;span style=&quot;color:#ffc66d&quot;&gt;directTest&lt;/span&gt;() {
  &lt;strong&gt;const &lt;/strong&gt;nToCreate = &lt;span style=&quot;color:#6897bb&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;&lt;strong&gt;for &lt;/strong&gt;(&lt;strong&gt;let &lt;/strong&gt;i = &lt;span style=&quot;color:#6897bb&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;; &lt;/span&gt;i &amp;lt; nToCreate&lt;span style=&quot;color:#cc7832&quot;&gt;; &lt;/span&gt;i += &lt;span style=&quot;color:#6897bb&quot;&gt;1&lt;/span&gt;) {
    &lt;strong&gt;await &lt;/strong&gt;&lt;span style=&quot;color:#ffc66d&quot;&gt;issue&lt;/span&gt;(i)&lt;span style=&quot;color:#cc7832&quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;color:#cc7832&quot;&gt;  &lt;/span&gt;}
}&lt;/pre&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/10239/issuefrom-and-publish-performance-as-asset-number-grows</guid>
<pubDate>Tue, 10 Jul 2018 15:13:50 +0000</pubDate>
</item>
<item>
<title>how many streams can be created and subscribed by a node without affecting performance</title>
<link>https://www.multichain.com/qa/9784/streams-created-subscribed-without-affecting-performance</link>
<description>Hi Multichain Team,&lt;br /&gt;
&lt;br /&gt;
At this moment i have around 1000 stream and all the stream are subscribed by my node.could you please give me an rough idea about how long can these number be.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/9784/streams-created-subscribed-without-affecting-performance</guid>
<pubDate>Fri, 25 May 2018 06:03:51 +0000</pubDate>
</item>
<item>
<title>Performance of importwallet</title>
<link>https://www.multichain.com/qa/9522/performance-of-importwallet</link>
<description>&lt;p&gt;Hi.&lt;/p&gt;&lt;p&gt;I am working on&amp;nbsp;HA cluster at the moment:&lt;/p&gt;&lt;p&gt;1. two&amp;nbsp;servers (master / slave) are connected and start with the same wallet.dat&lt;/p&gt;&lt;p&gt;2. master checks periodically if result of dumpwallet has changed&lt;/p&gt;&lt;p&gt;3. if true master sends dump to slave&lt;/p&gt;&lt;p&gt;4. slave does an &quot;importwallet&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The problem here is that importwallet rescans the complete blockchain.&lt;br&gt;Rescanning all blocks seems to be quite slow and the multichain rpc is not responding in this period of time.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;p&gt;- 60GB blocks folder&lt;br&gt;- importwallet with one new privatekey runs since 2h and is still running&lt;br&gt;- machine is ec2&amp;nbsp;m5.xlarge&lt;br&gt;- rpc is not responsive&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;here is the debug.log output&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;2018-05-03 07:03:26 Skipping import of 1CNpcJb2xBQ15LgNQCKjFBYAZGXabMXXuHZTrh (key already present)&lt;br&gt;2018-05-03 07:03:26 Skipping import of 19uWPgKbkn4uGBuf3RQFgpUL71XWoghzAgnMJj (key already present)&lt;br&gt;2018-05-03 07:03:26 Importing 1TaY4J9DsfMBcbY8mTusciKJfnTgD5G1RD3x2c...&lt;br&gt;2018-05-03 07:03:26 Skipping import of 177Myj4T8aqYrJJ6ZrDP6md85GLzu7g9BYYRYm (key already present)&lt;br&gt;2018-05-03 07:03:26 Rescanning all 50954 blocks&lt;br&gt;2018-05-03 08:25:16 Still rescanning. At block 1. Progress=1.000000&lt;br&gt;2018-05-03 08:26:48 Still rescanning. At block 15. Progress=1.000000&lt;br&gt;2018-05-03 08:27:57 Still rescanning. At block 30. Progress=1.000000&lt;br&gt;2018-05-03 08:29:16 Still rescanning. At block 32. Progress=1.000000&lt;br&gt;2018-05-03 08:31:06 Still rescanning. At block 35. Progress=1.000000&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;First of all it took nearly 1,5h to actually start scanning. (?)&lt;br&gt;Then it seems like it needs 10 seconds to scan one single block. (Maybe this is ok since there are about 5000 transactions in a single block).&lt;br&gt;So it would take nearly a week to rescan all 55000 blocks.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;My problem is that a cannot use importprivkey with rescan=false, since I do not know if this address has already been used. That's because I only sync the wallet periodically. I am also not able&amp;nbsp;to intercept calls like &quot;getnewaddress&quot;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Maybe an option could be that there is a parameter for importwallet (and also importprivkey) that tells multichain how far in the past it should search for an address transaction.&lt;/p&gt;&lt;p&gt;e.g. if I do an hourly sync, only the last e.g. 500 blocks must be rescanned for the new address.&lt;br&gt;(I also have a timestamp information in the dumpwallet file itself)&lt;/p&gt;&lt;p&gt;for example:&lt;/p&gt;&lt;p&gt;importwallet dump.dat 500&lt;br&gt;to rescan the last 500 blocks for all new addresses&lt;br&gt;&lt;br&gt;or&amp;nbsp;&lt;br&gt;importprivkey ABC123 true 500&lt;br&gt;to rescan last 500 blocks for key ABC123&lt;br&gt;(but even this would still take over an hour)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;But having a cluster with a HA node that takes about 6 days to catch up with a single address is quite bad.&lt;/p&gt;&lt;p&gt;Same holds true for backup and restore. If after a server crash I need to restore the blockchain, it seems to be reasonable to reindex / rescan the restored chain. But this also shouldn't take a week.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In general I am a little bit concerned to hopefully never be forced to do a reindex / rescan on a huge blockchain, since this would take several days to be operational again.&lt;br&gt;&lt;br&gt;Do you have similar experiences?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/9522/performance-of-importwallet</guid>
<pubDate>Thu, 03 May 2018 08:44:19 +0000</pubDate>
</item>
<item>
<title>Maximum number of assets and streams per node performance-wise</title>
<link>https://www.multichain.com/qa/9152/maximum-number-assets-and-streams-per-node-performance-wise</link>
<description>Hi Multichain folks,&lt;br /&gt;
&lt;br /&gt;
You have mentioned previously that the wallet on multichain can only track a few thousand addresses and their balances before performance starts to degrade.&lt;br /&gt;
&lt;br /&gt;
Does the node wallet also keep track of assets and streams and how many assets and streams can it scale to while performing well?</description>
<guid isPermaLink="true">https://www.multichain.com/qa/9152/maximum-number-assets-and-streams-per-node-performance-wise</guid>
<pubDate>Fri, 30 Mar 2018 02:17:08 +0000</pubDate>
</item>
<item>
<title>rpckeepalive: performance drops vs port freeze</title>
<link>https://www.multichain.com/qa/8948/rpckeepalive-performance-drops-vs-port-freeze</link>
<description>Hi,&lt;br /&gt;
&lt;br /&gt;
is there any news on the rpc freeze problem?&lt;br /&gt;
&lt;a href=&quot;https://www.multichain.com/qa/7006/node-rpc-completely-freezes-rpcssl?show=7178#a7178&quot; rel=&quot;nofollow&quot;&gt;https://www.multichain.com/qa/7006/node-rpc-completely-freezes-rpcssl?show=7178#a7178&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
What I still experience (v1.0.4):&lt;br /&gt;
Everything works fine using rpckeepalive=0 but there is another problem:&lt;br /&gt;
&lt;br /&gt;
The performance (tx/s) decreases a lot when using rpckeepalive=0&lt;br /&gt;
I only get ~ 100 tx/s throughput when using rpckeepalive=0 (and rpcssl).&lt;br /&gt;
&lt;br /&gt;
If I enable rpckeepalive I get ~800 tx/s (!)&lt;br /&gt;
But still the rpc api freezes after some time.&lt;br /&gt;
&lt;br /&gt;
I think the problem only appears when using it together with rpcssl because every new requests has to open a new connection and has to do the ssl handshake all over again.&lt;br /&gt;
&lt;br /&gt;
So:&lt;br /&gt;
keepalive=0 has a really bad performance (at least when using rpcssl?)&lt;br /&gt;
keepalive=1 freezes the node on high load after no more than 30 seconds.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/8948/rpckeepalive-performance-drops-vs-port-freeze</guid>
<pubDate>Wed, 14 Mar 2018 09:20:58 +0000</pubDate>
</item>
<item>
<title>Performance impact as number of Nodes in Blockchain increase</title>
<link>https://www.multichain.com/qa/8905/performance-impact-as-number-of-nodes-blockchain-increase</link>
<description>Hi&lt;br /&gt;
&lt;br /&gt;
We are trying to implement a private blockchain starting with 10 nodes. Going forward we want to expand it to hundreds of nodes. &lt;br /&gt;
&lt;br /&gt;
In our blockchain we want to credit points to user account based on certain action. This has to happen in near real time hence we have performance as one of the most important criteria for selecting blockchain platform.&lt;br /&gt;
&lt;br /&gt;
I understand multichain based blockchain can do around 1000 TPS. &lt;br /&gt;
&lt;br /&gt;
However as we know every commited block in blockchain has to be replicated to all nodes in blockchain network. So if the number of nodes in network increase it would add more latency due to increased number of nodes.&lt;br /&gt;
&lt;br /&gt;
Is this understanding correct? If yes how TPS is affected with increased number of nodes.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/8905/performance-impact-as-number-of-nodes-blockchain-increase</guid>
<pubDate>Mon, 12 Mar 2018 09:53:53 +0000</pubDate>
</item>
<item>
<title>Watch-only address limit.</title>
<link>https://www.multichain.com/qa/7696/watch-only-address-limit</link>
<description>Hi team,&lt;br /&gt;
&lt;br /&gt;
Do you guys already have a benchmark done on how much performance can deteriorate with increasing number of watch-only address? Also how much memory one watch-only address or an UTXO would utilize. &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Also is it feasible to keep 100k watch-only addresses in a node? or we need to apply some logic like sharding to distribute the addresses if there a a case of needed 100k or even more addresses. If this has to be done to rebalance nodes, is un-watching a address feasible ?&lt;br /&gt;
&lt;br /&gt;
Thanks!&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
&lt;br /&gt;
Ashish</description>
<guid isPermaLink="true">https://www.multichain.com/qa/7696/watch-only-address-limit</guid>
<pubDate>Wed, 29 Nov 2017 12:14:17 +0000</pubDate>
</item>
<item>
<title>Performance tests: disk space distribution in mc folder</title>
<link>https://www.multichain.com/qa/7642/performance-tests-disk-space-distribution-in-mc-folder</link>
<description>Hi.&lt;br /&gt;
&lt;br /&gt;
At the moment we are running some performance tests:&lt;br /&gt;
&lt;br /&gt;
- 4 Nodes&lt;br /&gt;
&lt;br /&gt;
- write random key-values in root stream.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Now the disk usage is at 8 GB and I am interested in an explanation of the following information:&lt;br /&gt;
&lt;br /&gt;
5.3M &amp;nbsp;&amp;nbsp;&amp;nbsp;./permissions.db&lt;br /&gt;
4.1G &amp;nbsp;&amp;nbsp;&amp;nbsp;./wallet/txs.db&lt;br /&gt;
7.1G &amp;nbsp;&amp;nbsp;&amp;nbsp;./wallet&lt;br /&gt;
480K &amp;nbsp;&amp;nbsp;&amp;nbsp;./entities.db&lt;br /&gt;
272K &amp;nbsp;&amp;nbsp;&amp;nbsp;./database&lt;br /&gt;
208K &amp;nbsp;&amp;nbsp;&amp;nbsp;./chainstate&lt;br /&gt;
183M &amp;nbsp;&amp;nbsp;&amp;nbsp;./blocks/index&lt;br /&gt;
1.9G &amp;nbsp;&amp;nbsp;&amp;nbsp;./blocks&lt;br /&gt;
8.9G &amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;
8.9G &amp;nbsp;&amp;nbsp;&amp;nbsp;total&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
I would assume to find the most data in /blocks but obviously it is in wallet / wallet.tx.&lt;br /&gt;
&lt;br /&gt;
Can you explain what exactly is stored there and why it takes that much space compared to the /blocks folder?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
&lt;br /&gt;
Alex</description>
<guid isPermaLink="true">https://www.multichain.com/qa/7642/performance-tests-disk-space-distribution-in-mc-folder</guid>
<pubDate>Fri, 24 Nov 2017 13:12:34 +0000</pubDate>
</item>
<item>
<title>Core switching</title>
<link>https://www.multichain.com/qa/7595/core-switching</link>
<description>Hey team,&lt;br /&gt;
&lt;br /&gt;
Does multichain utilizes multiple cores or it runs only on one core and relies on OS for core switching? &lt;br /&gt;
&lt;br /&gt;
I 've a 2 core c4.large instance and no matter how much load I put on the multichain the CPU utilization caps at 50%. It never exceeds the 50% mark. So if I 've a 4 core system my 3 cores would lie idle? &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
&lt;br /&gt;
Ashish</description>
<guid isPermaLink="true">https://www.multichain.com/qa/7595/core-switching</guid>
<pubDate>Tue, 21 Nov 2017 07:09:48 +0000</pubDate>
</item>
<item>
<title>Multichain rpc server connection question (performance)</title>
<link>https://www.multichain.com/qa/6798/multichain-rpc-server-connection-question-performance</link>
<description>At the moment I am evaluating multichain performance measuring stuff like, network sync times, Max tx/s in a multi-node network ~ 20 Nodes, also on different locations.&lt;br /&gt;
&lt;br /&gt;
A first step was to check the performance of a single node over the internet in regards to [tx/sec].&lt;br /&gt;
&lt;br /&gt;
When there is a high load I observed an error on the operating system level (Ubuntu) that says too many open files. So it seems, that on high rpc request load the ulimit is fully used up, but this should not happen in my opinion.&lt;br /&gt;
&lt;br /&gt;
How are connections handled on the internal rpc server? Is there some keep-alive or a too high connection timeout? It seems that rpc requests that opened a connection don't get closed immediately and at some point use up all the resources. Of course I could increase the &amp;quot;ulimit -n&amp;quot; but I just wanted to check if this could be a possible optimization on multichain side.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Would it help if the client that send the rpc-requests set the header &amp;quot;Connection: close&amp;quot;?</description>
<guid isPermaLink="true">https://www.multichain.com/qa/6798/multichain-rpc-server-connection-question-performance</guid>
<pubDate>Thu, 21 Sep 2017 19:05:05 +0000</pubDate>
</item>
<item>
<title>Better approach to retrieve data from streams</title>
<link>https://www.multichain.com/qa/4947/better-approach-to-retrieve-data-from-streams</link>
<description>Hello Multichain team,&lt;br /&gt;
&lt;br /&gt;
I have made a small program to retrieve data under a specific key. I have more than 90 keys each having 13,500 values stored under them.&lt;br /&gt;
&lt;br /&gt;
When I try to retrieve all the values under any key, it takes around 1.5 seconds to 2.5 seconds.&lt;br /&gt;
&lt;br /&gt;
Here is my code :&lt;br /&gt;
&lt;br /&gt;
import subprocess, json&lt;br /&gt;
&lt;br /&gt;
path = &amp;quot;/home/user/multichain-1.0-beta-1/multichain-cli&amp;quot;&lt;br /&gt;
id = &amp;quot;1493517600&amp;quot;&lt;br /&gt;
max_entries= &amp;quot;100000&amp;quot;&lt;br /&gt;
output = subprocess.check_output([path, &amp;quot;chain2&amp;quot;, &amp;quot;liststreamkeyitems&amp;quot;, &amp;quot;b&amp;quot;, id, &amp;quot;false&amp;quot;, max_entries]).decode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Is there any better way to improve it / another way to do it to be faster ?&lt;br /&gt;
&lt;br /&gt;
Also, is it possible to retrieve only one value under a key by searching data inside that value ?</description>
<guid isPermaLink="true">https://www.multichain.com/qa/4947/better-approach-to-retrieve-data-from-streams</guid>
<pubDate>Tue, 02 May 2017 11:01:17 +0000</pubDate>
</item>
<item>
<title>Data size for streams</title>
<link>https://www.multichain.com/qa/4107/data-size-for-streams</link>
<description>Hi Multichain Team,&lt;br /&gt;
&lt;br /&gt;
How much data size streams can handle? Can it handle millions of records (which means giga bytes of data) like a database can?&lt;br /&gt;
&lt;br /&gt;
Thanks.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/4107/data-size-for-streams</guid>
<pubDate>Fri, 24 Feb 2017 17:10:34 +0000</pubDate>
</item>
<item>
<title>Publish Rate for streams</title>
<link>https://www.multichain.com/qa/4106/publish-rate-for-streams</link>
<description>Hi Multichain Team,&lt;br /&gt;
&lt;br /&gt;
Can you please tell us how many transactions we can do per second if we are using streams? I mean how fast can we publish for which we will get a good performance.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/4106/publish-rate-for-streams</guid>
<pubDate>Fri, 24 Feb 2017 17:07:53 +0000</pubDate>
</item>
<item>
<title>Performance Streams &amp;. Key-Value</title>
<link>https://www.multichain.com/qa/3878/performance-streams-%26-key-value</link>
<description>1. What is more performant (regarding r/w access time):&lt;br /&gt;
&lt;br /&gt;
a) Creating a lot of Streams with several keys&lt;br /&gt;
&lt;br /&gt;
b) Creating several Streams with a lot of keys&lt;br /&gt;
&lt;br /&gt;
2. Are there measurements how the stream concept performs regarding numer of streams, number of key-value pairs?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Greetings</description>
<guid isPermaLink="true">https://www.multichain.com/qa/3878/performance-streams-%26-key-value</guid>
<pubDate>Fri, 03 Feb 2017 07:27:02 +0000</pubDate>
</item>
<item>
<title>Performances benchmark</title>
<link>https://www.multichain.com/qa/3722/performances-benchmark</link>
<description>Hi guys,&lt;br /&gt;
&lt;br /&gt;
I have not found a recent performances benchmark.&lt;br /&gt;
&lt;br /&gt;
Is there one somewhere ? I have read that the new wallet was tremendously more efficient, and that multichain engine is able to handle millions of assets, but are there somewhere some performances reports, graphs?&lt;br /&gt;
&lt;br /&gt;
I'm especially interested in benchmarks with a lot of assets, lot of transactions of course, and also measurement of the underlying DB volume space.&lt;br /&gt;
&lt;br /&gt;
Our local tests show that with a 4 node cluster doing nothing (so 1 empty transaction every 15s) the .multichain folder is growing by ~80 MB a week, is this expected ? is there a way to reduce this volume (i mean something different than making the empty transaction occurs less often ;-) since the problem here is more the transactions/db volume ratio than the volume of the db when the node is doing nothing).&lt;br /&gt;
&lt;br /&gt;
I understand that the volume of the db depends on the number of transactions, and the metadata size contained in the transactions/stream items (among other things), but the simple test of an idle cluster is showing us that the db is growing fast.&lt;br /&gt;
&lt;br /&gt;
For example, if a node doesn't subscribe to a stream, will its DB volume grow the same way than if it has subscribed ?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
thanks a lot for any information about this performances/db volume benchmarks.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
cheers,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Sebastien</description>
<guid isPermaLink="true">https://www.multichain.com/qa/3722/performances-benchmark</guid>
<pubDate>Thu, 19 Jan 2017 10:04:59 +0000</pubDate>
</item>
<item>
<title>Performance measurement for Multichain streams</title>
<link>https://www.multichain.com/qa/3653/performance-measurement-for-multichain-streams</link>
<description>Hi,&lt;br /&gt;
&lt;br /&gt;
Do you have any performance measurement for the use of Multichain stream as a nosql database?&lt;br /&gt;
&lt;br /&gt;
R.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/3653/performance-measurement-for-multichain-streams</guid>
<pubDate>Sun, 15 Jan 2017 14:08:30 +0000</pubDate>
</item>
<item>
<title>Network throughput computation</title>
<link>https://www.multichain.com/qa/3007/network-throughput-computation</link>
<description>Hi,&lt;br /&gt;
&lt;br /&gt;
I am interested in how the general network throughput of multichain can be computed (how you guys did it in &amp;quot;&lt;a href=&quot;http://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/&amp;quot;&quot; rel=&quot;nofollow&quot;&gt;http://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/&amp;quot;&lt;/a&gt; quoting 200 to 800 tx/sec).&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
R.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/3007/network-throughput-computation</guid>
<pubDate>Thu, 27 Oct 2016 19:53:40 +0000</pubDate>
</item>
<item>
<title>Throughput Issue with Streams</title>
<link>https://www.multichain.com/qa/2961/throughput-issue-with-streams</link>
<description>&lt;pre&gt;Hi,&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;1. Summary:&lt;/span&gt; Throughput of 'publish' is ~5.96 ops/s. Is this expected?

&lt;span style=&quot;text-decoration: underline;&quot;&gt;2. System configuration&lt;/span&gt;
Machine: Windows 7, Desktop, 12 hyper-threaded cores, 16GB RAM, SSD drive
Multichain: 1.0-alpha-24
Client: Java 1.8.0_91, Vert.x
&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;3. Operation Steps (pseudo code)&lt;/span&gt;

&lt;span style=&quot;text-decoration: underline;&quot;&gt;3.1 Warmup&lt;/span&gt;
create stream &quot;accounts&quot; true
for (i from 1 to 10) {&lt;/pre&gt;&lt;pre&gt;  account = &quot;account-&quot; + i
  when(publish &quot;accounts&quot; account hex(&quot;active&quot;)).then(publish &quot;accounts&quot; account hex(&quot;inactive&quot;)
}
&lt;strong&gt;
All calls to 'publish' are performed concurrently.&lt;/strong&gt;

&lt;span style=&quot;text-decoration: underline;&quot;&gt;3.2 Run&lt;/span&gt;
for (i from 11 to 1000) {&lt;/pre&gt;&lt;pre&gt;  account = &quot;account-&quot; + i&lt;/pre&gt;&lt;pre&gt;  when(publish &quot;accounts&quot; &quot;account-&quot;+i hex(&quot;some data&quot;)).then(publish &quot;accounts&quot; account hex(&quot;inactive&quot;)
}

&lt;strong&gt;All calls to 'publish' to create &quot;accounts&quot; are carried out asynchronously and concurrently.&lt;/strong&gt;

We measure the duration for each 'publish'.

&lt;span style=&quot;text-decoration: underline;&quot;&gt;4. Result&lt;/span&gt;
mean-time: 5.96 ops/second

&lt;/pre&gt;&lt;pre&gt;Is this expected? Seems rather slow. &lt;/pre&gt;&lt;pre&gt;kind regards,&lt;/pre&gt;&lt;pre&gt;farzad&lt;/pre&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/2961/throughput-issue-with-streams</guid>
<pubDate>Tue, 25 Oct 2016 15:39:45 +0000</pubDate>
</item>
<item>
<title>Performance data</title>
<link>https://www.multichain.com/qa/2950/performance-data</link>
<description>Hi, &lt;br /&gt;
&lt;br /&gt;
Please how can I compute some blockchain &amp;nbsp;performance and scalability results like number of transactions per seconds etc. or do you have this documented somewhere?&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
R.</description>
<guid isPermaLink="true">https://www.multichain.com/qa/2950/performance-data</guid>
<pubDate>Fri, 21 Oct 2016 11:14:39 +0000</pubDate>
</item>
<item>
<title>Long transactions performance</title>
<link>https://www.multichain.com/qa/1992/long-transactions-performance</link>
<description>&lt;p&gt;We have the Multichain configured to support native currency. Some transfer transaction takes a long time to execute. We think that the reason is the fragmented wallet for the account because of the mining rewards. In fact I need to increase transaction and block limits to avoid 'transaction too long' error.&lt;/p&gt;&lt;p&gt;&lt;em&gt;CTransaction(hash=ef32615102, ver=1, vin.size=&lt;strong&gt;978&lt;/strong&gt;, vout.size=2, nLockTime=0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CTxIn(COutPoint(0001800122, 0), scriptSig=3045022100a9c6bb6f7aa9f9)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CTxIn(COutPoint(005774ffe0, 0), scriptSig=3045022100cdad08e9253d40)&lt;br&gt;....&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CTxIn(COutPoint(ffc8ca487c, 0), scriptSig=3045022100d3d003a63c5a5d)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CTxIn(COutPoint(fff759534e, 0), scriptSig=304402207532997f738e1735)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CTxOut(nValue=1.00000000, scriptPubKey=OP_DUP OP_HASH160 f8732cf97b91)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CTxOut(nValue=0.00008618, scriptPubKey=OP_DUP OP_HASH160 62525c7cfc25)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;But my question is, does not autocombine feature works in background to avoid this? Is it enabled by default? What is not working in my configuration?&lt;/p&gt;&lt;p&gt;Anyway I try to execute by hand: combineunspet in multchain-cli, and I get this error:&lt;/p&gt;&lt;p&gt;&lt;em&gt;mincoins: combineunspent&lt;br&gt;{&quot;method&quot;:&quot;combineunspent&quot;,&quot;params&quot;:[],&quot;id&quot;:1,&quot;chain_name&quot;:&quot;mincoins&quot;}&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;error code: -4&lt;br&gt;error message:&lt;br&gt;Not enough inputs&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Thanks a lot,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; Fernando&lt;/p&gt;</description>
<guid isPermaLink="true">https://www.multichain.com/qa/1992/long-transactions-performance</guid>
<pubDate>Mon, 13 Jun 2016 16:46:54 +0000</pubDate>
</item>
<item>
<title>High transaction volumes</title>
<link>https://www.multichain.com/qa/112/high-transaction-volumes</link>
<description>How well will multichain scale in terms of transactions per second when configured for high volume transaction solutions?</description>
<guid isPermaLink="true">https://www.multichain.com/qa/112/high-transaction-volumes</guid>
<pubDate>Wed, 09 Sep 2015 13:24:18 +0000</pubDate>
</item>
</channel>
</rss>