OpenBazaar / openbazaar-desktop

OpenBazaar 2.0 Desktop Client (talks to openbazaar-go server daemon)
MIT License
649 stars 186 forks source link

Feature request: Add Zcash support to front-end #987

Closed CrypticaScriptura closed 6 years ago

CrypticaScriptura commented 7 years ago

Given the ability for OpenBazaar to be pseudonymous and run over Tor, it would be fitting to adopt native support for Zcash with its strong privacy protections. In my mind, this would complete the privacy circle to create a truly anonymous marketplace.

As @cpacia has already written server-side support for Zcash, and @SamPatt indicated only client-side integration was lacking, the challenge has been issued for assistance from the community to implement the front-end.

I'll add 1 ⓩ to a bounty for the person who submits a pull request which is merged that adds full ZEC support alongside BTC.

rmisio commented 7 years ago

I think this may be a bit premature.

I believe there was some misinformation. Alt coin support is not yet done on the server, at least in a way that is usable on the client. There are some issues we still need to work out as far as currency conversion data (crypto to crypto and crypto to fiat) as well as the most appropriate way for the server to expose the currency baseUnits (e.g. how bitcoin uses Satoshi) when a listing is priced in an alt.

Also, only preliminary designs have been made for this and the designs for alt coin support were made after the server side piece was written and it is unclear if the current implementation of the server would satisfy the UX requirements. To be honest, as of yet, we haven't completely settled in on what those UX requirements are.

I think before any code writing takes place, the requirements need to be finalized. At that point the server can be adjusted where necessary and client development can begin.

jjeffryes commented 7 years ago

Just to be clear, what is complete on the server side is some code that should allow a server to run in Zcash only mode. This hasn't been tested much, and anyone working on it would need to do extensive testing, fix any bugs they find, and complete anything that needs to be added.

Making changes to the existing client to support Zcash, especially in a way that allowed interaction with non-Zcash servers, would be a substantial undertaking, and require rewriting a non-trivial amount of the code base.

The OB1 team is working on ideas for the best way to handle multiple currencies. That may involve changes to the way the server currently works. In the meantime, if someone wants to experiment with a branch of the current client that uses some other solution, that would be interesting to see.

leto commented 7 years ago

I would like to suggest a backend architecture for OpenBazaar to properly implement multiple currencies. You could emulate the BarterDEX project, which is a decentralized exchange that supports many cryptocoins (I think around 20 currently). What they do is run an electrumX node for each coin they want to support, and then use RPC commands to talk to electrumX to do operations with that coin (generate a new address, get a list of addresses, make a transaction/etc).

This would mean that the OpenBazaar project would need to have a server which has various ports open, each port being an ElectrumX server for each supported coin. Then the openbazaar binary that end users use, it would know the IP+port of these electrumX servers, and when it needs to do a cryptocoin operation, it uses the appropriate RPC.

I helped add the Hush cryptocoin to electrumX (it's current being merged upstream, it already runs production transactions on via superNETs fork of electrumX: https://github.com/SuperNETorg/electrumx/commit/8e55df9a7b5ea9bac01019e9183e36cd45893e30 )

Here is the upstream PR for adding Hush to electrumX: https://github.com/kyuupichan/electrumx/pull/297

If you do adopt this architecture, and it is implemented, adding a new coin becomes almost trivial. Any coin supported by electrumX comes for free, and a new coin usually just means adding a small amount of metadata about address formats and genesis blocks.

Please let me know if the above sounds viable to core devs, I would love to help add Zcash+Hush and lots of other cryptocoin support :metal:

ghost commented 7 years ago

🤘🎧🤘

CrypticaScriptura commented 6 years ago

Do I owe this 1 ⓩ bounty to @cpacia, @rmisio, or split between the both of you?

Feel free to provide a ZEC address. :smile:

jjeffryes commented 6 years ago

(edited from my previous response for clarity)

@naconner thank you for the offer. Since this was done as part of our normal duties at OB1, could you donate it to the project fund, so we can pass it along to people contributing to OpenBazaar from outside our team?

Unfortunately, we don't have the project ZEC fund set up yet, @SamPatt @hoffmabc and @drwasho are still coordinating that. We'll let you know once we have it ready.

CrypticaScriptura commented 6 years ago

Thanks, @jjeffryes. I'll await news on the fund. :+1:

rmisio commented 6 years ago

This has been implemented. You can use ZEC with OB as long as you run a full node.