Pages:
Author

Topic: Bitcoin snack machine (fast transaction problem) - page 3. (Read 55331 times)

hero member
Activity: 658
Merit: 500
you are all thinking first generation bitcoin transactions based purely on the blockchain. I still think a reputable vending machine will add a loyalty/membership card system where you deposit bitcoins to your membership balance and then the machines deduct the amounts from the membership balance. off the blockchain.

That way coins are preconfirmed when you have deposited your funds into your balance and you are spending the coins much like MTGOX/BTC-e using databases not blockchains for internal transactions.

At my work we are given a Kenco card which has a 2 free coffee's per day and then any other coffee's add to a balance which you pay off on payday.
I would certainly not use a vending machine where I need a special card. Vending machines are something I use in some cases when I want the snack the fastest and easiest way. Having to add credit to a card negates both qualities.
legendary
Activity: 1666
Merit: 1010
he who has the gold makes the rules
Who is going to do a double spend attack to buy some skittles....  Huh

So I risk the value of a massive amount of hardware i would need to have under my control for a 50 cent bag of candy... lets be rational here.  Just check their public key to ensure they have enough btc, and give them the candy.
newbie
Activity: 58
Merit: 0
you are all thinking first generation bitcoin transactions based purely on the blockchain. I still think a reputable vending machine will add a loyalty/membership card system where you deposit bitcoins to your membership balance and then the machines deduct the amounts from the membership balance. off the blockchain.

That way coins are preconfirmed when you have deposited your funds into your balance and you are spending the coins much like MTGOX/BTC-e using databases not blockchains for internal transactions.

At my work we are given a Kenco card which has a 2 free coffee's per day and then any other coffee's add to a balance which you pay off on payday.
hero member
Activity: 784
Merit: 1000
Put a notice on the machine "any bitcoin coming from an address with unconfirmed transactions will not be accepted and refund may not be processed in real time-you have been warned."
legendary
Activity: 1708
Merit: 1010
^what coinerd says^

maybe an alternative fee service could solve this: the company could pay some amount of money to the main mining pools to include every transaction made to their addresses

Or simply pay an access fee to be a first tier peer to one or many of the largest mining pools.  If you think about it, BTC Guild could crediblely charge a small monthly fee for peers to be added to the top of their peer list, garranteed to have the highest connectivity (wherein free peers might be throttled, or not even able to connect continuously).  Logically, the major mining pools already have direct peer connections to each other, so a direct peer connection to any of the top five would only be a single hop connection to the lot.  Such a direct connection would be of value to any retailers that accepted zero confirm transactions, which would likely be the norm for meatspace retailers like Wal-Mart should they ever start accepting Bitcoin directly.
sr. member
Activity: 532
Merit: 261
­バカ
^what coinerd says^

maybe an alternative fee service could solve this: the company could pay some amount of money to the main mining pools to include every transaction made to their addresses
full member
Activity: 196
Merit: 100
Why doesn't someone who wants to operate vending machines also operate a mining rig that specifically prioritizes confirms from transactions from it's vending machines?  This way, it could release the goods immediately from receiving the btc and then expedite the confirmations thus minimizing risk of double spends.
Because you don't know how mining works  Roll Eyes

You have a point. After your comment, I realized there are probably a lot of things regarding bitcoin that I only have a cursory knowledge of.  So, I started to do some research to try and catch up.  Any response to help verify or dispute my understanding would be greatly appreciated.

The first thing I started with was the Satoshi original white paper. Something stood out to me, in section 8:

Quote
... Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.

This sounds very similar to what I was describing, except exchange miner with node.

So then, I thought to myself: well, what is the difference between a miner and a node? This is something I always assumed was the same thing.

But, AFAIK, it would seem that a business would be wise to run a node for speed and security. Wouldn't businesses do this in the future and wouldn't that in turn become a lot of the power of the network, even when there are no more block rewards.

To make it more effective, you would verify your own transactions faster than others. I suppose it would be difficult to single out transactions from their business; so like, confirm the vending machine transactions before others.  Would that be possible?  Could the miner single out transactions that are a certain value, technically?




A node keeps the block chain, and propagates new blocks.

Miners get their work from nodes.

A merchant wants to have a node, so that they can be responsible for making sure that their transactions are broadcast to miners.  But this does not mean that the miners will accept the transaction when it reaches the node they are mining from.  There are several reasons ranging from not enough fees to finding a valid block before re-writing the current work to include your transaction.

A merchant can also be a miner, and attempt to encode either all transactions or even just their own transactions into a block.

But there's no guarantee that they will find the next block, or even one any time soon.

So neither running a node, or mining yourself, becomes a guarantee against a double spend made on someone else's equipment (vending machine, online merchant, whatever).

It's not directly possible to directly affect the "speed of confirmation" for your own transactions except by adding masses of your own hashing power to the overall network (as a miner, not a node). And if you overdo that you'll just push difficulty up and start the cycle over.

You increase the "speed and security" of transaction when you run a node by ensuring that your transaction gets delivered and included in the workload of as many miners as quickly as possible.

As to whether or not a vendor, or third party can selectively decide what to add to a block, they sure can.  But it doesn't mean they can just add that block to the block chain.

hth
sr. member
Activity: 364
Merit: 250
This is a good start, but still not impermeable.
I didn't say impermeable, I said good-enough.  The loss in practice would be far lower than with credit cards.

Quote
(for example, by refusing to propogate word of the transaction at the vending machine)
No, the vending machine talks to a big service provider (aka payment processor) that provides this service to many merchants.  Think something like a credit card processor with a new job.  They would have many well connected network nodes.

Wohoo Satoshi come play at our casino!  Cheesy
legendary
Activity: 1708
Merit: 1010
yeah I think that's an acceptable workaround, actually I was going to suggest a centralized service for syncing the mempool... but then everybody should start using this centralized service if they want to accept 0 confirmations, and that's not so cool..
probably in the future bitcoin will be just a backbone for this kind of services

Not a centralized service so much as a combined contract mining agency & insurance agency.  You pay a small monthly fee, and it becomes the insurance agency's problem that your vending machines don't get double spent against.  Your machines connect to the agency's servers, which then make every effort to get those transactions out to the largest of the mining pools as fast as possible, in order to limit the risk of being the loser in a double spend.  Agencies also might trade lists of addresses that have been known to attempt a double spend, and therefore flag those addresses should they pop up in their customers' machines.  There are many ways to undermine the likelyhood of success of a double spend attempt.
legendary
Activity: 1708
Merit: 1010
Why doesn't someone who wants to operate vending machines also operate a mining rig that specifically prioritizes confirms from transactions from it's vending machines?  This way, it could release the goods immediately from receiving the btc and then expedite the confirmations thus minimizing risk of double spends.
Because you don't know how mining works  Roll Eyes

You have a point. After your comment, I realized there are probably a lot of things regarding bitcoin that I only have a cursory knowledge of.  So, I started to do some research to try and catch up.  Any response to help verify or dispute my understanding would be greatly appreciated.

The first thing I started with was the Satoshi original white paper. Something stood out to me, in section 8:

Quote
... Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.

This sounds very similar to what I was describing, except exchange miner with node.

So then, I thought to myself: well, what is the difference between a miner and a node? This is something I always assumed was the same thing.

But, AFAIK, it would seem that a business would be wise to run a node for speed and security. Wouldn't businesses do this in the future and wouldn't that in turn become a lot of the power of the network, even when there are no more block rewards.

To make it more effective, you would verify your own transactions faster than others. I suppose it would be difficult to single out transactions from their business; so like, confirm the vending machine transactions before others.  Would that be possible?  Could the miner single out transactions that are a certain value, technically?




Yes and no.  This is more like the Walmart versus target contract mining issue.  Use the search function against "walmart" and my screenname, and you will find that I have commented along these lines extensively in the past.
legendary
Activity: 1190
Merit: 1001
I for one do not know of any vending machines connected to the internet, so that seems like the first problem to solve...

We'll just give the midget inside a smartphone and a bitcoin app.
hero member
Activity: 546
Merit: 500
I for one do not know of any vending machines connected to the internet, so that seems like the first problem to solve...

Sure they do. They send messages to say they need restocking, or out of change.
They use GPRS mostly.
member
Activity: 80
Merit: 10
I for one do not know of any vending machines connected to the internet, so that seems like the first problem to solve...
sr. member
Activity: 532
Merit: 261
­バカ
yeah I think that's an acceptable workaround, actually I was going to suggest a centralized service for syncing the mempool... but then everybody should start using this centralized service if they want to accept 0 confirmations, and that's not so cool..
probably in the future bitcoin will be just a backbone for this kind of services
legendary
Activity: 1190
Merit: 1001
Plus the vending machine company could just setup a centralized database to record transactions, independent of the blockchain, so in order to even attempt a double spend you'd have to find 2 machines which were not utilizing the same database.  So it's fairly conceivable that all vending machines could utilized the same shared database.

For example you try to buy candy the transaction is not only sent to the bitcoin network, but also stored in the vending central database, if you were to attempt 2 transactions at the same time on different machines, only one could be inserted into the database, so first one into the database wins.
sr. member
Activity: 532
Merit: 261
­バカ
[...]
Yeah pretty easy...all you got to do is get everyone using the app around the world to hit the button on the vending machine faster than the internet between machine...so what's that maybe 300ms...no problem...Cheesy

Plus all the machine would need to do is delay the candy bar falling for a couple of seconds and verify no double spends.
you are wrong: the propagation of a new spending is not 300ms
legendary
Activity: 1190
Merit: 1001
For small transactions, you actually don't need to wait for confirmations because chances someone will do a double spend for a chocolate bar are pretty small and if they would succeed it isn't a huge loss.
yeah... just wait for a double-spend app in google play..

satoshi solved the double-spend problem in a distributed network and you guys don't think that confirmations are important?  Undecided

Imagine this:
- you install easy double-spend in your smartphone
- you send 0.0001btc to a "community wallet" address
- other people around the world using the same app do the same
- when it reach 0.01btc an alert is broadcasted with the private key so everybody spend at the same time the 0.01btc
- everybody gets a chocolate bar for 1 cent, and easy double-spend keeps a commission Smiley

Yeah pretty easy...all you got to do is get everyone using the app around the world to hit the button on the vending machine faster than the internet between machine...so what's that maybe 300ms...no problem...Cheesy

Plus all the machine would need to do is delay the candy bar falling for a couple of seconds and verify no double spends.
sr. member
Activity: 532
Merit: 261
­バカ
For small transactions, you actually don't need to wait for confirmations because chances someone will do a double spend for a chocolate bar are pretty small and if they would succeed it isn't a huge loss.
yeah... just wait for a double-spend app in google play..

satoshi solved the double-spend problem in a distributed network and you guys don't think that confirmations are important?  Undecided

Imagine this:
- you install easy double-spend in your smartphone
- you send 0.0001btc to a "community wallet" address
- other people around the world using the same app do the same
- when it reach 0.01btc an alert is broadcasted with the private key so everybody spend at the same time the 0.01btc
- everybody gets a chocolate bar for 1 cent, and easy double-spend keeps a commission Smiley
hero member
Activity: 518
Merit: 500
Manateeeeeeees
Yeah I think the solution of just accepting without any confirmations is fine for such low-value items.
hero member
Activity: 546
Merit: 500
Profit margins should be good enough to cover the odd case of fraud.  I would imagine it would be possible to get some sort of insurance to cover a major scam.

Some sensible checks can be put in place for detecting abnormal behaviour.

If there is any serious risk, install CCTV.
Pages:
Jump to: