bitshares / bitshares-ui

Fully featured Graphical User Interface / Reference Wallet for the BitShares Blockchain
https://wallet.bitshares.org
MIT License
518 stars 569 forks source link

Integrate "My Markets" and "Find Markets" #499

Open Xeldal opened 6 years ago

Xeldal commented 6 years ago

Currently in the Lightwallet and bitshares webwallet. "My Markets" and "Find Markets" provide identical function. Openledgers is different, where within Find Markets you can define your own quote currency. In the Light and Bitshares wallets you are limited to the predefined list of tabs as the quote currency.

Obviously it can be fixed by adopting Openledger's configuration. But I think breaking it into two different tabs is completely unnecessary. All functionality can almost already be done from the My Markets tabs. Simply add a text box "filter" for the quote currency as a tab option. or "+" button to allow the user to add their own tabs.

I've layed out a GUI design here: https://bitsharestalk.org/index.php/topic,25071.new.html#new that shows the additional filter idea. The other ideas in this link arn't related to this issue but i think should be considered possible GUI improvements.

EDIT: In addition: In "My Markets" it is miss labeled as "BASE CURRENCY" when in fact it is the QUOTE CURRENCY.

wmbutler commented 6 years ago

Please post your mockups and discussions in this thread. I do agree that the Market discovery mechanism needs improvement. The issue as you've written it up is very broad. You will have a better chance of adoption if you break it up into smaller stories that can be discussed and decided upon more easily. This means creating different issue numbers for each change you expect to see. Additionally, without a screencast of functionality, you will have a difficult time demonstrating that your concept is more efficient than the current one.

I am not a fan of the two-staged approach to discovering and adding market favorites that currently exists in the bts wallet. The reason I have not proposed anything different is that it's a very complex and in-depth and opinionated decision with many users who need to be pleased.

Te re-iterate, if you want to move forward, you should bring your ideas here fully including your bullet points and embedded images. That's why this area exists, to allow for full discussion and amendments to the discussion.

Here is an example of a fairly in-depth rewrite in action: #378

Xeldal commented 6 years ago

With this issue I only mean to draw attention to the fact that the "Find Markets" tab is currently exactly replicating the function of the "My Markets" tab. There is no need for both tabs. Just remove "Find Markets" Improving the function of this section would, as you suggest, need more discussion or in the meantime just adopt Openledger's Find Market's tab as it adds more functionality.

svk31 commented 6 years ago

Not sure why you say they provide the same functionality since they clearly don't. One shows a list of assets, the other let's you search for markets and add them to the before mentioned list.

Xeldal commented 6 years ago

I see what you're saying. Thanks, I was somewhat mistaken. Although it is replicating 99% of the function as a simple filter and favorite selector for only those pre-selected 5 QUOTE currencies. The MY MARKETS tab just has access to a much smaller list to filter from as defined by Find Markets.

Assume that I've added all markets from FIND MARKETS. Now what is the difference? Do we need 2 tabs for this? What we get from the 2 tabs is essentially just 2 levels of favoriting. Why not combine this into 1 function/tab.

At any rate it looks like its more complex an issue than simply removing the FIND MARKETS tab. Adopting OpenLedgers layout would be better than the current layout but ultimately needs something better.

svk31 commented 6 years ago

Find markets gives you access to the potentially thousands of different markets bitshares offers, it's just not realistic for the my markets tab to include all markets by default. I'll have to look at what openledger have changed, haven't looked at that before.

svk31 commented 6 years ago

Ok so openledger is just using the old, original layout. In my opinion our refactored version is much clearer, with the one drawback that we've removed the Others tab.

The main reasoning for that was simplification and concentration of trading volume.

Xeldal commented 6 years ago

Here's a quick sketch of what I'm thinking.

Image of Markets

Everything in one tab.

The 3 filters on the top right side are "Show only Favorites", "Show only My List" and "Show only None Zero volume".

QUOTE filter pre-populates with the text from QUOTE tab selected ie "USD" or "OPEN.BTC" etc. Selecting a different QUOTE tab populates the QUOTE filter appropriately text entered in BASE field filters the list based on favorites and other filters used. text entered in QUOTE changes tab to "other" and also filters the list based on favorites and other filters used. if none of the 3 filters are selected, it will show a list from all available assets. With no filters selected. From any tab, anything that isn't already added to "My List" will have a + sign allowing you to add to "My List". Once added it will change to an empty star, if clicked again it will be added to your favorites and change to a gold star. The reverse then is also possible. The plus sign in the tabs of QUOTE CURRENCIES allows the user to define their own (upto 5?) different QUOTE tabs. The "other" tab being permanent.

The cog wheel I havn't given any function but a lot of things could be in there : )

EDIT: add an empty star to filters on right top in image and adjusted text logic to explain. Simplifies everything.

wmbutler commented 6 years ago

@svk31 I think there is a unified way to do this search, but it will take many iterations and discussions to hash it out. @Xeldal I agree with you in concept that separating the markets the way they are is very confusing.

I think we leave out an important distinction with regard to exchanges. I really feel that part of the market discovery should incorporate filtering by exchange. If we filter by exchange, we can be clever about obscuring the prefix open, bridge, etc. because the asset will be branded as Openledger BTC, Rudex BTC, Bridge BTC.

It's important for users to understand the distinction because then we could imagine a marketplace where users could transfer from Rudex.BTC to Open.BTC through a very low fee-based deposit/withdrawal option rather than a market trade where liquidity doesn't allow for a fair trade in most cases.

Lastly, we have assets that are relevant only to the DEX.

Imagine being able to dynamically switch from exchange to exchange without logging in and out. It's a powerful way to look at the DEX.

Xeldal commented 6 years ago

I just edited my prior post. Thought i could get it in before anyone commented. Anyway. I changed the image adding another filter for "My list", the grey star. Simplifies the logic and allows full search functionality. And I also edited the text logic explaining how it might function.

Xeldal commented 6 years ago

@wmbutler I agree with regard to filtering by exchange. I've got some ideas for this. A basic one of which is mentioned in the bitsharestalk link in the OP here: https://bitsharestalk.org/index.php/topic,25071.new.html#new but really that just amounts to a preset filter, very basic, doesn't do anything with the prefix. Would be the equivelant to typing "OPEN" in the BASE filter. I think it can be better. Trying to come up with some more ideas with this.

wmbutler commented 6 years ago

@Xeldal I think we need to think even bigger picture on this. Imagine allowing the user to see the branded exchange so it's clear in their mind which exchange they are visiting at that moment. It opens a world of possibilities and I think drives home what the bts dex represents.

landry314 commented 6 years ago

I have always wanted to search for every market in which a particular asset was traded in order to compare their volumes at once but with the Find Markets search area I have had to use the dropdown for quote currency (mislabeled base currency) to search for each market separately and try to remember what their volumes were.

I definitely agree with @Xeldal, that these two tabs should be integrated but I would also like the ability to search by an asset without specifying the quote currency first. I understand that the combinations of markets could be astronomically high so the idea to filter out zero volume markets could be a part of this or maybe to only display the first 10 hits by volume or even to just display the results in the 5 major quote currencies (bitUSD, bitCNY, BTS, open.BTC, bitBTC). Some more ideas...

Personally, I would like the new name of the section to be "Marketplace" as that word describes a place with many markets which is exactly what this is.

landry314 commented 6 years ago

@Xeldal, I suggest changing the title of this issue to "Integrate My Markets and Find Markets".

Xeldal commented 6 years ago

Here's a thought. Make the exchange selectable in the top left.

Clicking the Exchange name here would give an information box with some links and settings available maybe, you'd like to set an exchange skin here to further distinguish it.

The ">" would pull out a drop down to select which exchange you wanted.

The default would be "ALL Exchanges" and would not filter the prefixes. Maybe call it BitShares Core or something better than All exchanges.

On the Markets list give a *info marker that states the prefix has been removed. In this photo i also show what it might look like dropping the BIT prefix from core smartcoins USDb CNYb etc.

wmbutler commented 6 years ago

In concept you are beginning to touch on areas that I think are valuable for others understanding the DEX. Thanks for continuing the discussion.

Xeldal commented 6 years ago

I should probably move the Exchange images and discussion to a different issue. This issue is about merging My Markets and Find Markets.

wmbutler commented 6 years ago

But the two are sorta similar in that a user might want to discover symbols in one area and add them to their favorites area.

Xeldal commented 6 years ago

I agree they have some overlap.

I'm not sure I understand what you mean though. the function of discovering markets and adding favorites wouldn't necessarily change with the addition of an exchange switch. Other than being limited to only searching the coins relevant to that exchange. Like a pre-filter (maybe that's not desireable?) A favorite made in one section would show up in other areas where it was also relevant. Like from All Exchanges, it would show all your favorites regardless of where you found and favorited them, but a RUDEX.EOS/RUDEX.BTC favorite or search wouldn't show in the market list for Openledger and you couldn't add it there. You'd have to switch to ALL Exchanges or RUDEX Exchange to get those.

wmbutler commented 6 years ago

I'd have to disagree just a bit here. If I'm specifically searching for cmc top100 type coins, the exchanges are what I'd check first. I'd likely want to browse coins by exchange and as I came across trading pairs that I plan to own and track, I'd add them to my favorites.

Ideally my favorites would group the coins by exchange so I can easily see which coins I'm trading at which exchanges.

Xeldal commented 6 years ago

This is how the "All Exchange" market search would work. You'd be searching everything.

You wouldn't go to an individual exchange and expect to find coins in the search that they don't support. right? So you'd go to the "All Exchange" or whatever you want to call it and search there.

If the search is going to show all coins from every exchange no matter what exchange you have selected. There is no purpose to having the exchange switch/filter.

For grouping by exchange, I guess depending on the active column(name, vol, favorite, etc) you'd get a mix of exchanges due to sorting, but If they are listed alphabetically by name starting with prefix they'd already be grouped by exchange. This could be made more visually separated and grouped by prefix for the other columns as well, if that's desirable.

Grouping/filtering by exchange also gets tricky, of course. Where do you put the favorite RUDEX.EOS / OPEN.BTC . In Rudex or Open? both? Sort by either the BASE or QUOTE. IDK .

wmbutler commented 6 years ago

I think the "All exchanges" idea is part of the problem right now. I'd argue that we need to drive home the idea that different exchanges offer different gateways to different coins. If we allow users to filter by gateway, we can actually show all the coins supported by that gateway and omit the confusing prefix (because the gateway logo and name at the header will establish that the coin it part of that gateway).

Your point about RUDEX.EOS and OPEN.BTC is a good one. I'll have to ponder that!

gateway symbol price
rudex
EOS OPEN.BTC .1
PPY bitUSD 3.27
openledger
BTC RUDEX.EOS .1

The problem with this approach is we are still displaying prefixes.

Xeldal commented 6 years ago

Yes, that's exactly what the Exchange switch is all about. And exactly what the proposed filters would do. However I believe there needs to be a neutral selection. That does not filter anything, that shows everything available on the DEX. If you're showing everything you have to distinguish the difference between OPEN.BTC , RUDEX.BTC and BTC(b).

If there is no option to search the whole dex, it becomes a nightmare finding the markets you're looking for. You have to search in each of the Exchanges individually. Would ZEPH/BTWNY be found in the OPENLEDGER Exchange for example. What exchange would you find that pair on? Both are native BitShares coins, no Gateway is necessary.

If you're saying that everything can be found from any exchange search then I don't understand the purpose of the Exchange Switch/Filter, because you're not actually filtering anything in that case.

wmbutler commented 6 years ago

That's an easier question to answer. Coins are either part of an exchange or part of the bitshares core. So searching for coins that aren't explicitly part of an exchange could get searched from the Bitshares dropdown.

Exchange
Bitshares
OpenLedger
Rudex
Cyrptobridge
wmbutler commented 6 years ago

I think we must strive to properly brand these prefixed coins.

Xeldal commented 6 years ago

So we are not exactly in disagreement i guess.

That's the same thing in my mind. the "BitShares" in your example is just "All Exchanges" in mine. In fact I called it "BitShares-Core" in a prior comment. The name isn't important. The ability to search all available pairs is. I guess you are saying the Bitshares-Core search would not include any of the exchange listings. Which works i guess but there is now no way to search all exchanges for the specific coin pairs i'm looking for. I have to make 4 different searches to find them all.

wmbutler commented 6 years ago

Right...but All Exchanges brings our users right back around to the confusing prefixed assets. As you stated:

Bitshares-Core search would not include any of the exchange listings. Which works i guess but there is now no way to search all exchanges for the specific coin pairs i'm looking for. I have to make 4 different searches to find them all.

Yes, exactly. In order to favorite coins from 4 different exchanges, you would need to toggle to each exchange. In doing so, we promote an implicit understanding in the user's mind that the coins belong to that exchange (much like poker chips in a given casino belong to that casino and are not transferable).

o5j5vg55bv5hv5j5f8799f9 commented 6 years ago

I had same comments on combination as you, resubmitting my mock-up, clearly needs work but general idea is same. just needs to let us search treating each box as a filter and sorting. can limit to star'ed ones with single click for same thing, similar to coinigy.

example

I worry about it requiring too much maintenance to figure out which "exchange" adds what asset continuously. searching by asset and ranking results by volume (by watching blocks as they get discovered to fill lists or other methods) should be enough to know what are the most liquid one is and what is most liquid pair for each asset. beauty of reference client is that anything should be tradable against anything, easily.

if they type BTC, they should be able to see several options for BTC like OPEN.BTC or BRIDGE.BTC, each one with information page if they need to read about each one, I assume wild cards on each side of the text. if they want to limit it to just BRIDGE.BTC they should type the rest of it for example.

wmbutler commented 6 years ago

We are going to agree to disagree on this one.

Xeldal commented 6 years ago

Unless we're trying to restrict users from using a substantial portion of the function of the DEX -Access to trade any coin against any other- Having some kind of prefix / icon / symbol / tooltip etc is unavoidable. You are going to have to use it somewhere. I don't think it's a good idea to prevent access to trade freely in this way for the reference client. It makes sense for individual exchanges to do this. In other words I think the best approach is to include an unfiltered "free exchange" option. It doesn't necessarily have to use the prefix but some distinction is necessary.

If it is super important to limit exposure to this advanced trading option. I'd suggest we put it behind an advanced option that involves an education walk-through.

side note: I think we would do well to have an education walk-through for the platform in general anyway. There are so many new concepts, hidden buttons, symbols, names, options, controls, etc that even for crypto people and experienced traders it is a daunting task to understand what is going on.

o5j5vg55bv5hv5j5f8799f9 commented 6 years ago

imagine I'm a user who just deposited open.DASH and wants to see what I should trade it against and how do I go from open.DASH to lets say CVCOIN

my # 1 concern will be what is the liquidity like, don't care with which other coin, just want to see what my options are. putting in open.DASH on one end of the pair and nothing on other ideally would give me a list of pairs with most important (highest liquidity) at the top.

I know due to so many different assets (could be millions) sorting all of them by volume is impossible, but as we have discussed in chat, it can be populated by activity of monitoring blocks coming in without third party database. And then the volume list can be populated by the coins we see are active. A small starting list can also be used for coins we already know are popular.

Then I would search for CVCOIN and see what top volume pairs are and if something is in common near the top.

very likely it would quickly see the best way to go from open.DASH to CVCOIN would be through open.BTC or bitUSD or bitCNY or BTS or who knows what else instead of directly.

clockworkgr commented 5 years ago

@gibbsfromncis Have you guys worked on the My Markets/Find Markets UX / do you have another issue tracking work on it? We should try and group discussion in one place

gibbsfromncis commented 5 years ago

We do not have task to redesign it and we will work on its redesign later. For now we have only "migration to ant" task for my markets/find markets.