bisq-network / projects

@bisq-network project management
https://bisq.wiki/Project_management
9 stars 2 forks source link

Message board for multi-protocol project (working title Misq) #51

Open chimp1984 opened 3 years ago

chimp1984 commented 3 years ago

_This is a Bisq Network project. Please familiarize yourself with the project management process._

Description

Based on the idea proposed at https://github.com/bisq-network/proposals/issues/330 and https://github.com/bisq-network/proposals/issues/331 I would like to start with a minimal viable product for a shared messageboard for any type of offers which can be executed out of band and do not provide a standard security model but leave it to the traders to propose and negotiate that aspect.

To test the basic idea we can start with a super simple model in form of a shared spreadsheet. This helps us to learn from early feedback as well it extends the user base for Bisq and enables trade opportunities for small trades with lower or no security requirements, trade without having Bitcoin, instant trade,... The used model has to work without requireing users to register (e.g. not Google account required).

In parallel we can start to build a new improved P2P network and a message board. Once a MVP is available we can add it to Bisq as add-on module. The user can decide to load that module and then have a button in the UI to open a new window which displays all those offers (or integrate more elegantly...).

To keep it separate from current p2p network comes with the benefit that it does not add risks to current network (spam) and its easier to integrate (does not require new message types in Bisq). And it allows to bootstrap the new network using the existing Bisq user base as well as test it in production with low risk (worst thing a message is not shown).

I have done some base prototyping already on that and I think I can get a basic MVP in about 1 month. After that the P2P module can be improved and again use that low-risk use case for testing it in production, which is a great benefit.

Another benefit of having an independent p2p network and message board stack is that other projects who need that functionality (e.g. Comit, Farcaster) might choose it as rather lightweight module for their needs.

We should provide also a version with a web frontend and anyone (e.g. via mobile) can browse those offers and get in touch with a potential trader. Once they want to trade with higher amounts and security they can use Bisq, so it helps to attract new users. There will be no fees for that so that will be attractice as well.

Rationale

We need to develop alternatives to the current Bisq trade protocol as it is challenged by high miner fees as well from new developments like atomic crosschain swaps and the current Bisq code base is not designed for a multi-protocol model, so adding new protocols or security models would require a lot of dev effort.

Why not use the current P2P network? There are a few problems which could be all solved also in the current network with some effort but as its a life system, backward compatibility is a major effort and risks are high in case of new bugs. Also the scope has been bloated over time and the network does too much and is too tighly coupled with the application (not code-wise but conceptually).

The main improvements of the new network would be:

Criteria for delivery

Milestone 1: Shared messageboard based on a spreadsheet model is accessible to users. It provides sufficient guidance for users to use it and understand the limitations, risks and that is not part of the official Bisq project but an out-of band project.

Milestone 2: A MVP of the new P2P network with a messageboard is integrated into Bisq as optional feature. The P2P network might not have all its features like I2P support, PoW dos protection,DHT,... but it serves the use case to add, remove and display messages (offers, but can be anything). It also requires a minimal UI for adding a new message which could be plain text or json initially, but to be able to compete at least with the spreadsheet version it should support some defined fields (asset, amounts, payment methods,...). Thought this will not be a fully fledged and well designed UI for creating offers. The UX for getting that done well is outside of the scope of that milestone. It will come with some basic dos protections so that attacks cannot cause CPU or memory overconsumption. A minimal web based solution should be included as well.

Measures of success

Milestone 1: Allows presentation, adding and removing of offers via a webpage.

Milestone 2: Allows presentation, adding and removing of offers inside Bisq as well via a webpage.

Risks

Milestone 1: As there is no protection against spam or other form of abuse it might need to be shut down anytime by the operator. In case illegal content is posted the operator need to remove it to not risk legal liability.

Milestone 2: In case of abuse the protection mechanisms like pow against spam and a decentralized moderation system need to be added before it can be offered again.
In case of severe bugs the new p2p network could cause CPU or memory spikes and could effect quality of service for the normal Bisq app. To run it as independent process might reduce that risk, but it will be decided later how to integrate it. For further rirsk reduction we can add a filter enty to deactive the module in case of severe problems.

Tasks

Milestone 1:

Milestone 2:

Estimates

Milestone 1: Once a contributor has committed to lead that project they should add their estimation.

Milestone 2: I would require a bit more time to define the scope and design of the P2P network but a rough estimation would be 10000-20000 USD. Once I have a more concrete concept I will add a definitive number. The scope of the milestone is not the fully-featured P2P network layer, but it will likely include more as needed to fulfill the use case.

Notes

Anyone who is interested to lead the milestone 1 project should leave a message. Any dev who is familiar with web development should get in touch with me.

ripcurlx commented 2 years ago

Looks promising! 👍

But I'm not so sure about the ask/bid usage. On trading platforms they have a somewhat a different meaning and we probably want to use them in the 'real' offer book like that.

Maybe use for the trade intents:

I want to exchange
EUR via SEPA at market rate
I want to receive
0.01 BTC

and in the postings table:

Date User name User wants to exchange User wants to receive
Jan 7, 2022 11:15:00 AM Maker@aa55abc... EUR via SEPA at market rate 0.01 BTC Contact

WDYT?

chimp1984 commented 2 years ago

Yes the user facing language is not decided yet. I tend to use ask/bid in the domain. There are cases where its not clear which one is the "main" currency and using the buy/sell or base and counter currency terminology will not work well. E.g. EUR - USD or BTC-RSK - BTC-LIQ or altcoin-altcoin. The user has a clear idea about what they want. And mostly also about what they have but even here there can be more flexibility. E.g. I want to get BTC but I can pay in USD or USDT... Ask reflects clearly what the user wants (ask for) and bid what they have (offer, what they can bid). Thats the reason why I tend to use those in the domain.

UX-P commented 2 years ago

This is a really good start in introducing a more social aspect to Bisq. It encourages the Bisq community to stay connected and engaged during the trading process and should be very useful for first time Bisq traders as well as reputable traders. Just a few design considerations for those focusing on UX:

In addition to the use cases @chimp1984 has listed, I can take a look into a few subject areas. Research will help in:

This ensures that the messaging service is customised/designed to the Bisq’s user needs and adds to the more ‘human’ experience of the chat feature.

Let me know if there’s anything else anyone would like me to look into regarding this.