Bitcoin Forum

Bitcoin => Project Development => Topic started by: mbourne on August 20, 2021, 09:43:28 PM



Title: Code for Scala version of Electrum Personal Server
Post by: mbourne on August 20, 2021, 09:43:28 PM
Hi,
I developed code for a Scala version of Chris Belcher's Electrum Personal Server (which is originally written in Python).

The project may be useful in the following ways:
- you are curious how Electrum Personal Server (EPS) works but it is easier for you to read Scala than Python
- you want to develop your own version of EPS but you prefer Scala

The project is mature enough so that I could run Electrum against it and perform transactions, yet it is not
hardened yet, and usability details are missing, so I treat it as advanced but still WIP.
It does not support TOR, and is based on (now) bit older EPS 0.2.1 (June 2020).

I won't work on it at the moment so I thought that if anyone is interested, she or he could take over and continue.

Project has a lot of tests, and there is some word documentation (WIP).

Having EPS which works and runs on top of your own node gives you privacy you can't get from public Electrum servers.

Repo address is: https://github.com/miloszm/epsmi
Repo of the original Chris Belcher's code is: https://github.com/chris-belcher/electrum-personal-server

Thank you
-- MM


Title: Re: Code for Scala version of Electrum Personal Server
Post by: mbourne on August 21, 2021, 10:44:15 AM
Thank you. With regards to version, I was definitely aiming at and implementing version 1.4 of the server API,
and that is what I give back to Electrum wallet when it asks for version.

Have a constant in code:
val SERVER_VERSION           = "1.4"

Some APIs from 1.4 specs may be missing as they are also missing in the original EPS implementation.
As for Wallet version which I used for testing, I used 3.3.8, I was planning to test with 4.x but didn't get around to do it.
Also, I used Bitcoin Core 0.20.0.