top | item 2454651

How Bitcoin Works

156 points| kam | 15 years ago |en.bitcoin.it | reply

50 comments

order
[+] Corrado|15 years ago|reply
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?
[+] ch0wn|15 years ago|reply
"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"

Source: https://en.bitcoin.it/wiki/Weaknesses#Attacking_all_users

[+] dekz|15 years ago|reply
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.
[+] rfugger|15 years ago|reply
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.
[+] tedkimble|15 years ago|reply
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)

[+] frodoslembas|15 years ago|reply
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.
[+] joe_the_user|15 years ago|reply
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...
[+] gojomo|15 years ago|reply
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?

[+] weavejester|15 years ago|reply
The process goes something like this.

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.

[+] thailandstartup|15 years ago|reply
"We also accept Bitcoin. Please e-mail to arrange payment via this method."
[+] StavrosK|15 years ago|reply
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?

[+] ced|15 years ago|reply
The last block that will generate coins will be block #6,929,999. This should be generated around year 2140.

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
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.
[+] markkat|15 years ago|reply
I think a flattr like service that uses Bitcoins would be great. It might be a good way to increase circulation too.
[+] hendi_|15 years ago|reply
There is one service, at least similar to flattr: www.youtipit.org
[+] bufo|15 years ago|reply
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...
[+] epscylonb|15 years ago|reply
A large scale bitcoin economy would not look too different to the average user than the current economy does.

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.

[+] newgrad|15 years ago|reply
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?
[+] gyom|15 years ago|reply
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.

[+] Rubydioms|15 years ago|reply
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.
[+] ww520|15 years ago|reply
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?
[+] wmf|15 years ago|reply
You'd resend the transaction and it would get included in a later block.
[+] malloreon|15 years ago|reply
Do they at least look like tulips?
[+] daniel1980fl|15 years ago|reply
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.