I'm still a bit unclear as to what prevents someone (government, IBM, Amazone EC2, ...) from setting up shop and throwing CPUs at mining. I know that it will slow everyone down but surly the NSA has enough horsepower to drown almost everyone else out. Right?
"An attacker that controls more than 50% of the network's computing power can, for the time that he is in control, exclude and modify the ordering of transactions. This allows him to:
* Reverse transactions that he sends while he's in control
Prevent some or all transactions from gaining any confirmations
* Prevent some or all other generators from getting any generations"
They have to get ahead of the chain and then out compute the rest of the grid of "honest" nodes. I believe currently all clients will just accept the current block chain with the most amount of work on it. So if they can drown out everyone they can spawn off their own chain, take a look at the thesis by Satoshi (http://www.bitcoin.org/sites/default/files/bitcoin.pdf) where he talks about this under Calculations.
If an entity that could harness sufficient computing power like the NSA wanted to take control of the block chain by throwing more computing power at it than is currently devoted to computing the block chain, then, yes, they would be in control of which transactions were permitted, and could undo very recent transactions that seemed to have been committed. Older transactions would be very difficult to undo, however.
nothing. anyone can. right now its mostly inefficient to allocate cpus for mining. its just not worth it for them. as more bitcoins are mined they get harder to mine.
I'm not sure of the technical details of how they are doing it, but I believe the difficulty of mining a bitcoin is proportional to the speed with which they are being mined (and thus the amount of mining going on).
So throwing a lot of resources at it just makes it that much more difficult to mine, and would seem not to be productive. (edit: well, at least not based on their current value)
Computing power costs money. The more power thrown at mining, the more power required, and the less money is made per BTC generated. Throw enough at it and everyone else will stop even trying to generate coins, but for good reason: they wont be worth as much as you are paying for them.
Indeed, if the system became common enough, one could hypothesize a good percentage of the world's energy running "mining" machines... and the related global warming...
What's the easiest way to accept BTC as payment on the web?
For example, are there drop-in examples for common web-app frameworks? Would it involve the customer cutting & pasting a few long BTC strings between the browser and some separate wallet app?
Would the web-app keep polling a separate Bitcoin service to achieve confirmation/confidence that a payment has gone through?
2. Web application generates a new bitcoin address. This can be done by sending a command to the official BitCoin daemon, or by calling a method on the BitCoinJ Java library.
3. The web application asks the user to send a sum of money to the recently generated address. If the user is using the official Bitcoin client, they'd do this by clicking "Send Coins", then copy-pasting the address and the correct amount of money into the dialog box.
4. The web application then either polls the Bitcoin daemon to see if the transaction has come through yet, or sets up an event handler if the web app is using BitcoinJ. The transaction must obviously be sent to the right address with the right amount of bitcoins.
5. When the transaction has come through, you can now deliver the product to the user. If there's no particular hurry, or if the product is high-value, you may want to wait until a certain number of Bitcoin nodes have confirmed the transaction.
As far as I'm aware, there aren't yet any drop-in plugins for common web frameworks, but it wouldn't be hard to make one.
What I've never heard mentioned or answered is "how well does it scale?"... It seems to me that, after a few million nodes enter the network, it will take more time to process the transactions that are created than to create them, and gigabytes of space to store them.
Not to mention that new clients will basically never catch up with all this history. How do they solve this?
There will be a light client, which doesn't need to download blockchain. Only miners will be using the full chain. How it will work is explained in the author's paper: http://www.bitcoin.org/sites/default/files/bitcoin.pdf
They only release the next 50 coins every ten minutes so that's constant. And then they adjust the work factor based on recent history so it's always reasonably hard.
Yeah, it's a very nice way to get around this well known problem. However what surprises me most is that if they ever want to be adopted on a large scale the clients ought to be better than this. ALL TRACE of your money is stored in a single file (wallet.dat) and there is no way with the default clients to back it up and encrypt it (very easy to do with dropbox etc). In real life we never carry all our money with us and we can block our credit cards should these be lost...
I might be missing something here, but it seems to make the future computers to be really power hungry. Are we sure this is not a waste of electricity?
I know. That bothers me too, to think that we'd have all these computers churning bitcoins instead of computing gene-folding and whatnot.
However, you could argue that mining for gold or diamonds is even worse. You ruin the land with strip mining, you get "conflict diamonds" responsible for a lot of human suffering and at the end of the day you just have more precious useless metal that you store in a vault.
That is part of the design: there is a point where trying to make a coin of X dollars costs more than X dollars electricity; thus, the money supply becomes constant. The value of the currency will then fluctuate based on the perceived wealth behind the currency.
What happen to the transactions in the block chains that lose out? Let's say a payer paid me by creating a transaction and broadcast it. That transaction got lumped into the current leading block chain. Somehow another block chain gains and wins. The block chain containing the transaction is discarded. What happened to the transaction? Is it discarded as well? Do I just got unpaid?
ok, so is it only me, or this is NO difference for having your own money-printing machine??
I respect the idea and execution and OK it is secure and everything, but if you can use your hands/brain to create work and get paid for that work in currency X, and then use that currency X to sustain yourself (pay bills, food, gas, etc), then the entire government become obsolete!! I am not arguing here whether a mature society needs government or not, I rather say here that there is a government in place (at least US) and this will be taken as a treason and a pure act of terrorism! (terrorism is any attempt to derail a government entity).
I am sure feds/FBI is in it by now! There was a lesson learnt for music industry when P2P blown out and basically the law lost and it is so easy even today to obtain copyrighted music/audio materials. I am SURE federal government will not let entire country economy to be at stake by some P2P currency.
[+] [-] Corrado|15 years ago|reply
[+] [-] ch0wn|15 years ago|reply
* Reverse transactions that he sends while he's in control Prevent some or all transactions from gaining any confirmations
* Prevent some or all other generators from getting any generations"
Source: https://en.bitcoin.it/wiki/Weaknesses#Attacking_all_users
[+] [-] dekz|15 years ago|reply
[+] [-] rfugger|15 years ago|reply
[+] [-] baberuth|15 years ago|reply
http://news.ycombinator.com/item?id=2265491
[+] [-] tedkimble|15 years ago|reply
So throwing a lot of resources at it just makes it that much more difficult to mine, and would seem not to be productive. (edit: well, at least not based on their current value)
[+] [-] frodoslembas|15 years ago|reply
[+] [-] joe_the_user|15 years ago|reply
[+] [-] gojomo|15 years ago|reply
For example, are there drop-in examples for common web-app frameworks? Would it involve the customer cutting & pasting a few long BTC strings between the browser and some separate wallet app?
Would the web-app keep polling a separate Bitcoin service to achieve confirmation/confidence that a payment has gone through?
[+] [-] weavejester|15 years ago|reply
1. A user clicks on a link to buy an item
2. Web application generates a new bitcoin address. This can be done by sending a command to the official BitCoin daemon, or by calling a method on the BitCoinJ Java library.
3. The web application asks the user to send a sum of money to the recently generated address. If the user is using the official Bitcoin client, they'd do this by clicking "Send Coins", then copy-pasting the address and the correct amount of money into the dialog box.
4. The web application then either polls the Bitcoin daemon to see if the transaction has come through yet, or sets up an event handler if the web app is using BitcoinJ. The transaction must obviously be sent to the right address with the right amount of bitcoins.
5. When the transaction has come through, you can now deliver the product to the user. If there's no particular hurry, or if the product is high-value, you may want to wait until a certain number of Bitcoin nodes have confirmed the transaction.
As far as I'm aware, there aren't yet any drop-in plugins for common web frameworks, but it wouldn't be hard to make one.
[+] [-] mike_esspe|15 years ago|reply
[+] [-] thailandstartup|15 years ago|reply
[+] [-] StavrosK|15 years ago|reply
Not to mention that new clients will basically never catch up with all this history. How do they solve this?
[+] [-] mike_esspe|15 years ago|reply
BTW google's implementations (http://code.google.com/p/bitcoinj/) works in this mode.
[+] [-] ced|15 years ago|reply
Isn't that entirely dependent on the rate of technical progress? Furthermore, what happens when the crypto algorithms are broken?
[+] [-] kgo|15 years ago|reply
[+] [-] chevas|15 years ago|reply
[deleted]
[+] [-] markkat|15 years ago|reply
[+] [-] hendi_|15 years ago|reply
[+] [-] bufo|15 years ago|reply
[+] [-] epscylonb|15 years ago|reply
An average joe would not run bitcoin themselves, they would use a bitcoin bank, check out mybitcoin for an early example of such a service.
[+] [-] fourstar|15 years ago|reply
[+] [-] jedaro|15 years ago|reply
[+] [-] jedaro|15 years ago|reply
[+] [-] newgrad|15 years ago|reply
[+] [-] gyom|15 years ago|reply
However, you could argue that mining for gold or diamonds is even worse. You ruin the land with strip mining, you get "conflict diamonds" responsible for a lot of human suffering and at the end of the day you just have more precious useless metal that you store in a vault.
[+] [-] Rubydioms|15 years ago|reply
[+] [-] ww520|15 years ago|reply
[+] [-] wmf|15 years ago|reply
[+] [-] malloreon|15 years ago|reply
[+] [-] daniel1980fl|15 years ago|reply
I respect the idea and execution and OK it is secure and everything, but if you can use your hands/brain to create work and get paid for that work in currency X, and then use that currency X to sustain yourself (pay bills, food, gas, etc), then the entire government become obsolete!! I am not arguing here whether a mature society needs government or not, I rather say here that there is a government in place (at least US) and this will be taken as a treason and a pure act of terrorism! (terrorism is any attempt to derail a government entity).
I am sure feds/FBI is in it by now! There was a lesson learnt for music industry when P2P blown out and basically the law lost and it is so easy even today to obtain copyrighted music/audio materials. I am SURE federal government will not let entire country economy to be at stake by some P2P currency.