bisq-network / proposals

@bisq-network improvement proposals
https://bisq.wiki/Proposals
44 stars 16 forks source link

Bisq 2.0 - Social Trading Expansion Proposal #332

Closed Mentors4EDU closed 3 years ago

Mentors4EDU commented 3 years ago

This is a Bisq Network proposal. Please familiarize yourself with the submission and review process.

Background: In response to #330 having social trading, and me wanting to also do social trading for a while as well, I decided to work on this proposal. I think Bisq can utilize some variation of social trading and I have a general idea of features I would hope for.

Table of contents

  1. Overview
  2. Base Modules
  3. Roadmap
  4. Project Goals

Overview

Bisq as a decentralized exchange has the potential for many social aspects and technological implementations. One of those aspects could be an integration of some form or variation of social trading. Social trading as a concept is open and transparent given the utilization of actual statistics and insights based off of skills or trading abilities. This proposal is on an open-source implementation of social trading on Bisq's network.

Base Modules

There will need to be a series of modules and/or components integrated into this project. Having something modularly built will allow for easy upgrading, and I do take somewhat of an inspiration from the Bisq-2.0 proposals. If something isn't modularly built, not only is upgrading a hassle. For certain issues, debugging and maintaining over time can also be hectic.

Profile

The profile needs to have just the basics. Optionally, it doesn't really have to have a profile picture but can denote some sort of icon given that a profile picture is just meaningless data storage. (At least in this instance). It depends on the community's preference. What it will have will include a description, a link to website, and a button to view trade history. It will also include metrics in regards to percentages for YoY returns. There will be a follow trades button which the user can input a certain percentage such as the default commission being 5% or set a custom fee. The ability to chose between both fee and percentage can offer flexibility for many users.

Trade History

Users can have the option between trading in real time or with a test network. Obviously, you only earn for real trades. There will be a tab for real time trades and test network trades. The tabs for trade history will only show entry and exit prices and percentages, it will not show how much money was put in order to encourage fair markets and a layer of anonymity.

Simulation Modes

You will be able to see simulation charts for the different trading histories and have the option to follow user's trades. You can follow trades that users do with real money including test network strategies. You can also run simulation tests. When following test network strategies with real money, that means every time the user inputs a simulated trade, you are actually doing that trade with real money. This is similar to other social trading websites such as Collective2's TOS badge or eToro's hypothetical performance charts.

For charting and market data, we would use the default Bisq charts or build untop of them.

Support for Scripts

I recommend support for the Julia programming language, given it is suited for numerical analysis and perfect for quant traders. I think you can utilize some sort of embedded API for implementation. There are many things in regards to what support for Julia could do. People can not just make manually traded strategies, but also make trading strategies that are automated or custom indicators that people can trade with for a fee percentage or custom licensing fee. The support for both manual and robotraders is something many social trading networks have, and support for Julia can attract alot of quants and mathematicians. Optionally, we can add secondary support for Python as well, but the use of Python has already been overly utilized.

In regards to Julia, packages such as the decentralized-internet SDK, Gen, Quandl.jl, TradingLogic.jl, FinMarkets.jl, Ito.jl, and TradeModels.jl can come pre-installed to support custom developer environments.

Ranking Mechanism

In regards to the ranking mechanism, I believe the UML below best illustrates how that will play out: \ UML_SocialTrading \ The ranking mechanism should support fairness and decentralization. That is why profiles are going to be ranked on performance-based metrics rather than how many people are following their trades. The metrics are going to be: Categories for YoY estimated ROI %, ROI % per Trade, and a Risk Tolerance subcatagory. Risk tolerance in regards to uncertainty is measured by drawdown percentage in relation to returns. The better one performs, the higher they are ranked in a certain category. Performance-based is the best type of ranking mechanism in the world of trading.

Test and Realtime Support

As noted, both trades on a test network and realtime strategies can be followed. The same applies whether it is manual or automated. This is actually a good thing, because along with the ranking mechanism, traders can be rewarded on skills rather then them putting large amounts of money in their strategies upfront. Also, lower income traders might be higher skilled then some higher income traders. Leveling up the playing field is key.

Disclosures

Likely some sort of risk disclosure will need to be implemented that is site-wide and usage specific. This is due to the nature of exchanges and social trading in general, and the disclosure text can be open-sourced or within the public domain.

Regarding Privacy

I think users can have the option of being public to an extent (description and site profile fields), or having some level of anonymity or pseudonymity. There has been comments in the past regarding levels of pseudonymity, and I believe the network can still have privacy-centric aspects to it. This will be one of the key focuses or aspects to look at in regards to development.

Roadmap

There are lots of things to take into consideration in regards to building this platform. Most likely from acceptance and funding to MVP, the timeline is 4 to 5 month with around 4 to 7 part time and voluntary software developers. More details will be in the funding section. This is almost the equivalent of building a full scale exchange given the advancements needing to be in place, but it is a very ambitious and promising project.

Project Goals

In regards to project goals, besides a basic ACK, we are trying to get funding, design, build and market the platform. My goal is to eventually maintain this and personally work on marketing this platform and bringing more awareness towards Bisq. There are already lots of mediums I have to market this as a career-long startup advisor, and I have a general idea of how I will be managing the technological implementations of this project.

Basic Community Acceptance

We are hoping to receive an ACK for this proposal. Please keep in mind that proposals can be commented on, discussed and updated over time. Also, remember criticism is best handled with a degree of respect and politeness within the context of the idea being critiqued.

Get Funding

The funding I am looking for is around 35k Bisq done through the Bisq DAO. Although this is negotiable, I calculated how much it would cost for the potential hiring of engineers + my time allocation. The actual COCOMO model would suggest probably alot more. Also, I would want a 0.25% trading fee in regards to project maintenance over time (from the social trading only). Keep in mind this will still be open-source. Again, the funding will likely be crucial given lots of time will be voluntary and the low volume of Bisq as well

Design and Mockups

Part of this project will also include a design phase. We want to make sure that the design fits well with Bisq's current UI and UX. This includes everything from trade history and order books to its social aspects.

Hiring Team

The team will be paid from the Bisq funding pool. I will be taking the role of mostly a PM and CTO during the development process. I won't be taking from the funding pool, but rather instead be taking trading fees as a form of managing the platform over time and sort of being its chief technologist and marketing strategist. Many marketing costs that may occur afterwards will be mostly on my own dime. Henceforth, this is why the minor fee is helpful.

Marketing

I think marketing is a thing that Bisq lacks. You can still be decentralized and theoretically teamless while focusing on others to use your software. I believe that social trading provides the opportunity to tap into markets that Bisq has yet to enter. Also, with the rise of many DEX and supposed "DeFi" apps, I believe Bisq can offer a popular alternative to what is mainstream.

MVP Built

Once the MVP is built, we will start garnishing some community feedback and preparing for the launch.

Project Launch

Once all the milestones are met, the MVP has been built, and things are ready for full deployment, it will be officially launch time. My focus at that time will than be marketing, network growth and scalability.

For sake of transparency, in regards to issue edits based on consensus, you can see the draft history via the repo here. This is as of the writing of this proposal.

chimp1984 commented 3 years ago

Thanks for the detailed write up!

As you said as well privacy is the core aspect of Bisq and even if we are moving in the direction to provide more choice for users to make their trade-offs between privacy and cost/convenience in the context of new trade protocols based on reputation I am a bit skeptical if the suggested model would still fit into the core model of Bisq.

I am aware that it is opt-in and some users might choose to disclose their trade history and other aspects of their identity.

For reputation we will try to find solutions where privacy is still protected as far as possible. The account signing concept has achieved that to a good degree. This is for sure challenging and not all use cases will be possible. There will be decisions to be made to drop some options because it goes too far and would cause damage to the reputation of Bisq. All that area is still very fresh and not worked out yet, so my comments have to be seen in that context.

My rough idea with enhancing "social aspects" in Bisq was more in the direction of making the trade experience more an emotional and social experience. Similar like going to a market and have nice interaction with the shop owners, browse the colorful offers and enjoy the atmosphere compared to the cold and boring emotional experience to do online shopping at Amazon.

Beside my concerns regarding privacy stated above I think such an ambitious project would be too early at the current stage. We still do our first investigations and prototypes to see if the overall concept of multi-protocol exchange is feasible from UX complexity and engineering efforts point of view. Once we have a more clearly defined architecture we will see if a more generic plug-in model might make sense for 3rd parties to hook their applications into Bisq. But that is another challenge which would be too much atm to focus on, but if its feasible it would be certainly an interesting approach. Such a model would make it much more open and flexible for others to add their ideas also regarding revenue.

I will down-vote the proposal to signal that I am not in favor to fund that at the current stage, but I appreciate the quality of the proposal and the idea, though as stated have my concerns if it fits into Bisq.

Mentors4EDU commented 3 years ago

Hi @chimp1984 In regards to the ambition of this project, is it overly ambitious? Yes, but so was the Mona Lisa. In the age of "DeFi and Yielding applications that don't have much usecases", I feel like a proposal like this can be a starting point for meeting actual needs in regards to some missing aspects the core market is looking for.

In regards to privacy, a few things to focus on:

  1. Features in which users can opt-in/opt-out
  2. Even given trade history, all these transactions are already on a blockchain as well and the profile can be anonymized
  3. Layers of anonymity can still be built on top of lots of these core features

If the right engineers work with me on this, I don't think it will be built in a way where there are major trade-offs between privacy and convenience, as this doesn't have to be the case.

I do agree with lots of the insight however, and it will be interesting to take into consideration Bisq's protocol changes and how an upgrade may be feasible. I would love to hear the thoughts of others as well.

flix1 commented 3 years ago

I'm still not sure about the risks of using identity... even if it is voluntary and replaceable. Rather than having reputation tied to user identity I prefer tying it to "payment account" which has to be diclosed between parties anyway to make a transaction. We already use a type of this via payment account age and payment account signing. Why not build on top of that?

Personally the data point that I would value the most as reputation would be number of trades completed. A payment account that had completed 100+ trades is one that cares about return business.

To make this into a reputation system you could use the same mechanism currently used for account signing. The privacy risks can be mitigated by the fact that one user can have many accounts both for fiat and altcoins. But the traders that care about reputation are normally not the same ones that care about privacy...

What I see used in P2P markets like Paxful, Localbitcoins, etc... is pretty simple:

  1. Number of trades
  2. Positive/negative feedback from other traders (thumbs up/down)
  3. Report button for scammers

I don't see why Bisq could not do all 3, not for users or identity, but for payment accounts. See below Localbitcoins and Paxful reputations:

image

image

image

image

chimp1984 commented 3 years ago

This is not that easy in a decentralized and privacy protection way. It need to be verifyable by the peer and if so it will be verifyable be everyone thus revealing the whole trade history... There might be tricks to find ways to get some metrics which are similar to those at LBTC but so far they are not found.

Mentors4EDU commented 3 years ago

Hi, @flix1 the concept of reputation isn't just general to this Bisq proposal. That said, in regards to privacy-centered features or capabilities, there are many. Outside of opting out for profile sections if the users doesn't want to opt into them, the trades can show up as percentages rather than time intervals since they are being followed or copied anyways. et A good example could be something like what eToro is doing instead of trading history, but anonymous. If trading history is showed which I understand might raise privacy concerns, there are other layers of anonymity that can apply in regards to preserving privacy and identity.

chimp1984 commented 3 years ago

A key challenge is how to verify any reputational data in a decentralized and privacy protecting way. In Bisq the base model is that the peers are verifying each other. Centralized services have it much easier as they are the in posession of all the data.

Mentors4EDU commented 3 years ago

Hi, @chimp1984 For reputation, I am wondering if there is a way it can be either one of the following:

chimp1984 commented 3 years ago

I do not have any concrete idea. Decentralized reputation is a hard problem. OpenBazaar had a paid researcher working on it for years and I am not aware if they found a feasible solution.

flix1 commented 3 years ago

I've just thought of a really simple way to do reputation on Bisq, without having to change Bisq at all.

Since many traders have accounts on multiple platforms... just link to your profile on Paxful or Localbitcoins!

Obviously you sacrifice privacy, but since it is totally voluntary... it's up to users to link an offer to their identity and reputation elsewhere. The advantage for Bisq is that all the moderation and policing work is outsourced to those other platforms.

For example: https://localbitcoins.com/accounts/profile/flix/

We can even play around with this mechanism right away on the test spreadsheet.

The one risk I see is the possibility of identity theft... but that is easily solved via cryptography: share a bitcoin address on the public bio in the other platform, then you can sign a message to your counterparty with that pk to prove that you are the same person on bisq as on LBC.

pazza83 commented 3 years ago

Hi @Mentors4EDU

Thanks for posting this.

I think improving the social experience of using Bisq would be great, if it does not sacrifice any privacy.

Regarding Privacy I think users can have the option of being public to an extent (description and site profile fields), or having some level of anonymity or pseudonymity.

I think Bisq should encourage the privacy of all users. Many users choosing not to be private makes the network more prone to attack from regulators etc.

Having read your proposal here is my feedback. I have tried to provide feeback from the perspective of someone that is an active trader:

Positives:

Negatives:

Questions:

Giving the proposal a thumbs down but would be interested in other ideas that improve social and experience whilst not reducing privacy.

pazza83 commented 3 years ago

@flix1

I am not a fan of the reputation models on Local Bitcoins / Plaxful.

Showing number of trades and positive/negative feedback from other traders leaks privacy.

I get the impression the reason why the traders there are happy with this is because they are all registered as crypto traders in their countries, the banks and the tax authorities know they are trading crypto. They are, therefore being, compliant by collecting KYC info from traders and doing any other regulatory reporting that is required.

With regards your idea of traders including other profiles in Bisq I would be in favor of the opposite. Traders Including their Bisq onion address in any platform they want to advertise their Bisq offers.

Mentors4EDU commented 3 years ago

Hi, @pazza83 This will be privacy-preserving. I will be replying soon with further details on how it is privacy preserving and will answer some of your questions.

flix1 commented 3 years ago

@pazza83 Let me be clear about this: The Bisq default should be privacy. User control of funds, user control of data. No KYC, no identity.

That is the only way to preserve censorship resistance.

However there are some power traders, market makers, etc... who prefer to be known, have a reputation and encourage return business. As long as it is voluntary I would be OK with giving them the option to use identity and reputation... as long as it is not much work for Bisq or implies that Bisq has to moderate and police these users. How can this be done? By outsourcing reputation to other platforms and allowing these traders (small in number but relevant in volume) to link to those other platforms.

I guess your idea is good... they can link from their other platforms to Bisq rather than the reverse... but it does prevent them from signalling within Bisq that they are reputable traders, which is what they want.

I suppose if we end up with an open P2P messaging board we can leave an open plaintext field where they can write any comment or link to any url they want... that would solve the problem with minimal effort and maximum flexibility.

pazza83 commented 3 years ago

However there are some power traders, market makers, etc... who prefer to be known, have a reputation and encourage return business. As long as it is voluntary I would be OK with giving them the option to use identity and reputation... as long as it is not much work for Bisq or implies that Bisq has to moderate and police these users. How can this be done? By outsourcing reputation to other platforms and allowing these traders (small in number but relevant in volume) to link to those other platforms.

I am in two minds about this.

On one hand I think it is fine to let users mention other profiles they have sales on. It is their choice.

One the other hand, I think it exposes other users to risk from regulators etc. Linking multiple account eg Bisq, Plaxful, Local Bitcoins and Hodl Holdl account together would makes any investigations easier.

Mentors4EDU commented 3 years ago

Hi @pazza83 I want to emphasize a few things:

  1. Features such as adding a description and website to your profiles aren't mandatory for the user to fill and the core of the application is still privacy focused. If people don't want others to not know their site, they simply don't fill their site URL, as simple as that.
  2. Also somebody who has an anonymous profile may want to add a description such as saying they use bollinger bands or mention their trading methodology. This is why a feature like that and an optional site field exists.
  3. The social trading application doesn't collect banking information. All trades are done through wallets and direct nodes, not through third party services or banking. Trades are filled the same way they are done now on the Bisq network.
  4. Trade history or percentages showing up doesn't matter as much given that accounts are hashed and anonymized.
  5. Following a trader means copying a trader's strategy or trades
  6. A high ranking means that people have better ROIs or performance. It is simply a way to rank users anonymously in regards to how they show up on the feed.
  7. Social trading as an expansion to Bisq can be a really promising application. It mixes Bisq's technology and privacy while giving people many of the features they want that are on centralized networks.

None of the data collected for social trading or utilized for social trading would be any more then the data being collected by Bisq needed to show market history or fulfill orders.

The aim is for this to be very privacy-centric.

Mentors4EDU commented 3 years ago

Hi, @chimp1984 @flix1 @pazza83 Please see my above comment and do let me know if there is anything else you would like to expand upon?

chimp1984 commented 3 years ago

I would need to see concrete concepts how to implement privacy protecting and verifiable reputation in a decentralized network. A trade is a private interaction between 2 traders. They can verify each other for that single trade but all beyond is problematic. As mentioned verious times to have number of trades or durations of trades, or even more difficult performance of trades. How should that be verifyable to others without revealing the trade data?

Mentors4EDU commented 3 years ago

Hi, @chimp1984 I already have the privacy-preserving protocol in mind but it is a few pages. Is it fine if I do a proposal as a follow up to this one and if the privacy-preserving protocol is acceptable, this can be approved at the same time as well?

Please note, I wouldn't expect to need extra funding for the development of the privacy protocol given it is part of the development of the social trading integration.

Best regards, Andrew

pazza83 commented 3 years ago

Hi @Mentors4EDU

Thanks for the comments

Features such as adding a description and website to your profiles aren't mandatory for the user to fill and the core of the application is still privacy focused. If people don't want others to not know their site, they simply don't fill their site URL, as simple as that.

Understood. I would still have concerns about trading privately on a platform where there multiple users that chose to make their information public. Maybe it is just me but I feel like it has to do with a network only being as strong as it's weakest link. I would be concerned the more people with connected real life identities the less private the network is.

Following a trader means copying a trader's strategy or trades

This might be good in situations where there is maximal liquidity but not sure how it would work on a P2P network with lower volumes, unique payment methods, and variable miner fees.

A high ranking means that people have better ROIs or performance. It is simply a way to rank users anonymously in regards to how they show up on the feed.

Not sure how this is beneficial? For instance if I was a buyer of BTC would I want to trade with a trader with a high ROI or a low ROI, or am I not bothered and just want to trade with someone selling BTC using a payment method I have, for the amount I want, for the lowest price?

Social trading as an expansion to Bisq can be a really promising application. It mixes Bisq's technology and privacy while giving people many of the features they want that are on centralized networks.

I agree, I think it would be good to expand on some of the following whilst maintaining privacy:

Mentors4EDU commented 3 years ago

Hi @pazza83 Actually what you said about profile description and link makes sense. I am gonna edit the proposal and comment back here soon to reflect that. In regards to issues in liquidity, I will respond more to that, but now I am gonna focus on that edit and the privacy layer. Thanks for the helpful feedback!

Mentors4EDU commented 3 years ago

Hi @pazza83 As you can see here, comments regarding profile description and site field have been crossed out. Now I will expand more on the privacy section and update back soon.

Mentors4EDU commented 3 years ago

Sorry for the late update, about to finish the privacy implementation sections quite soon. Gonna comment back here w/ that new information :+1:

This Bisq 2.0 thing can really become the future of crypto trading

Mentors4EDU commented 3 years ago

Hi, @pazza83 @chimp1984 I have done some edits, please look over them: https://github.com/Mentors4EDU/Bisq-Proposal#readme

Particularly:

Addressing Liquidity

In regards to liquidity, it is of my opinion that liquidity wouldn't be too much of an issue in the long run. Also, it may not be the best reason as to why something should or should not be developed. While Bisq still isn't in its infancy and alot of its users tend to be Bitcoin maximalist and non-sellers, this has more or less to do with Bisq's technological premise. Yes, liquidity is quite small, but the technology in regards to supporting high liquidity is within reach. It is of my opinion that with integrations such as social trading and the features discussed in proposals such as these, liquidity will no longer be an issue.

New Privacy Integrations

Integrations for privacy and privacy preservation are of the outmost importance. That is why instead of just focusing on reputation, one must also focus on numerous privacy layers in regards to reputation. Currently, even given the P2P compatibilities and the difficulty to store data without sacrificing privacy, comes new ideas centered around tackling these issues. These issues can not be tackled in a way that isn't decentralized or doesn't make sense through the lens of technological compatibility.

Preserving Privacy

As mentioned, privacy preservation is of the outmost importance. While, transactions are still hashed on Bitcoin's blockchain, there are still other layers of privacy that can be integrated beyond this. This is especially true in relation to preservation of trade history or other related data.

Layers of Anonymity

An example integration can be an anonymity layer or custom sidechain, that focuses on preserving and hashing data or being like a secondary shield. This can be custom coded and built as a P2P decentralized feature with no central authority or database.

Validation Mechanisms

Numerous data and validation mechanisms can be put into place. This includes how Bisq already completes market orders, as well as variations of privacy-preserving transnational escrows for different forms of trades. Instead of over-complicating the solution, the focus should be on technological protocols that don't integrate a form of data collection, but do integrate a form of data shielding and encryption without actually storing the data.

Regarding Reputation

The same formalities can apply to reputation. There could be voting mechanisms given profiles are anonymous. However, taking this a step further, if one properly integrates various forms of transnational escrows and already shields data, then reputation shouldn't be an issue. If you can rank trades anonymously and also not push invalid trades through, then that is already the primary focus. Bisq already does a great job in many of these things, but integrating extra layers of privacy while having something such as social trading, can really reiterate both the privacy-preserving and network compatibilities that make Bisq a great contender.

pazza83 commented 3 years ago

Thanks for the edits.

Here are my comments from you proposal https://github.com/Mentors4EDU/Bisq-Proposal#readme

Profile The profile needs to have just the basics. What it will have will include a description, a link to website, and a button to view trade history. It will also include metrics in regards to percentages for YoY returns. There will be a follow trades button which the user can input a certain percentage such as the default commission being 5% or set a custom fee. The ability to chose between both fee and percentage can offer flexibility for many users.

A link to website and ability for others to view your trade history reduces privacy. As Bisq is P2P I am not sure why I would want someone following my trades, or how this would work in practice?

Trade History Users can have the option between trading in real time or with a test network. Obviously, you only earn for real trades. There will be a tab for real time trades and test network trades. The tabs for trade history will only show entry and exit prices and percentages, it will not show how much money was put in order to encourage fair markets and a layer of anonymity.

What is it users earn?

Ranking Mechanism The ranking mechanism should support fairness and decentralization. That is why profiles are going to be ranked on performance-based metrics rather than how many people are following their trades.

Why would a user want to be ranked? If a user is ranked highly could that make them a target for LE? How does ranking preserve privacy?

I have not used any social trading platforms before such as etoro so maybe I am missing or confusing the point of a social trading platform.

I think I am viewing social trading from the lens of how can Bisq improve the social experience whilst trading (chat, profiles, discussion etc) rather than how can the trading experience be made competitive.

Not sure how much my views can be helpful with the later as that is not something I would look to use Bisq for.

Mentors4EDU commented 3 years ago

Hi, @pazza83 I will have a thorough response in regards to this quite soon. I'm really pushing for approval, so I can start development, but understand the parts you need further clarity on. Expect a quick update on this thread soon.

chimp1984 commented 3 years ago

I still don't see any concrete concept for solving the privacy and verification problems.

Mentors4EDU commented 3 years ago

@chimp1984 I am going to start w/ reiterating the questions regarding profile and trade history and hopefully that provides further clarity. This creates an infrastructure that is both privacy-preserving and anonymous while integrating the social aspect to it. Also, any ranking system this integrates is still privacy-preserving given that the thing being ranked is hashed and fully anonymous.

Mentors4EDU commented 3 years ago

Hi, @chimp1984 Regarding reputation, why don't we use bonded reputation or some sort of hashed pseudonymous roles/users, sort of like what was approved for #311?

The rest of the social trading protocols can integrate similar things, but everything would still be P2P and directly hashed w/ no KYC. There is no reason not to be having these features if they can be done in a privacy-preserving way.

I also think things such as lightning network integrations and pruned nodes would fix speed and latency issues where many social trading aspects similar to sites like Darwinex and eToro can be done in a platform like Bisq.

If approved, likely I can certainly form a team or move forward w/ the funding proposal.

Just my few side notes, you are welcome to add any insight, but I do see a way that many of the original issues regarding privacy can be fixed w/ anonymity layers + I removed the non-privacy preserving optional fields from the original proposal.

Best regards, Andrew

pazza83 commented 3 years ago

Hi @Mentors4EDU many thanks for this proposal. I am going to close as rejected due to lack of support for the initiate. Please feel free to open another proposal in the future.