BUIP133: Electron Cash Ecosystem Improvements
Proposer: Jonald Fyookball (Sponsored by: imaginary_username and Andrew Clifford 3 Oct 2019)
Submitted on: 2019-11-09
Status: draft
The Electron Cash wallet is a focal point for the Bitcoin Cash application layer. There are a number of projects that can add value and strengthen the software and ecosystem, but currently most efforts are on a volunteer basis. The Electron Cash group seeks $51,200 in order to accomplish the following projects:
Get Electron Cash “talking” to electrs and/or bchd rather than just ElectrumX
Synopsis: ElectrumX is the server software that Electron Cash uses in order to interact with the blockchain. It suffers from performance and feature limitations, which either need to be fixed, or Electron Cash should use other server software. It would be a good time investment to get Electron Cash “talking” to other SPV services such as bchd or BU’s electrs.
Obstacles / Challenges / Goals: There is a very fast SPV server implementation from BU called electrs but it still needs some feature additions. Calin Culianu has offered to work with the BU team in ironing out any final touches to get electrs to be at least as good or better than ElectrumX in terms of featureset. Electrs, being entirely native code, runs much faster than ElectrumX and is multi-core. It needs a few niceties such as SSL support and “Server Federation” (creating a mini p2p network of servers). This software is built-in to BU optionally and thus has the potential to be installed on many full nodes on the network. Additionally, bchd gRPC shows promise (is native, is fast, is deployed in many places) but needs a few minor feature additions as well. Working with these teams, Electron Cash could get them to the 100% feature level needed -- development and coordination time is needed.
Resources Needed: Development time from one or more of the Electron Cash and/or collaboration with Dagurval or another BU developer and/or bchd developers such as Chris Pacia.
Estimated Cost: 200+ hours developer time.
CashShuffle is loved by all. It needs to come to Electron Cash’s iOS implementation. Synopsis: The Bitcoin Cash ecosystem has by and large had a positive reaction to Electron Cash’s CashShuffle. Many users are asking for an iOS port of the subsystem to work in the existing Electron Cash for iOS wallet app.
Resources Needed: Development time from Calin Culianu. Estimated Cost: 100 hours development time
The Android version of Electron Cash has one more phase to complete its core feature set. Finishing this brings the basic wallet to completion and makes it ready for enhancements like SLP and CashShuffle/Fusion.
Synopsis: Here are the specific features being added:
- Wallets:
- Rename (including closed wallets)
- Export (including closed wallets)
- Delete (add ability to delete closed wallets)
- Send:
- Export and import unbroadcast transactions
- Addresses
- Freeze
- Sign / verify
- Private key
- Encrypt / decrypt
- Coins screen
- Settings:
- Transactions:
- Use multiple change addresses
- Show notification if payment received when app in background
Resources Needed: Development time from Malcolm Smith or other android developer Estimated Cost: 100 hours development time
SLP (Token) Integration into the Electron Cash main codebase and discontinuing development on the EC-SLP Branch
Synopsis: The Electron Cash main codebase does not support spending/creating SLP tokens. It needs this functionality, and the Electron Cash SLP codebase needs to be discontinued, in the interests of efficiency and simplicity for both users and developers.
Obstacles / Challenges: Careful review of the Electron Cash SLP pieces that will be brought into Electron Cash must be done. Electron Cash regular is a somewhat more complex wallet than EC-SLP, because of CashShuffle, and care must be taken to not impact its performance needs. Code review and rewriting of existing pieces from EC-SLP is anticipated, as well as some reworking of the UI.
Resources Needed: Development time from one or more of the Electron Cash and/or SLP developers such as Calin Culianu, James Cramer, Axel Gembe, Mark Lundeberg or others.
Estimated Cost: 250-350 hours developer time.
A skinning system based on the existing ui’s QT framework. This allows the wallet to have various designs and color themes. Synopsis: The idea to create a skin system is not for novelty purposes. This actually is our most viable idea for the Electron Cash developers create a business model that will sustain development in the future. Everybody loves skins and we will monetize it.
Resources Needed: Development time from Axel Gembe, Calin Culianu or other QT specialist python developers.
Estimated Cost: 400 hours development time
Simple Ledger Protocol has taken the BCH world by storm. It needs to come to Electron Cash’s iOS implementation.
Synopsis: Many users are asking for an iOS port of the subsystem to work in the existing Electron Cash for iOS wallet app.
Resources Needed: Development time from Calin Culianu.
Estimated Cost: 200 hours development time
Make Electron Cash implement imaginary_username’s “reusable address” specification.
Synopsis: Reusable addresses allow for an identifier such as a CashAccount to be used to derive non-repeating addresses for discrete repeated payments to the same person, using a new address each time, so that one does not have to choose between privacy and usability - one can have good privacy while only giving out an address just once. Enables convenient, no-compromise handles for mass adoption.
Resources Needed: Development time from one or more of the Electron Cash developers such as Calin Culianu, in conjunction with server-side work such as bchd modifications from Josh Ellithorpe, as well as specification/protocol work from imaginary_username.
Estimated Cost: 100-300 hours development time across multiple developers..
Allow Electron Cash to integrate with Cashweb’s Keyserver software.
Synopsis: Harry Barber and Shammah Chancellor have written “keyserver” software for storing blockchain-related data in a separate peer-to-peer network that is tightly integrated with the BCH blockchain.
Goals / Outcomes: This key piece of infrastructure allows wallets to come alive. You can register data or share data with your friends all from within your wallet. Send contact vCards or lookup your friend’s aliases or addresses, send them instant messages, or store authenticated data for sharing with others -- all signed and associated with your bitcoin address.
Resources Needed: Harry and Shammah are already developing the GUI pieces needed for Electron Cash to integrate with this service, but more development time from one or more of the Electron Cash developers such as Calin Culianu would be helpful.
Estimated Cost: 50 hours development time.
Make Electron Cash more robust against server withholding, leak less privacy to its SPV servers.
Synopsis
A longstanding drawback of Electron Cash’s model of fetching all transactions from a single server is that the server can withhold transactions from the client, resulting in complications for receiving payment.
On top of that, Electron Cash publishes its entire list of addresses to a single server to which it connects, potentially leaking privacy to the server which can trivially find address/spending linkages. Right now the only real mitigation is via running your own server, Tor is a slight improvement.
Both of these can be fixed with a more intelligent strategy which it can distribute load to add redundancy across servers, while not revealing “too much” to any one server. Electron-cash then becomes more reliable and robust for receiving payments.
Resources Needed: Development time from one or more of the Electron Cash developers such as Calin Culianu.
Estimated Cost: 100-200 hours developer time.
Electron Cash needs constant upkeep and bug fixing. New libraries and hardware wallets appear periodically and the code needs maintenance frequently. It is a mostly volunteer effort but some funding would make things much better. Apply unfinished protocol tweaks to enable massive scale.
Synopsis:
The Electron-Cash/Electrumx protocol contains a few weak points that hinders its scalability, particularly when it comes to massive wallets made more common by Cashshuffle, as well as big single-address wallets common for commercial and donation uses. We have identified a few protocol weak points such as transmission pagination and status update algorithm that could use tweaking to prepare for better scaling, which is in line with the BCH roadmap.
Resources Needed: Protocol discussion from Electron-cash developers, as well as review from wider BCH development community
Estimated Cost: 100 hours of developer time
Cost Summary for all Projects:
Total cost: 1600-2000 hours of developer time. Discount rate: $32/hr @ 1600 hours = $51,200
Jonald_fyookball and imaginary_username can report back on progress as the goals are being fulfilled, members can also track them at https://github.com/Electron-Cash/Electron-Cash. Even a part of the goals should bring tremendous value to the BCH ecosystem, while the funding brings stability and predictability to Electron-cash development, which is currently largely staffed by volunteers.