I'd suggest looking for a different approach here. I don't what is the 
purpose of use here so it's hard to make a recommendation, but if memory 
serves then each wallet object probably consumes at least 300 MB of RAM due 
to blockchain related objects (which is why I ultimately moved to different 
solution for my use case, but I digress). What you could try (and I am no 
bitcoinj expert) is attempt to make wallets that share block chain related 
stuff (i.e. block store, blockchain etc.) though I am not sure bitcoinj 
allows for such approach to be used. Also if it's possible maybe creating a 
wallet for every user is not necessary.

These are my 2 cents on this question. And I am mostly speaking as 
developer/designer here.

On Tuesday, November 14, 2017 at 7:21:23 AM UTC+2, Ajit Soman wrote:
>
> Could you suggest any solution for this issue. I have also tried to save 
> wallet object in database using WalletProtoBuf but i was not able to 
> synchronize wallet and also faced issues like balance mismatch and dead 
> transaction , so i revert back to my previous approach (HashMap). 
>
> Based on your reply bitcoinj is not suitable for creating web application .
>
> It would be great, if you could able to suggest some solution to solve 
> this issue because we are using bitcoinj in 4 project . 1 project is in 
> production with around 700 users.
>
>  
> On Tuesday, November 14, 2017 at 1:00:18 AM UTC+5:30, Andreas Schildbach 
> wrote:
>>
>> It's known issue. Bitcoinj is designed around the assumption of approx. 
>> one wallet per device (or at least only a low number). The "webwallet" 
>> usecase has always been excluded. 
>>
>>
>> On 11/13/2017 06:32 PM, Ajit Soman wrote: 
>> > I have a java web application. When ever a user signup i create a 
>> wallet 
>> > for them. I use the below code to create wallet for user and put that 
>> > wallet object in Map<String,Wallet>. 
>> > 
>> > | 
>> > /** 
>> >  * This is the global map that maintain wallet across application. When 
>> ever 
>> >  * i have to get balance or make transaction i use wallet object in the 
>> map. 
>> >  * 
>> >  * The main reason for doing this is that Wallet object in map will 
>> always 
>> >  * be in synchronization with the blockchain 
>> >  */ 
>> > Map<String,Wallet>applicationWalletMap =newHashMap<String,Wallet>(); 
>> > 
>> > 
>> >  publicvoidcreateWalletForUser()throwsIOException{ 
>> >  intbits =128; 
>> >  SecureRandomrandom =newSecureRandom(); 
>> >  DeterministicKeyChaindeterminstickeychain 
>> > =newDeterministicKeyChain(random,bits); 
>> >  DeterministicSeedseed =determinstickeychain.getSeed(); 
>> >  System.out.println("seed "+seed.getSeedBytes()); 
>> >  Walletwallet =Wallet.fromSeed(TestNet3Params.get(),seed); 
>> >  ECKeyeckey =newECKey(); 
>> >  wallet.importKey(eckey); 
>> >  StringfileName =UUID.randomUUID().toString(); 
>> >  wallet.saveToFile(newFile("/opt/"+fileName+".dat")); 
>> >  System.out.println("Wallet has been created"); 
>> >  applicationWalletMap.put(fileName,wallet); 
>> >  } 
>> > | 
>> > 
>> > 
>> > 
>> > Also I put all user's synchronized wallet object in 
>> > *applicationWalletMap *when i start web application.  
>> > 
>> > The issue is that when user keep on increasing the size 
>> > of *applicationWalletMap *increases. *This consumes a lot of RAM*. So 
>> is 
>> > there is any efficient way to handle this problem. 
>> > 
>> > Thanks in advance 
>> > 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> > Groups "bitcoinj" group. 
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> > an email to bitcoinj+u...@googlegroups.com 
>> > <mailto:bitcoinj+u...@googlegroups.com>. 
>> > For more options, visit https://groups.google.com/d/optout. 
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to bitcoinj+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to