Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New concept for Asset handling #68

Closed
ManfredKarrer opened this issue Jan 15, 2019 · 4 comments
Closed

New concept for Asset handling #68

ManfredKarrer opened this issue Jan 15, 2019 · 4 comments
Assignees

Comments

@ManfredKarrer
Copy link
Contributor

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

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 :-).

@ManfredKarrer ManfredKarrer changed the title New concept for Assets New concept for Asset handling Jan 15, 2019
@clearwater-trust
Copy link

I really like the idea of easily adding assets in the client with a BSQ registration fee. Using individual nodes to vote for inclusion is clever and maybe a bonus but certainly not necessary if the UI is able to filter the list. If the asset is listed, registration fee burned and trade volume meets requirements, then the DAO can be summoned if there is a problem (scam). Otherwise, the asset is listed, registration fee burned and removed automatically for inactivity. Or, everybody trades the new asset and lives happily ever after without DAO or developer input.

If the asset is listed with the incorrect symbol, the registration fee is burned, trade volume will not meet requirements and the ticker symbol is removed automatically. Maybe Bisq will become the default naming convention?

Address verification can be added to preferred assets, but I agree, is probably not necessary since the trade can be canceled.

It's worth mentioning that cross-chain trades are the main fee driver on Bisq and should be simplified and encouraged wherever possible.

@sqrrm
Copy link
Member

sqrrm commented Jan 16, 2019

I like this idea as it's in the spirit of letting the user decide, with the extra benefit of less work for developers. It probably would lessen the legal risks as well.

Perhaps it would be better to only show a short list of the top traded coins and all other assets are not supported, including not forwarding those assets offers, unless the user explicitly enables the asset. The default list to shown could be based on volume traded in that coin to allow for automatic inclusion as a default coin. Any new coin added would need to have users manually enable it, there would be little risk of spam attacks and once the community around that coin manage to get it to trade enough it would show for everyone that doesn't block the asset.

@ManfredKarrer
Copy link
Contributor Author

@sqrrm
Re "all other assets are not supported, including not forwarding those assets offers":
Then basically new assets would not work as probably nobody would add those. The P2P network would require about 30% support I assume so that there is any chance to get a message. It would also lead to getting spammed our channels with PR from asset issuers so they find enough Bisq users to support it.

@ghost
Copy link

ghost commented Jan 17, 2019

I like also the spirit of this proposal,
however I wonder if it represents a lot of work or not to implement ?
I'm also worried about spam. We should be careful about not generating painful maintenance / cleaning-up work. But I believe that a fee, even small, should suffice to avoid that.

From the UI point of view, I think that something has to be done in order to present to users only a shortlist of pertinent altcoins. Drowning pertinent altcoins in a list with 95% shitcoins is imo not a favor for serious altcoins which make serious efforts to generate trades (and fees) on Bisq.
Reinforcement could/should be favorized.
It's always a good strategy to focus on what already is working, even a bit, and help it work better.
And not lose time with a (incredibly) never-ending list of spam coins.
New coins have to 1st make their proof by themselves or at least exhibit a minimum synergy with Bisq (like Grin did recently).
When nobody in a coin community is able to discuss a bit about/with Bisq ... it's a very good indicator about the possible future synergy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants