Blockrazor / blockrazor

Absolutely ALL information about EVERY blockchain project in a comparison tool that ANYONE can understand. Administered by @gazhayes
Mozilla Public License 2.0
48 stars 55 forks source link

Problem: no way for users to trade Krazor for other currencies #844

Closed gsovereignty closed 6 years ago

gsovereignty commented 6 years ago

Problem: there is currently no way for users to trade Krazor for other currencies (and vice versa).

I'm opening this to have a discussion first before we decide what to do.

Some key points: It's probably a good idea to track multiple currencies in users wallets. Currencies can be deposited first, and then traded. Everything happens on Blockrazor until they actually withdraw. USD can be deposited/withdrawn with a bank transfer. However each additional cryptocurrency is painful to add, we need to interact with a different API etc for each new one. It's probably a good idea to just do Bitcoin, Monero and Ethereum to start with.

The system should be as simple as humanly possible, and definitely not a full on market.

There needs to be some way to match buyers and sellers at the right price. I have some ideas about how to do this but want to see what other people have to say before I pollute everyone's minds with my ideas. The key criteria is simplicity.

ping @anbud @AshHimself @samuelralak

AshHimself commented 6 years ago

So we are wanting to actually allow people to buy bitcoin through blockRazor possibly with Krazor and USD?

gsovereignty commented 6 years ago

Yeah. Only minimal amounts with USD though (deposits are capped, AML laws and such). Crypto to crypto is fine though.

samuelralak commented 6 years ago

am of the same opinion here. we can start small

It's probably a good idea to just do Bitcoin, Monero and Ethereum to start with.

I also think we need to seriously think about Blockrazor's security as well. We risk attacks from malicious users by having such a feature.

samuelralak commented 6 years ago

Here are my thoughts:

There needs to be some way to match buyers and sellers at the right price.

We could have buyers specify a volume range of crypto they are willing to trade and their exchange rate. when a user wants to sell, we ask the user for the volume he wants to trade and match him with sellers within that range. the seller only has to find a buyer with a preferred exchange rate. The reverse would also apply to buyers.

anbud commented 6 years ago

For exchange rate price matching, we can use the model most cryptocurrency exchanges (e.g. cex.io) use, and what @samuelralak mostly described in the post above.

You can put a sell order for a certain volume at a certain price and buyers can either put buy orders for the price they expect and wait for the price to show up, or they can choose to exchange at the currently lowest possible sale price.

As for the other things, I mostly agree that we don't need many currencies in the beginning, and Bitcoin and Ethereum have simple APIs for sending and receiving payments so they're sufficient. Monero is also a nice addition. About USD deposits, should we also support something like Stripe for credit card processing or will we only accept bank transfers? If we support USD deposits, we should also probably have some AML/KYC verification policy.

AshHimself commented 6 years ago

I have not used those other endpoints but I have used Stripe many many many times before.

gsovereignty commented 6 years ago

We have to stay away from credit cards, paypal, etc. It's too easy to do chargebacks. So only bank transfers.

I guess the most important thing to nail down is actual functionality, we can stub out the currency deposit/withdraw stuff, the actual trading stuff should come first.

gsovereignty commented 6 years ago

What about a very simple time based auction?

anbud commented 6 years ago

@gazhayes, you mean something like where users can state they're selling some coins, and other users can bid the amount of money/coins they want to pay for it and the highest bidder wins? Or something similar?

gsovereignty commented 6 years ago

Yeah basically that, or something similar to that. The absolute simplest way possible.

anbud commented 6 years ago

Yap, that's quite simple I agree. If we take that route, we can reuse lots of existing infrastructure for auctions, I made it very general when I wrote it.

gsovereignty commented 6 years ago

Ah that's great. OK, I'll keep thinking about how to structure this from a UX standpoint and keep this open but will leave it reserved for you.

gsovereignty commented 6 years ago

So, I guess the simplest way is to have auctions to sell whatever currency (Krazor, USD, ETH, XMR for now). It's probably fair to only allow KZR <=> Other and not Other <=> Other.

This requires an extension to the existing wallet to store these other currencies of course.

We can just stubb off deposit/withdraw.

Users should be able to set the time for how long the auction runs for.

Users should be able to set a reserve, and I guess the reserve amount should be hidden from other users.

Users must have enough balance to bid.

I guess that should be enough for a first pass?

anbud commented 6 years ago

@gazhayes, that seems perfectly sufficient for the beginning.

gsovereignty commented 6 years ago

Ok, I have nothing else to add, you want to take this one right?

anbud commented 6 years ago

Yap, I'm taking it.

anbud commented 6 years ago

Done in #894.