Pushpoold Vs PoolServerJ performance test results now publishedAs a necessary component to a larger project I've had to write a complete pool server in java. The rest of the project is still in progress but the pool server is ready to release into beta. The key problem I needed to solve and part of the reason I rolled my own rather than just using pushpoold is scalability. Pushpoold is great at what it does but the difference I needed was to get around the bitcoind bottleneck. PoolServerJ solves that problem rather neatly by caching work and also allowing the pool operator to run as many bitcoin daemons as they want to and feed them all into the poolserver.
A few of the features of PoolServerJ: * Native merged mining support. Will work with standard bitcoind 0.5
* SCrypt blockchain support (e.g litecoin)
* Customisable coinbase transaction (pay block rewards to any wallet perhaps an offline secure wallet)
* Internal work generation (more than 10x faster than rpc getwork)
* Work caching - caches work from bitcoind or internal WorkMaker to handle short term spikes in requests
* Database resilience. Server can keep running if database goes down and shares will be sent to database when connection is reestablished
* DoS resilience with QoS support to ensure workers who've submitted valid work are serviced with priority
* Capable of pulling work from multiple bitcoin daemons to get around the getwork bottleneck and also to provide some redundancy
* Notify of block change via HTTP to a user configurable URL to support event triggered share processing
* Cached database handling (optional) to reduce round trips.
* Supports Mysql, Postgresql, sqlite3 (JDBC based so others can be added easily - currently only tested on mysql)
* Runs as a Windows service
* Longpolling support
* Integrated block monitoring using all available bitcoin daemon work sources
* Dump shares to Database, log file or stdout
* Safe restart - shares issued to client are dumped to file on shutdown and reloaded on startup so your miners won't get stale shares if you restart a live server
* Only dependency is a Java 6+ JDK.
PerformanceExtensive performance testing against pushpoold has shown PoolServerJ capable of more than 4 times the capacity for share submits and 3 times the capacity for getwork requests. This is the limit of what could tested on limited available hardware however it's architecture allows for significant scaling and theoretically these limits could be significantly exceeded.
update: Since the release of 0.4.0 WorkMaker Edition getwork capacity has improved by 4 times and share submit capacity by 2 times over the original performance test results.
Please give it a go, feel free to send me any feedback, rip into it if you like.
You can find it
hereThe webserver may be a bit slow, I'm testing out EC2 micros to see how they handle basic web server duties so sorry about that. Will have a test pool up and running soon (as soon as I finish the front end). <-- update: this never happened and probably won't... I'm too busy working on the software and there's plenty of pools using it now so I've got enough guinea pigs