[bisq-network/proposals] New concept for Assets (#68)

Manfred Karrer notifications at github.com
Tue Jan 15 16:53:06 UTC 2019


> _This is a Bisq Network proposal. Please familiarize yourself with the [submission and review process](https://docs.bisq.network/proposals.html)._

## Introduction
We had in the past sometimes the request to make listing assets completely dynamic, so that the user who want to trade any asset just make an offer without the requirement to add that asset by Bisq developers. I was against such an idea for various reasons. After further considering and reflecting over our experience with the current approach (very unsatisfying) I would like to start a discussion for a new approach which is close to those early requests.

## Objective
We want to avoid that Bisq gets into the same problems like some "platforms" where they start to censor what they support for good or bad reasons. The right model IMO to deal with filtering wanted and unwanted content is how Twitter is designed, so that the user is deciding what to follow, what to mute and what to block. No moderator or curator needed. 

So we want to put the decision which asset a user wants to trade, see and support with his node by forwarding offers to the network into the hand of the user. What to trade and what to display is easy to filter. By default the user sees anyway either the default list (top traded or curated list) or they set up their custom list as they wish.

We could (and probably should) extend that to decide which assets a user does not want to support by running a Bisq node. Each offer gets broadcasted by a store and forward network. If a user prefers to not support the broadcast of an asset he considers as unethical he should have the power to do that by excluding that offer to be forwarded and stored on his node.

This feature might be interesting also once the P2P network get heavily flooded with offers as a scaling solution. 

## Proposed implementation
The list of assets will only contain the default list which gets filled either by a "curated" list as it is atm or by the top 10 traded assets and can be adjusted by users at they like (as it is now).

When looking up an asset there should be a search field as we use it now in the add-altcoin-account screen. If the user types in a asset ticker or name of any existing asset it will show up normally. If it does not show up the user can start to register a new asset. For registration we only require the ticker symbol and the name (maybe info for tx validation as well). The asset gets broadcasted to the P2P network and will become available to all those who have not actively blocked it.

We should requiere a BSQ fee as well to avoid abuse (spam, incorrect name or ticker symbols). After the coin is registered it will be visible by anyone who looks up for it in the search field. 

## Problems and possible solutions
There are seveal issue with that approach and those have been the reason why I rejected those ideas in the past. But I think they can be mitigated or seen in a different light from what we have learned over the past years.

### Ticker/name squattering/abuse
A main concern was that people start to squatter ticker symbols or names or register with incorrect ticker or name. 

I think the easierst solution for that is to keep the feature to remove an asset by voting. So in such cases the BSQ stakeholders can delete a registered asset and therefore make it possible to register the asset with the correct ticker/name. As the registration has costs there is a protection against abuse/spam/sabotage. The fee can be adjusted in the DAO voting and can be considerabel high if needed (e.g. 1000 BSQ). The delay between registration and voting might be an issue. 

Alternatively we could use a "centralized" but probably not really problematic approach to use a developer message (users verify the signature) to remove such incorrect registrations. This developer messages are used anyway for emergency cases to block scammers or buggy offers etc. Any user can set a ignore flag to ignore such developer messages and with the any potential abuse of that tool is limited as the network would just start to set that flag and therefore the developer message would not have any effect. With that approach we could react very quickly and kick out any incorrect asset. Practically mistake are more likely than spam or abuse, so it might be easily the case for a newly launched asset (like GRIN atm) that the ticker is not 100% clear. Once registered with an ticker which later turns out to not be the main ticker it would be bad to wait 1-2 months until DAO voting has cleared that out. Doing it with the developer message would fix that much easer and faster. I would suggest to have both tools available.

### Missing address validation 
A newly added asset would not have any address validation (very basic generic calidation could be used though). 

In fact I don't think that this is a problem as most assets are never traded anyway and disputes caused by user mistakes to add an incorrect address are rather rare. The address validation can be added by any developer anyway and specially of an asset is more frequentrly traded it would be recommended that Bisq developers will do that. It turned out that the policy we use now that Asset issuers need to make a PR for the validation is more pain for us as it helps. Usually the effort for writing that code is very low but reviewing, communication and merging it it much more effort. So I think we should step back from that approach anyway (see proposal #67).

### Arbitrator cannot verify the tx
There are some privacy assets like Monero where a simple lookup in a blockexplorer cannot be used for verifying the asset tx. For those we require that the asset offers a feature so that the sender can deliver a proof for the sent tx. If we allow that any user adds any asset we risk that assets get added where that feature is missing and in case of a dispute the arbitrator has no way to find out the truth. 

I think such assets are rather rare and we can mitigate it by warning popups where we tell users when they add  an account for a new asset that they have to be sure that this feature is available. We should add a field at the registration to add information if the tx of that asset can be verified in a block explorer. 

### Blockexplorer
We require that the asset is supported with a block explorer. I think in practice there is no asset missing an explorer out there. We can add that to the registration requiremnet and could remove registrations which would fail in that most basic requirement.

### ICO coins, scam coins and legal risks
To allow any coins will open up again some legal risks.

This is a difficult topic and there might be no really good solution for that. 

We should not add legal risks to Bisq at the current level of development and specially not for supporting ICO coins or scamcoins. So we can delay the implementation of that proposal for later once that risk is easier to handle or reduced due more clarity on the legal side (or the ICO coins are all gone :-)).

Another way would be that we use the DAO voting to remove such coins, but that adds lots of friction and work (if we get added 20 ICO coins a month and then need to figure out, discuss and vote to remove those). Also there would be some delay between adding and removing.

Another way would be to use the feature that the user can block any asset they don't want to support. That mighe be cumbersome to maintain as many ICO/scamcoins could be added frequently and it would add an unwanted burden to Bisq users. We also want to avoid to create incentives for asset issues to make marketing on Bisq channels so that their asset finds much support. 

So for that point I don't have a good solution at the moment, but maybe some reviewer come up with one?
 
### Others
- Another issue was that too many assets would decrease usability (who wants to scroll over 1000 of coins) but I think that is a UI issue which can be solved and as said the user should only see a default or customized set anyway.
- Maintaining dead coins: There should be still some mechanism so that dead not traded assets get removed again.
- Extend asset exchange to goods and services market: If users would start to encode information into the address field for a goods and services market it would cause problems as Bisq is not designed for that (arbitration,...).  But that concern is probably not any realistic risk. 
- Anything else?

## Conclusion
One reason I wrote that now and not later (we have other priorities) is because the assets listing is part of the DAO now and if we find a better model we might remove that part before launching on mainnet to not add dead code to the DAO.

Another reason is that the managemnet of the PR for asset listing is a pain and has not become better with our attempts over the last months (see #67). Sometimes if you try hard to fix a problem and it just does not get better with any fix, the problem is not well understood and need to be addressed on an lower level. Often removing things are the best solution (like the new trade protocol solves hard problems with the arbitration conecpt by removing the arbitrator). So if asset listing policy is a hard problem to fix, lets remove it and there is no policy anymore. Anyone can add anything.

Please let me know what do you think and if you have any ideas/concerns/etc....

PS: I know I risk with that, that we get back BCH again, but I am sure BitMain is working hard to dig the grave faster than we are able to deploy that new proposal :-). 

-- 
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/proposals/issues/68
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20190115/5674260b/attachment-0001.html>


More information about the bisq-github mailing list