Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: Phinnaeus Gage on March 25, 2013, 02:35:45 AM



Title: Instant confirmation using only the blockchain.
Post by: Phinnaeus Gage on March 25, 2013, 02:35:45 AM
I haven't a clue as to if this has been discussed prior, but I can't get the idea out of my head, hence this thread.

I'll try to make it brief.

Is it possible to have instant confirmation (same wee fee structure, of course) only via what one has in their wallet and information obtained from the blockchain?

What I suggest, if it hasn't been thought of already, is the following: If I currently have 10 BTC in my wallet, e.g., and make a purchase online, or off, amounting to less than half said amount, the merchant is able to accept my payment immediately without fear of a double-spend, if the same amount of the purchase I just made is held up until the required confirmations are obtained. The burden will now be upon me to wait the approximately ten minutes before I'm able to make another purchase from that same wallet.

It's not uncommon for a hold to be placed on X amount of dollars on my Visa if I lease a rental car. As hard I try, I would be unable to spend the deposit that's locked until I return the rental to Avis.

Once the confirmations are in, I'm free to shop again at the store next door if I'm B&M shopping. But, even I HAD to make two back-to-back transactions within a relatively short time frame from the same wallet, provided I have more than double of what I intent to spend total, both transactions wouldn't have a problem being processed immediately.

Is this possible? If not, why not?

~Bruno K~


Title: Re: Instant confirmation using only the blockchain.
Post by: whitenight639 on March 25, 2013, 02:50:58 AM
I haven't a clue as to if this has been discussed prior, but I can't get the idea out of my head, hence this thread.

I'll try to make it brief.

Is it possible to have instant confirmation (same wee fee structure, of course) only via what one has in their wallet and information obtained from the blockchain?

What I suggest, if it hasn't been thought of already, is the following: If I currently have 10 BTC in my wallet, e.g., and make a purchase online, or off, amounting to less than half said amount, the merchant is able to accept my payment immediately without fear of a double-spend, if the same amount of the purchase I just made is held up until the required confirmations are obtained. The burden will now be upon me to wait the approximately ten minutes before I'm able to make another purchase from that same wallet.

It's not uncommon for a hold to be placed on X amount of dollars on my Visa if I lease a rental car. As hard I try, I would be unable to spend the deposit that's locked until I return the rental to Avis.

Once the confirmations are in, I'm free to shop again at the store next door if I'm B&M shopping. But, even I HAD to make two back-to-back transactions within a relatively short time frame from the same wallet, provided I have more than double of what I intent to spend total, both transactions wouldn't have a problem being processed immediately.

Is this possible? If not, why not?

~Bruno K~

Who would hold the pending bitcoin funds??
I've never experienced this hold you speak of for Visa cards, maybe it's because I do not use credit cards.

I suppose it would be possible for retailers to use the blockchain or maybe a blockchain.info API to check an address for transactions, the problem is that "low priority" transactions (which don't necessarily have to be small transactions) can take hours for the first confirmation, IF the appropriate fee is paid then it's usually minutes but why would retailers take that risk?

I'm sure I read somewhere on this forum that miner clients can be run to look for certain transactions and give priority to them, so retailers could run there own Miners on their servers and work there customer transactions into blocks could they not? This would benefit customers and the retailers.




Title: Re: Instant confirmation using only the blockchain.
Post by: Phinnaeus Gage on March 25, 2013, 03:05:11 AM
To be clear, I'm not trying to get around the small fees, only envisioning the speeding up of the process for the vendor and patron on a single transaction from a single wallet.

If I'm a stranger on the road traveling from point A to Point B, and stop for gas, take a piss, and buy some snacks, it's a given that the merchant will probably never see me again.

The establishment accepts Bitcoin, and the grand total of my purchase equals $54.39. I have $217.88 currently in one of my wallets. I swipe my card, and immediately the transaction is approved, and have receipt in hand. But for the next 10 minutes or so, I don't have $163.40 readily available to me, but only $109.01 until all the required confirmations are in, in still the approximately 10 minute time frame.

Does that seem clearer?

Hell, the fees are so small, normally less than a penny, why the hell can't the patron pay the fee instead of the merchant? Fuck it, make both pay, either splitting the fee or double it, giving it to the miners protecting the system of things.

Better yet, make it a penny for each and every transaction over a dollar, regardless, with every transaction less that a buck have zero fees.


Title: Re: Instant confirmation using only the blockchain.
Post by: franky1 on March 25, 2013, 03:51:30 AM
easiest method has been discussed. is to have internal transfers and no need to link it to credit card information or even "hold" fiat funds. for a truly bitcoin only instant payment solution.

how it would work:
much like transferring mtgox codes between people that have mtgox accounts.

that way the funds never move on the block chain, its just a balance adjustment on the mtgox accounts database of the mtgox users involved.

then the recipient is free to withdraw without waiting for confirms.

so if you set up a service where you allow people to deposit a small daily spend amount while they take a shower in the morning. it would have confirmed in your service by the time they have got dressed and walked to starbucks.

starbucks would show their username. and as you to pay 0.05btc for a $3.50 coffee and you just type in their username into your phone App of your service. press pay. and the database changes ownership of the coins.

while the coins never physically move between your wallets. star bucks can then instant withdraw the funds as they got confirmed earlier during the customers shower.

if there was a instant pay service like mentioned above. i would happily put 1BTC in to know i can instantly pay starbucks for the rest of the week without waiting, just by adding them to a book mark in a app and just pressing paynow, and able to walk off.

and i think starbucks would be happy to have the relief of knowing the funds had been pre confirmed before the customer even entered the store.


Title: Re: Instant confirmation using only the blockchain.
Post by: Stephen Gornick on March 25, 2013, 04:48:42 AM
To be clear, I'm not trying to get around the small fees, only envisioning the speeding up of the process for the vendor and patron on a single transaction from a single wallet.

A credit card authorization ensures that the customer's credit account is open, is in good standing, and has sufficient funds to complete the submitted transaction.  If the card passes these checks, the issuing bank will place a hold on the funds for the amount of the authorization.

When looking at your credit card statement online you might see these transactions as being marked "pending" or "authorization hold".

Unless the transaction was "authorization only" (e.g., in the rental car scenario) the "pending" transaction is at some part of the several-day process for transferring funds from the customer's charge account to the merchant's bank account.  This is known as settlement.

Bitcoin doesn't have this same process flow however.  You could approximate the 0/unconfirmed being the "authorization" request and a transaction reaching six confirmations as being similar to "settlement", but these cannot be used interchangeably.

When the credit card authorization is made, the card issuer has the "master node" which is the authority as far as the customer's balance goes.

With Bitcoin there is no master node.  There is no single authority.  

So the double spending risk with Bitcoin has to do with the chance of getting a false positive when accepting a payment transaction that has no confirmations.  With no "master node" available, a merchant checks against the most recent copy of the blockchain to determine that the coins used to spend haven't already been spent.  

That would work, except that a dishonest person can cause the merchant to believe the transaction is valid while at the same time (or later time even) that dishonest party can then broadcast a different transaction that ends up spending the same funds a second time.

The use of 0/unconfirmed allows false positives (i.e., a Bitcoin client might show that funds were received when at a later time a block may arrive with conflicting information) and the initial 0/unconfirmed transaction will disappear as if it had never been made.

Because there's no way to see what is in future blocks then until those future blocks are mined a merchant is exposed to risk of a double spend.

There are various double spend attacks, but to a retail merchant the race attack is the primary one to be concerned with.  A merchant may use a payment processor (such as BitPay) or may go the do-it-yourself (DIY) route.  The bitcoin.org client can be configured to protect against being super-vulnerable to the race-attack by not enabling incoming connections and to have outgoing connections be made to well-connected nodes.   There are additional protections that could possibly be built to assist merchants however so few merchants accept on 0/unconfirmed today there hasn't been strong calls for these protections.

For instance, a 0/unconfirmed from someone paying with recently received coins that too haven't yet confirmed is more risky than is a 0/unconfirmed payment from someone who paid using coins that already have had more than six confirmations.  Or another example is a payment made that ends up being low priority due to its size or having no fee paid, etc.   The merchant can tell right away that the transaction will not confirm quickly and might want to delay crediting the payment as the longer the transaction stays unconfirmed the less cost there is to an attacker using rogue mining nodes who will process double spend transactions for a fee.

A bricks and mortar merchant like Cups and Cakes in San Francisco doesn't have much exposure to a double spend attack because it is economically unprofitable.  Let's say a race attack against them succeeds one out of twenty times (probably even a conservative estimate, the more likely rate could be one out of fifty or worse even).  So that means the dishonest customer is visiting 19 times in order to get the 20th cupcake order for "free".  Cups and Cakes probably earns more than 5% profit on each sale, so even with this double-spend exposure they are not losing money due to an occasional double spend.


Title: Re: Instant confirmation using only the blockchain.
Post by: kjj on March 25, 2013, 05:08:05 AM
The problem you run into is that there are no wallets and no balances, not really.  What you spend is the output from a past transaction, and that spend is always complete.

What that means is that if you have 10 BTC, unless that is a single UTXO, no one knows that you have 10 BTC, they only see the transactions that you are redeeming at the moment.  And there is no way to put a "hold" on any others, nor a way to remove such a "hold".

Once you sign it, it is gone, all of it.

The only time this isn't true is when you are attempting to double spend by redeeming the same output twice in different transactions.  And the whole complicated bitcoin system is built for resolving that situation, but you can't tell which way the ambiguity went except with a decent amount of hindsight, which in this case means blocks and time in the past.

The only way around this is with a trusted third party.  Such entities already exist in the real world, and there is no reason to think they won't find a niche in the bitcoin future.


Title: Re: Instant confirmation using only the blockchain.
Post by: DannyHamilton on March 25, 2013, 06:43:04 AM
- snip -
The only way around this is with a trusted third party.  Such entities already exist in the real world, and there is no reason to think they won't find a niche in the bitcoin future.

I firmly believe that this is the long term solution to both this situation as well as for moving micro transactions off the blockchain.

Eventually there will be trusted third parties.  (Call them banks, call them escrow services, call them credit card companies, it really doesn't matter what you choose to call them).  These trusted third parties will hold insured deposits of bitcoin and will provide instant transfer between accounts they hold (and probably between the service providers as well).  They will also provide a "charge-back" service that will make transactions reversible to protect the consumer.  When we start to see such services competing, we'll know that bitcoin is truly "mainstream".


Title: Re: Instant confirmation using only the blockchain.
Post by: franky1 on March 25, 2013, 06:52:09 AM
i stil dont think the chargeback scheme is effective. instead if i was to create the instant payment service i would only offer it to legit businesses. EG starbucks. where by they provide me with transaction numbers that show transactions complete.

then if someone doesn't like their coffee then starbucks has to deal with refunds or pay the dollars back into my service to give bitcoin back to the customer.

there would be no customer is always right, automatic refund process.. it would be dealt on mutual co-operation between the 2 parties. i would not offer the service to "hobbyist" crypto businesses that have not even registered any company details with their local government/state. basically the mainstream only bricks and mortar stores like walmart/ 7-11 / starbucks.

very worse case scenario would be to only freeze the value of the disputed transaction value, but never the retailers whole entire account.


Title: Re: Instant confirmation using only the blockchain.
Post by: DannyHamilton on March 25, 2013, 06:55:41 AM
i stil dont think the chargeback scheme is effective. instead if i was to create the instant payment service i would only offer it to legit businesses. EG starbucks. where by they provide me with transaction numbers that show transactions complete.

then if someone doesn't like their coffee then starbucks has to deal with refunds or pay the dollars back into my service to give bitcoin back to the customer.

there would be no customer is always right, automatic refund process.. it would be dealt on mutual co-operation between the 2 parties

And that is fine.  Some services may provide exactly what you are describing.  Others may provide service as I described it.  Then the consumers will choose which service they prefer, and the merchants will choose which service they are willing to tolerate to increase sales.  Eventually one service may fail due to insufficient usage/revenue to cover costs, while the other flourishes and increases profits.  This is how the free market works.

I have my prediction as to which service will succeed, you have yours.  As I said, when we see competing services like this, we'll know that bitcoin is truly mainstream.  It will be fun to see which of us is right.


Title: Re: Instant confirmation using only the blockchain.
Post by: franky1 on March 25, 2013, 06:59:10 AM
i stil dont think the chargeback scheme is effective. instead if i was to create the instant payment service i would only offer it to legit businesses. EG starbucks. where by they provide me with transaction numbers that show transactions complete.

then if someone doesn't like their coffee then starbucks has to deal with refunds or pay the dollars back into my service to give bitcoin back to the customer.

there would be no customer is always right, automatic refund process.. it would be dealt on mutual co-operation between the 2 parties

And that is fine.  Some services may provide exactly what you are describing.  Others may provide service as I described it.  Then the consumers will choose which service they prefer, and the merchants will choose which service they are willing to tolerate to increase sales.  Eventually one service may fail due to insufficient usage/revenue to cover costs, while the other flourishes and increases profits.  This is how the free market works.

I have my prediction as to which service will succeed, you have yours.  As I said, when we see competing services like this, we'll know that bitcoin is truly mainstream.  It will be fun to see which of us is right.

+10000 :D


Title: Re: Instant confirmation using only the blockchain.
Post by: Dabs on March 25, 2013, 08:48:59 AM
I think the third parties, like exchanges, will handle all these instant confirmation things. The raw bitcoin nodes with blockchains can only do zero confirmation almost-instant-updates about what you spend or what merchants will receive. Like Satoshi Dice works on zero confirmations, but I'm guessing only for those small bets. Within seconds you find out if you won or you lost, but you don't get to spend the money in your wallet until after at least one block is confirmed.


Title: Re: Instant confirmation using only the blockchain.
Post by: TradeFortress on March 25, 2013, 09:02:31 AM
Can we get back on topic and stop discussing chargebacks?

This isn't possible because of double spending. The reason why you wait for confirmations is to reduce the chance that the main blockchain contains an alternate transaction sending the inputs to another output.

Let's look at the hold concept.. which is a transaction. When you send a transaction, it is a hold on that inputs, to the peers that have heard of this transaction. Peers will reject transactions using the same inputs if there's already one in their memory pool.

Summary: Your coins are already "held" when you make a transaction, but no it can't be used for instant confirmations, because you don't know which one will make it into a block. And the miner is always free to include a TX / hold that has never being broadcasted to the network in his block.