gratipay / gratipay.com

Here lieth a pioneer in open source sustainability. RIP
https://gratipay.news/the-end-cbfba8f50981
MIT License
1.12k stars 308 forks source link

pay out with bitcoin #310

Closed chadwhitacre closed 11 years ago

chadwhitacre commented 12 years ago

We have a (somewhat contentious) ticket for payins with bitcoin, #14. This ticket is about payouts with bitcoin, and is primarily motivated by #126, payouts outside the US.

CetinSert commented 12 years ago

I am from Germany and have just discovered gittip today. I would love to hear what is necessary only for this payouts part and see if and how I could contribute to help it happen.

amueller commented 12 years ago

+1 on bitcoin from Germany ;)

ironchefpython commented 12 years ago

+0 if and only if it can be insured that gittip will not be used as a $ -> BTC laundering service, -1 if that guarantee cannot be made.

A better solution is to allow people to accept payouts in dollars or the local currency of their choice, and they can use that money to purchase bitcoin on their own if they are so inclined.

matin commented 11 years ago

For Bitcoin supporters, Forbes wrote an article requesting Bitcoin as a payout method by Balanced. We'd love your feedback: http://news.ycombinator.com/item?id=4832780

chadwhitacre commented 11 years ago

@matin Wish I could, HN is dropping my connections. :-/

chadwhitacre commented 11 years ago

The people I most need to pay right now generally don't want to take bitcoin (@mitsuhiko, @jezdez, etc.). Can we provide a user experience for them that doesn't involve them knowing about bitcoin?

amueller commented 11 years ago

@mitsuhiko why don't you want bitcoin? Btw, any solution would be fine for me, bitcoin or not!

bitpay commented 11 years ago

Folks, Bitcoin is both a currency and a payment network. While at the moment, people sending or receiving Bitcoin will necessarily need to be willing to accept or pay with Bitcoin (the currency), this is not a situation that will persist indefinitely. Software is under development that would, for example, let someone have a wallet that appears in all respects to have a USD (or any other currency) balance and instantly convert that balance to Bitcoin, send it over the Bitcoin network, and then automatically convert to any preferred currency on the recipient's end. It may take a couple years for what I just described to fully mature, but you can begin building the software support for managing Bitcoin payouts to many recipients in the context of a marketplace right now...today. Just grab the code and start working with it.

chadwhitacre commented 11 years ago

Okay, let's assume on this ticket we're talking about straight bitcoin payouts. Per @bitpay, it sounds like automatically converted payouts are a ways off.

@bitpay What is the code we are grabbing?

bitpay commented 11 years ago

https://github.com/bitcoin/bitcoin ...this is commonly referred to as the "Satoshi client"...it's the original client and is both a node on the bitcoin network and a wallet... bitcoin.org has some links to a wiki describing various technical aspects of the protocol and implementation...and you can interface with the satoshi client via JSON RPC (so, for example, you can send a payment with a JSON RPC call...you could write the bulk of your software for managing payouts in your favorite language, using JSON RPC to interact with the bitcoin network)

chadwhitacre commented 11 years ago

@colindean and I confabed on this tonight. The nut is converting USD to bitcoin in a completely automated way.

@bitpay @gasteve @brianarmstrong Anything like this in the works?

bitpay commented 11 years ago

Yes, there is something like that in the works (multiple companies are working on it in slightly different ways). If you focus on just processing bitcoin payments, you'll be in good shape as you will be able to easily plug into any of a number of solutions to this exchange problem.

chadwhitacre commented 11 years ago

Talk to @lvh tomorrow re: this.

chadwhitacre commented 11 years ago

+1 from @elliottcable via Twitter.

crimeminister commented 11 years ago

+1 from me.

chadwhitacre commented 11 years ago

+1 from @rstacruz via Twitter.

abnor commented 11 years ago

Is this finally moving? Can I withdraw it from my own todo list? :P

chadwhitacre commented 11 years ago

@tito has requested a payout via a non-PayPal method, preferably bitcoin. I've signed up for an account at Coinbase and am waiting for deposit verification of my bank account (two days?). After that I plan to do a test payout to myself to understand the flow, and if it works I hope to pay out to @tito using Coinbase. If that all works well then we'll be able to say we offer bitcoin as a manual payout method in addition to PayPal.

chadwhitacre commented 11 years ago

Yikes!

screen shot 2013-05-04 at 6 42 35 am

chadwhitacre commented 11 years ago

Here's the flow for this:

1. Buy bitcoin. Twiddle the amount in BTC so that the total is the total amount to pay out to the user. As with other payout methods (Balanced, PayPal), the user is responsible for fees.

screen shot 2013-05-04 at 7 03 07 am

2. Cross fingers and wait. According to the "How much bitcoin will I receive?" dialog above, which is linked from "read more" on the buy bitcoin page, the actual exchange rate is determined several days out (I'm seeing five days here, Saturday to Thursday). That makes this highly speculative. According to the chart they present, a bitcoin buy of $100 on April 30 that didn't go through until May 4 would have resulted in 1.090 bitcoin instead of 0.719 bitcoin. You're buying a futures (forward?), in other words.

chadwhitacre commented 11 years ago

screen shot 2013-05-04 at 7 17 08 am

chadwhitacre commented 11 years ago

And when trying to buy 0.10 BTC:

screen shot 2013-05-04 at 7 24 08 am

chadwhitacre commented 11 years ago

Anyway, once the bitcoin lands in my Coinbase account, I would then ...

3. Send bitcoin. This dialog requires that you have the bitcoin in your account before you can send it. We'd also have to twiddle the amount so that the recipient pays the fee.

screen shot 2013-05-04 at 7 46 18 am

colindean commented 11 years ago

Unfortunately, Coinbase runs out of its daily stock pretty regularly.

Colin Dean cad@cad.cx

On Saturday, May 4, 2013 at 7:47 AM, Chad Whitacre wrote:

Anyway, once the bitcoin lands in my Coinbase account, I would then ...

  1. Send bitcoin. This dialog requires that you have the bitcoin in your account before you can send it. We'd also have to twiddle the amount so that the recipient pays the fee.

— Reply to this email directly or view it on GitHub (https://github.com/gittip/www.gittip.com/issues/310#issuecomment-17431927).

chadwhitacre commented 11 years ago

Step 1 complete! Now we cross our fingers and wait. :-)

Fiddling with the amount to hit the right total USD amount (fees included) was a pain. The exchange rate kept updating out from under me, and Coinbase went down for 10 minutes as well. Not exactly streamlined.

screen shot 2013-05-04 at 8 19 52 pm

chadwhitacre commented 11 years ago

___ BTC will arrive in your Coinbase account on Thursday May 9, 2013

This makes it sound like I'm not buying a forward, and I'll get the amount specified on Thursday. We shall see ...

ELLIOTTCABLE commented 11 years ago

Some commentary on what you've got so far:

  1. Stay away from Coinbase. They've a reputation as unreliable; they've got serious issues, as evidenced by what you're running into right now with their “daily buy limit,” they have a reputation for excruciatingly slow payouts … I could go on. I've bought my share there, but I'm done with their terrible customer service, terribly unreliable practices, terrible everything. I suggest getting yourself verified on Mt. Gox or similar. There's plenty of better and more reliable options than Coinbase, though some of the easier ones have very high fees (cf. Bitinstant.)
  2. Stop trying to convert $US into Bitcoin per payout. Simply put, if you're not willing to keep a store of Bitcoin on-hand yourself, give up on Bitcoin payouts. The process is currently too frictional, complex, and downright expensive to be remotely feasible for anything under approximately $US 25 worth of Bitcoin. Buy them in (relative.) bulk, depending on he demand, and payout from your coffers. I feel like 100$ of BTC would be a worthwhile investment for this purpose (in fact, since I myself am interested in this feature, I'd be willing to invest as much on your behalf, saving you the complexity and fees of transferring your own $US at this moment into the pool.)
  3. Although this should have already been obvious … no Gittip payout is expected to be fast (in $US, you're definitely going to be waiting days for your brick-'n-mortar bank to pay you …), so there's no way your Guttip payouts should include a miner's fee. Basically, once you go through the $US-to-BTC process to fill your BTC buffer, there should be no fees for you to pass on to the person. This means the payouts will take hours instead of minutes, but that's already to be expected. (=

Thought: only allow as much in Bitcoin payouts, as you have had in Bitcoin donations, across the site. That way, you're never doing the clusterfuck that is Bitcoin-to-$US conversion, except in extreme circumstances where you've received substantially more Bitcoin donations than payouts, and are (yourself) in the red in terms of $US. This would be self-balancing, as people would either wait to ask for payouts until the site has enough Bitcoin, if they were dead-set on a Bitcoin payout, or they would begin to specially ask for Bitcoin payouts from their donators on their profile.

I'd love to talk to you more about this, share my knowledge. Also, I'm more than happy to donate some Bitcoin to you to “play with the system,” and make more intelligent decisions regarding integration on Gittip. I'm often on IRC (Freenode), as well as iMessage, if iOS devices are your thing … hit me up on Twitter. (=

ELLIOTTCABLE commented 11 years ago

Side note, you absolutely will not receive the amount (in BTC) that you just bought, you'll receive however much BTC it can buy with the amount of money it just debited from your account.

i.e. if you just paid $35 for Bitcoin on Coinbase, then next Thursday, when they make their buy for that day, they will give you whatever $35 is worth at the time of the buy. These are not futures. They are simply delayed buys. There is no benefit to you. You simply lose opportunity capital on the money you're throwing away for four days; whereas you could have bough it at that exact price, on Thursday, yourself, and had use of that $35 in the intervening time. Equally, you cannot base the quantity of your buy on the actual value of what you're buying; it's pure, and profitless, speculation. )'=

chadwhitacre commented 11 years ago

[N]o Gittip payout is expected to be fast (in $US, you're definitely going to be waiting days for your brick-'n-mortar bank to pay you …)

Actually, bank payouts on Gittip are same-day if you're with Wells Fargo, and next-day if you're not. It's not instant, but it's not "days."

Simply put, if you're not willing to keep a store of Bitcoin on-hand yourself, give up on Bitcoin payouts.

The only way we'd escrow BTC is if we implement escrows in multiple currencies, which we're talking about on the bitcoin payin issue. That might be essentially the same as your suggestion to "only allow as much in Bitcoin payouts, as you have had in Bitcoin donations."

The process is currently too frictional, complex, and downright expensive to be remotely feasible for anything under approximately $US 25 worth of Bitcoin.

We already have a $10 minimum for bank payouts, so having a minimum payout for BTC isn't a problem.

Side note, you absolutely will not receive the amount (in BTC) that you just bought, you'll receive however much BTC it can buy with the amount of money it just debited from your account.

Okay, that was my expectation based on what I read before initiating the transaction. The confirmation message is what caused me to scratch my head and wonder.

These are not futures. They are simply delayed buys. There is no benefit to you. You simply lose opportunity capital on the money you're throwing away for four days; whereas you could have bought it at that exact price, on Thursday, yourself, and had use of that $35 in the intervening time. Equally, you cannot base the quantity of your buy on the actual value of what you're buying; it's pure, and profitless, speculation. )'=

I see, these aren't futures because I gave them the money yesterday instead of on Thursday. Thanks. And you're right, that sucks.

For the next bitcoin payout experiment, it seems like getting an account on Mt. Gox would be the thing to try.

chadwhitacre commented 11 years ago

The deposit to Coinbase has cleared. I got the amount they said I'd get when I made the purchase on Saturday. This is unexpected. I expected the exchange rate to be determined on Thursday, but I got it at the exchange at the rate it was at on Saturday when I posted the order. That's good, actually, though the UX is confusing.

colindean commented 11 years ago

I thought that's how Coinbase operated in the first place.

chadwhitacre commented 11 years ago

I guess I got confused? Me getting confused starts above with this comment.

ELLIOTTCABLE commented 11 years ago

Hm. I just checked my records; I definitely didn't get paid-out the quantity I was quoted at the time they debited my bank account. (It's rather clear in my case, because there was a difference of several hundred bucks in the exchange rate at those times.)

Needs further investigation? Or perhaps they've changed policies.

colindean commented 11 years ago

Maybe it was a temporary thing during the Couple of days following the April crash?

chadwhitacre commented 11 years ago

@elliottcable How long ago was that?

chadwhitacre commented 11 years ago

We've successfully completed our first bitcoin payout! :D

knocte commented 10 years ago

From the FAQ: "Sort of. We currently support manual payouts using Coinbase."

Does this mean that the only people that can get bitcoins from a payout are the ones with a Coinbase account? If yes, then this limits it to people with a US bank account AFAIK.

patcon commented 10 years ago

@knocte Coinbase is beta-testing the ability to link VISA credit cards: http://support.coinbase.com/customer/portal/articles/1307875-verifying-a-credit-card https://www.evernote.com/shard/s27/sh/711da93e-d47f-4fa1-bab3-2f37934d92cb/2cf3a9e862ffe8f42cf31b5ff5da7304

Not sure if this means you 100% still need a primary US bank account or what...

zbynekwinkler commented 10 years ago

Actually, why is this issue closed? Is it closed because no one stepped up to implement it or because we do not want to deal with another currency or is it considered subsumed by #1451 or? I am not asking to open it, just want to clarify where we stand.

bruceadams commented 10 years ago

@zwn this is closed because @whit537 has done a bitcoin payout. There is a different issue, #1451, for implementing it in code.

knocte commented 10 years ago

But if you need a Coinbase account to be able to do a bitcoin payout, it's not really a bitcoin payout but a Coinbase payout. Can someone confirm if Coinbase is just the service doing the USD->BTC conversion and the recipient can just be a Bitcoin address instead of a Coinbase account?

ELLIOTTCABLE commented 10 years ago

@knocte @patcon No, @whit537 is doing manual payouts to Bitcoin addresses. I'm not sure why it was felt necessary to put “with Coinbase” in the FAQ; that's irrelevant to the people being paid-out-to, that's just how he's exchanging USD for BTC.

patcon commented 10 years ago

Thanks guys. Sorry if I should've known -- I skimmed :)

@bruceadams++

knocte commented 10 years ago

I'm not sure why it was felt necessary to put “with Coinbase” in the FAQ; that's irrelevant to the people being paid out-to, that's just how he's exchanging USD for BTC.

Given this statement, I've proposed this PR to fix this nitpick: https://github.com/gittip/www.gittip.com/pull/1691