BUIP182: Fund Rostrum Electrum server development

BUIP182: Fund Rostrum Electrum server development

Submitted By: dagurval
Date: 2022/04/27

Summary

Rostrum (previously ElectrsCash) is an efficient electrum server written in Rust. Electrum servers are the backbone of many SPV wallets and other blockchain applications, such as VotePeer. Rostrum also supports WebSocket, allowing in-browser app such as BCH receipt generator to directly query the blockchain.

This BUIP requests funds for continued maintenance, improving user experience and new features.

Background

Previously named ElectrsCash and forked from electrs by Bitcoin Unlimited. The parent project electrs is for running a private electrum server on your Raspberry PI. With Rostrum we improved performance and added features needed to make it a public accessible server, making Rostrum the first Bitcoin Cash electrum server to replace Electrum X.

Rostrum is well integrated with Bitcoin Unlimited node software and part its software release. It’s easy to get started, only requiring the node operator to add the parameter --electrum=1 when starting BU. Rostrum will automatically be configured to work with the node, regardless of the node running in mainnet, testnet or other test networks.

Rostrum is written in Rust, a modern, efficient and popular language to use for blockchain applications.

What needs to be done?

The project needs to move GitHub to Gitlab (voted on in BUIP091).

When moving to GitLab, I’d like the following improvements to automation (CI/CD).

  • [For users] Provide binaries for all supported platforms (Linux / OS X / Win64 / ARM64) and possibly unsupported ones to ensure portability.

  • [For users] Automatically deploy documentation & keep it up to date.

  • [For users] Automatically deploy software updates on creates.io.

  • [For users] Automatically publish up-to-date Docker images.

  • [Tests] Rostrum has a large Electrum feature integration test set. These tests are to ensure changes made in BU node software don’t cause breakage. They run every time a change is committed to Bitcoin Unlimited. These tests should also run when changes are committed to Rostrum.

  • [Tests] Run unit tests in emulators for other supported platforms.

  • [Tests] Run tests on build properties (are builds deterministic? are depdenencies bloating the build?).

  • [Tests] Run benchmarking tests.

In order to not let the project stagnant, it needs general maintenance.

  • Investigate and reply to user submitted issues and support requests.

  • Improve documentation on common user issues.

  • Electrum is a protocol implemented by multiple implementations. It is a protocol under development and to stay up-to-date Rostrum needs to implement emergent protocol changes.

  • Rostrum can benefit from changes made to its parent project, electrs, if the code bases do not go completely out of sync. The electrs project recently pushed a a ~8500 line refactor commit. To keep pulling beneficial changes this commit needs to be investigated for pro/cons and projects potentially synced again.

  • Bugs need to be squashed, dependencies need to be updated, code needs to be improved with new improvements available in the Rust language itself etc.

New desired features:

  • Add OS X and Windows builds to Bitcoin Unlimited node releases. Currently the Rostrum integration only supports Linux. This requires work to the BU deterministic build process as well as the process integration itself.

  • Add full server federate support. This allows SPV wallets to find our servers without use of static server lists.

  • Iterate on our CashAccount RPC. Rostrum supports cashaccount queries, but the current implementation is the prototype and needs an update.

  • Implement user proposed RPC calls 1, 2, 3, 4 and explore other RPC calls that is helpful for BU research & development.

  • Support NEXA chain (BUIP166)

Budget

I propose budgeting $100.000 for Rostrum development. Expenses are expected to be $125 / hour for development time.

1 Like

Congrats @dagurval on your first BUIP
Added to BUIP Index

2 Likes