Bitcoin Forum
November 16, 2024, 07:09:21 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: how many accounts bitcoind core 0.9+ can handle  (Read 802 times)
p2pbucks (OP)
Hero Member
*****
Offline Offline

Activity: 642
Merit: 500


Evolution is the only way to survive


View Profile
May 20, 2014, 04:25:44 AM
 #1

I am planning to run a service on bitcoin node ( bitcoind core 0.9+ )
I wanna know :

1.how many accounts one bitcoind can handle ?

2.how many transactions(including send & move) can be processed by bitcoind in one second ?

3.What's The limits of keypool ?

Thanks Smiley
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
May 20, 2014, 04:30:56 AM
 #2

Not enough.  There is no hard limit but the more accounts and the more unspent outputs the worse performance becomes.  Don't do it.  It is a technological dead end and once you build your entire service around it you will be trapped.

You wouldn't use online banking to act as an accounting ledger.   You would use an accounting ledger and then use online banking as a tool to report incoming funds and process outgoing payments.  Bitcoind is a bitcoin transaction engine. Build your account infrastructure into your application at the data layer.
p2pbucks (OP)
Hero Member
*****
Offline Offline

Activity: 642
Merit: 500


Evolution is the only way to survive


View Profile
May 20, 2014, 08:12:53 AM
 #3

Not enough....


I understand , Thanks  Smiley

so how many tx can be processed by one bitcoind in one second ?

Should i create several bitcoind to make tx more efficient ? 
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
May 20, 2014, 01:19:51 PM
Last edit: May 20, 2014, 07:44:28 PM by DeathAndTaxes
 #4

If you mean how many txs (as opposed to # of outputs using sendmany) can bitcoind create, it is very low, something on the order of 1 tps. Keep in mind 1 tps is >80,00 tx per day, which is more than the entire network is processing today.  That also assumes you are just using bitcoind to create and broadcast txs.  If you are using a single node to query for incoming tx, confirmations, new blocks, etc then that is going to cut into your transaction rate.

You could use multiple bitcoind servers if needed but if your tx volume is that high you should reconsider your model.  We use multiple bitcoinds but it is for redundancy and to detect network issues (isolation, double spend attempts, tx mutability, etc) instead of out of a need for higher throughput. At a minimum you should be queuing up outgoing payments and sending them as multi output txs by using sendmany, or using rawtransactions.
telepatheic
Jr. Member
*
Offline Offline

Activity: 56
Merit: 1


View Profile
May 20, 2014, 07:38:58 PM
 #5

You should be able to create well over 100 transactions per second on a good computer, but you should create the transactions within your own application (not within bitcoind) and just give bitcoind raw transactions to send to the network. Bitcoind doesn't scale very well at all as a wallet and is more aimed at personal use.

Creating a good wallet is quite difficult as you need to manage a lot of keys and a lot of transactions and do so in an efficient way. The way you do this is dependent on your service (size of average transaction, value of average transaction, number of users, number of transactions, number of individual keys, privacy, security etc.)
fbueller
Sr. Member
****
Offline Offline

Activity: 412
Merit: 287


View Profile
May 21, 2014, 02:35:46 AM
 #6

Definitely agree with DeathAndTaxes and telepatheic in the points they make.

Bitcoind accounts have problems like randomly ending up with no balance, or sometimes not even accounting for the balance your wallet reports with getinfo(). Performance issues aside, you have very little management over what happens, and it encourages bad practices in your code.

There is almost definitely a library to create raw transactions, keys, sign transactions in your language at this stage. Realistically you want to minimize the use of bitcoind in your application. You don't want to have functionality broken if your site goes down. Delegate it only so much, and take care of the rest in your code.

Keypool always contains around 100 addresses. As you remove the oldest keys, newer keys will be added to the other.

Bitwasp Developer.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!