Bitcoin Forum
June 21, 2024, 04:00:46 AM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Help me test new electrum server implementation  (Read 1490 times)
fireduck (OP)
Sr. Member
****
Offline Offline

Activity: 392
Merit: 251



View Profile
May 27, 2014, 03:44:05 PM
Last edit: May 31, 2014, 05:55:32 AM by fireduck
 #1

I think I have my electrum server implementation feature complete.  More testing is needed.

You can help me by trying it out:

h.1209k.com:50001:t
h.1209k.com:50002:s

It is about 4k lines of java.  It syncs faster than the python reference server using multiple threads to import the transactions for a block.  It also works on the transactions for multiple blocks at once.  It uses a local mongodb instance for data storage, but it could use pretty much any fast key-value store.  It syncs the entire blockchain from scratch in about 3 days (faster on fast hardware+ssd).

In my testing, it seems to be faster to sync a large wallet (300+ addresses) about twice as fast but I haven't done rigorous testing there yet.

I hope to release the code later this week.

If you encounter problems and want to help track them down please reproduce them on:
h.1209k.com:50015:t

This port records all TCP traffic in and out for debugging purposes.  Then let me know the time you did it as exactly as you can and I'll be able to pull the logs.

FYI, if you want to connect to a single server and no other the command line looks like this:
electrum -1 -s h.1209k.com:50006:s

Bitrated user: fireduck.
fireduck (OP)
Sr. Member
****
Offline Offline

Activity: 392
Merit: 251



View Profile
May 27, 2014, 03:47:08 PM
 #2

Oh yeah, things that don't work:

- IRC server announcement
- Most input checking on requests, requests that are wrong will most likely cause the server to break the connection with no error message to the client.
- Transactions to broadcast are handed directly to a bitcoind for validation and the response from bitcoind isn't checked so errors are not relayed back as they should be.

Bitrated user: fireduck.
fireduck (OP)
Sr. Member
****
Offline Offline

Activity: 392
Merit: 251



View Profile
May 27, 2014, 05:01:14 PM
 #3

In case anyone had tried, I had a firewall rule issue so no one could connect from outside.  That is corrected now.

Bitrated user: fireduck.
ThomasV
Moderator
Legendary
*
Offline Offline

Activity: 1896
Merit: 1353



View Profile WWW
May 30, 2014, 08:22:02 AM
 #4

congratulations! looking forward to see it live

Electrum: the convenience of a web wallet, without the risks
fireduck (OP)
Sr. Member
****
Offline Offline

Activity: 392
Merit: 251



View Profile
May 31, 2014, 05:49:51 AM
 #5

congratulations! looking forward to see it live

Thanks.  I've moved it to my main port so it is at h.1209k.com:50002:s

I am loading the database on GCE instance but the load isn't as fast as I would like on non-SSD.

I am also working with some people on building business solutions around the electrum protocol.  I think it is at the right level of abstraction for people to build business transaction processing units that don't worry about the blockchain, they just talk to an electrum server just like other electrum clients.

In that environment, business will likely want to run their own servers (maybe making them public as well)

Bitrated user: fireduck.
Pontius
Full Member
***
Offline Offline

Activity: 225
Merit: 100


View Profile
July 07, 2014, 01:23:26 PM
 #6

Code:
./electrum -1 -s h.1209k.com:50002:s
wrong certificate h.1209k.com
(using plain TCP works though)

[...] I hope to release the code later this week. [...]
Oh yeah, things that don't work:
- IRC server announcement
- Most input checking on requests, requests that are wrong will most likely cause the server to break the connection with no error message to the client.
- Transactions to broadcast are handed directly to a bitcoind for validation and the response from bitcoind isn't checked so errors are not relayed back as they should be.
So, any news on this?
EagleTM
Newbie
*
Offline Offline

Activity: 46
Merit: 0


View Profile
July 07, 2014, 02:24:25 PM
 #7

Nice work!

Regarding sync speed: Bear in mind the python server implementation has a per address throtteling in place to avoid DoS. One of the shortcomings of the current python implementation is that one client with lots of addresses can hog server ressources to a point where all other clients are hanging in "sync" until the large request with lots of addresses is served. To avoid ressource hogging by one client throtteling per address was implemented and works rather well as a workaround.

[Edit: spelling]
fireduck (OP)
Sr. Member
****
Offline Offline

Activity: 392
Merit: 251



View Profile
July 27, 2014, 10:19:41 PM
 #8

Code:
./electrum -1 -s h.1209k.com:50002:s
wrong certificate h.1209k.com
(using plain TCP works though)

[...] I hope to release the code later this week. [...]
Oh yeah, things that don't work:
- IRC server announcement
- Most input checking on requests, requests that are wrong will most likely cause the server to break the connection with no error message to the client.
- Transactions to broadcast are handed directly to a bitcoind for validation and the response from bitcoind isn't checked so errors are not relayed back as they should be.
So, any news on this?

Just released today:
https://github.com/fireduck64/jelectrum

Bitrated user: fireduck.
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!