[bisq-network/projects] Specify interface and architecture for wallet and blockchain data modules (#52)

chimp1984 notifications at github.com
Thu Apr 29 16:48:11 CEST 2021


> _This is a Bisq Network project. Please familiarize yourself with the [project management process](https://bisq.wiki/Project_management)._

## Description
Research solutions for the wallet and blockchain data modules, provide a proposed solution and specify interface and architecture based on the targeted protocols and blockchains.

## Rationale
For the multi-protocol / multi-blockchain project we need to support different blockchains and wallets. Beside that there should be also flexibility for users to make a trade off between best secruity/privacy by using a full node or low resource requirements by using a light node (e.g. Bitcoin core vs. Electrum).
We cannot ship all those different modules in the app, so we need a dynamic on-demand loading concept (this will be an independent project but will be a requirement for that one).
We do not want to take liability for the wallets, so goal is to have only the wallet features required for Bisq trades and keep everything else outside. The wallet binaries will not be part of the Bisq installation but the user has to install them (or point to already installed ones).
Security is very important and there should be some option that the user can limit risks (e.g. max. allowed transfers per time period). An isolated wallet is preferred over the model that the user connects to their standard wallet which might contain large funds and carries higher risk.
Hardware wallet integration should be considered, thought details about integration would be out of scope of that project.

## Criteria for delivery
- A document summarizing the research (e.g. which options have been investigated/are available) is provided 
- If there is a prototype, the link to the repo (no need to have that inside Bisq, no code quality constrainsts as it is only for prototyping).
- The proposed solution
- Basic RFCs for specification (not needed to be final but to have a level which covers the core aspects sufficinetly). 
- The scope of different solutions should include:
	- BTC full node (e.g. bitcoind) for current Bisq trade protocol use case
	- BTC light node (e.g. Electrum) for current Bisq trade protocol use case
	- BTC on Lightning network for an off-chain security model (e.g. reputation based). LN-BTC only used for transfer.
	- Liquid, LTC, ZCash will likely work similar like the BTC version
	- Monero java RPC lib can be considered for an off-chain security model (e.g. reputation based). XMR only used for transfer.
	- Monero should be considered in the context of re-using the Farcaster or Comit code base (in Rust) for atomic swaps
	- Ethereum should be considered in the concept as potential candidate
	- RSK should be considered in the concept as potential candidate
	 

## Measures of success
The provided results are considered sufficient to be used as base for refining the specification.

## Risks
- No solution found
- No sufficient progress
- Quality of investigation insufficient
- Quality level of RFCs insufficient
- Solution does not fit goals or constraints of overall project

## Tasks
-[ ] Investigate and research options
-[ ] Design architecture 
-[ ] Verify with a prototype the ideas if helpful 
-[ ] Write up proposed solution 
-[ ] Write RFCs

## Estimates
This investigation should be scoped from effort and time. I think 1 month for 1 contributor is a realistic scope. According to that the contributor should post their expected compensation.

## Notes
@oscarguindzberg did an investigation about alternatives to BitcoinJ 2 years ago. The scope of the summary matches the expectation of that project. It also can be used as base for checking for light wallet alternatives for Bitcoin. Back then Neutrino was not considered production ready and Electrum was the best choice.
https://github.com/bisq-network/bisq/issues/1062#issuecomment-446755367

The Farcaster project RFCs: https://github.com/farcaster-project/RFCs
This project does not require that level of detail and qualtiy at that stage, but they can be takes as inspiration and template. 

This high level architecture can serve as inspiration as well:
https://github.com/farcaster-project/RFCs/blob/master/03-farcaster-architecture.md

There will be some overlap with other projects like the one for investigating how we dynamically load libraries and about specifying the protocol architecture. Those 3 interconnected projects should interact so share findings and report on preliminary results.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/projects/issues/52
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20210429/36669d61/attachment-0001.htm>


More information about the bisq-github mailing list