brave / browser-laptop

[DEPRECATED] Please see https://github.com/brave/brave-browser for the current version of Brave
https://www.brave.com
Other
7.95k stars 975 forks source link

Support Bitcoin Cash (or Bitcoin S2X) instead of legacy Bitcoin #11413

Closed hugobuddel closed 6 years ago

hugobuddel commented 6 years ago

Description

Bitcoin has significant transaction fees. E.g. adding 10 USD of BTC to your Brave wallet can easily cost more than 1 USD in fees.

Instead, Brave could use Bitcoin Cash, the fork from a few months back: https://www.bitcoincash.org/

Or perhaps the Bitcoin Segwit 2X (S2X) fork coming in November.

Steps to Reproduce

  1. Fill Brave wallet
  2. Pay a large fee

Actual result: Pay a large fee, e.g. > 1$ of btc.

Expected result: Pay a small fee, e.g. < 0.1$ of btc.

Reproduces how often: Most of the time, depends on BTC network congestion.

Brave Version

about:brave info:

0.18.36

Reproducible on current live release: yes

Additional Information

srirambv commented 6 years ago

cc: @mrose17

hugobuddel commented 6 years ago

It seems that newer versions of Brave will use something called BAT (Basic Attention Token says Google?) instead of bitcoin? So it would be unwise to fill up a BTC-wallet now because it will be useless in a few weeks?

NejcZdovc commented 6 years ago

@hugobuddel no worries, we will convert BTC wallet into BAT wallet, so you will not lose any money. And yes we are converting from BTC to BAT

hugobuddel commented 6 years ago

Trying to learn more about this: https://basicattentiontoken.org/first-phase-of-the-basic-attention-token-platform-nears-rollout/

Another future update will give users the option of going through a “Know Your Customer” (KYC) process in order to gain full control over their BAT wallet, including the ability to transfer BAT out of the wallet.

Requiring KYC sounds like a serious regression. My understanding with the current Brave was that it includes a bitcoin wallet and that you could export the private key and import it in another wallet (although I never tried, so could be wrong). I mean, Brave is open source and BAT is supposedly decentralized, so I don't understand how these restrictions will work.

But well, this issue can be closed, because support for bitcoin will be completely removed right? Any timeline for this (above page says September)?

hugobuddel commented 6 years ago

Apparently it is already possible: https://basicattentiontoken.org/mercury-preview-now-available/ Very confusing to have to get information from various places. I'm going to try 0.19.

hugobuddel commented 6 years ago

The 0.19 beta linked from that page used only 11.1 sat/byte as fee when doing the BTC-part of the BTC-BAT conversion, so it will take hours to confirm (if at all). The BAT transfer is still pending as well, probably waiting on the BTC transaction to confirm. It's only 4 dollar in value, so who cares.

I'm going to buy some BAT on bittrex, but don't know how to send it to Brave yet because I don't know the address (and I've got little experience with Ethereum tokens). How can I get the browser-address?

I was hoping to see the address in a blockchain explorer by looking up the BTC-BAT conversion, but the BAT transaction didn't confirm yet. I'll also try Uphold, but I'd prefer to chose my own exchange.

hugobuddel commented 6 years ago

Transferred 10 and 18 BAT through uphold, and Brave has them, but I don't see the transaction anywhere, e.g. they don't show here: https://etherscan.io/token/BAT

How does this work? How does Brave know how much BAT it has?

mrose17 commented 6 years ago

@hugobuddel - hi! you raise an interesting question. the answer is: in BAT Mercury, the BAT goes off-chain to avoid spending more gas. there is a "balance" server that reports the current and pending balance. you can look at the https://github.com/brave-intl/bat-balance repo to see how that works...

bsclifton commented 6 years ago

Closing this issue as wontfix; as noted above, we are in the process of switching to BAT 😄

hugobuddel commented 6 years ago

Thank you for the reference @mrose17. I'll do some more studying, because several things are still unclear to me. In particular why it is not possible to simply get the private key of the wallet, send BAT to and from it and why KYC would be necessary for any of that. The current setup doesn't look very decentralized.

No need to answer now; perhaps I'll come with some more well defined questions later. My main worry is that I'm currently trying to go all-brave (bugs and all) and hope that I won't regret it later because it'll turn out that I've added yet another trusted third party to my setup.

KYC to use a browser, how much worse can things get?

evq commented 6 years ago

Hey @hugobuddel. Thanks for comments, concerns and questions! I'll do my best to answer them.

Requiring KYC sounds like a serious regression. My understanding with the current Brave was that it includes a bitcoin wallet and that you could export the private key and import it in another wallet (although I never tried, so could be wrong). I mean, Brave is open source and BAT is supposedly decentralized, so I don't understand how these restrictions will work.

In the bitcoin proof of concept the wallet cannot be used as described as above as it is a multi-signature wallet and the browser only holds one of the required keys. The other key is held by BitGo and is used to restrict transactions to only those going through the settlement process. The BAT wallets are analogous with Uphold taking the place of BitGo.

The current setup doesn't look very decentralized.

You are correct that the current setup is not decentralized. Our goal is to provide feature parity with our existing bitcoin proof of concept first, moving to an increasingly decentralized system with future releases. This is just the first step and we are actively working toward the goals laid out in our roadmap.

KYC to use a browser, how much worse can things get?

KYC is not and will never be required to use the browser. The ability to make contributions to publishers anonymously is extremely important to us. But even that is an entirely optional process - you will never be required to contribute.

KYC will only be required if you wish to withdraw funds from your in-browser wallet.

To understand the reasoning here it is important to remember that we will be adding the ability to receive micropayments for viewing ads and give BAT grants directly to users. As a result we have a legal requirement to restrict the outputs of the system to entities who have gone through a KYC process. Furthermore, we cannot have custody of user funds. The current system is designed around these two conflicting requirements, a standard cryptocurrency wallet would fulfill the second requirement but not the first.

We understand that applying these same restrictions to a balance that comes entirely from your own deposits can be frustrating. Please don't consider the in-browser wallet to be a replacement for a normal cryptocurrency wallet. As you have observed, it is not and was never designed to be one.

Users who want a full wallet without KYC should use something designed for this purpose and only transfer funds into the browser wallet they want to go to publishers.

Thanks again for your comments and questions, I hope my answers help! Let me know if you have any more.

eV

P.S. We are actively working on changes to the wording on the add funds screen to clarify the unidirectional nature of the wallet. We're trying our best to communicate this counter-intuitive aspect, we don't want anyone to be caught by surprise!

hugobuddel commented 6 years ago

Thank you @evq, much appreciated. What was not clear to me earlier from the documentation I found (and thus could be explained somewhere, like the funding page indeed):

What is not clear to me yet is

evq commented 6 years ago

@hugobuddel

Quick reply before I sign off, to fund your wallet there should be an orange button on the Payments settings page that says "Add funds". After the one time intro page, you can click any of the cryptocurrency logos to be taken to a page where you'll find the address for that particular network. You can actually fund with BTC, LTC and ETH in addition to BAT as Uphold will do automatic conversion (though obviously there is a fee associated). Anyway, you should be able to make a BAT transfer to the corresponding address. If the funding pages are not working for you please let me know, thanks!

hugobuddel commented 6 years ago

Thanks @evq, funding the wallet through that address was indeed successful!

I think my misunderstanding was that the popup says that "All transactions go through uphold", but that is (I suppose) not true for BAT transfers, assuming the receiving address is indeed the multisig address. That address is then 'owned' by the browser and uphold, but uphold did not have to actively do anything for this transaction to go through. Well, the 30 minute wait time is probably just Uphold's double-spend protection period in which they would refuse to sign a spending-transaction, but there doesn't seem to be anything they have to actively do to get the funds in the wallet.

Perhaps it would be more clear to me if the window would state that the (only) BTC/LTC/ETH transactions would go through Uphold to convert to BAT. (That, and that Uphold holds one of the keys of the multi-sig address.) And perhaps reorder the 4 options to have BAT as the first, since that is the primary token; BTC/ETH/LTC are just there as a convenience for users who don't have BAT yet (~everyone).

Hmm, the original issue here was a request to support Bitcoin Cash. This is now again a valid request: could you add BCC to the funding options :-)? Uphold supports it. But maybe that would not be necessary if it is clear for users that they can buy their BAT anywhere and send it to the wallet.