All right, I can do the website and the FAQ. I’ll start writing the FAQ now with the questions that I can think of.
That would be great! I added you (dmp1ce) as a dev to the sourceforge project and gave you access to edit the web space and everything.
I have a feature suggestion for the program: a UI tool for creating password protected private keys and saving them into a custom location. Backups of the key will be needed to be safe from losing the control of your coins, and for using the coins on more than one computers. Password protection would be needed to make using your money more difficult for someone who happens to find your key file.
Definitely. This will be an absolutely essential feature once things get going, making it so you can lock your wealth up with strong encryption and back it up more securely than any physical safe. So far I’ve been putting it off in favour of other features because it’s not crucial yet until bitcoins start to have value.
I plan to work on the escrow feature next, which is needed to make actual trades for physical stuff safer and before backing the currency with fiat money can begin.
I’m running a bitcoin node always when my PC is powered on, which means about 24/7. Bitcoin is a great project, and it’s really cool to participate!
Thanks! Right now there are a lot of people on the network who can’t receive incoming connections, so every node that can really helps. Having more helps keep down the “(not accepted)” issue for now until I reduce the chances of that happening in v0.1.6.
I guess one answer for the FAQ should be how to set up your firewall to forward port 8333 so you can receive incoming connections. The question could be something like “what if I have 0 connections” and that could be the answer that it might be because the nodes you can connect with is limited if you don’t set that up.
Here’s a compilation of questions I’ve answered in forums and e-mail that should help you see what questions are frequently asked and some answers I’ve used. It’s not intended to use all or most of the material here, just pick and choose. This is just a dump of everything I’ve answered.
Some issues that we don’t have easy answers for are best not to bring up. Casual users seems content to assume that the system works as stated (which it does), and getting into the design details just opens a can of worms that can’t be answered without a deep understanding of the system. The advanced questions I’ve received have mostly been unique per person and best answered individually.
**** QUESTION AND ANSWER DUMP ****
Any questions used for the FAQ should probably be rephrased.
questions:
The bottom of the UI shows:
Generating 4 connections 4024 blocks 164 transactions
I understand “generating”; I assume I am connected to 4 other nodes; and I know I have recorded 164 transactions (including failed generation attempts). I’m not clear what the “blocks” figure describes. It’s much smaller than the total of all the blocks shown against all my transactions.
It’s the total number of blocks in the block chain, meaning the network’s block chain, which everyone has a copy of. Every Bitcoin node displays the same number and it goes up about every 10 minutes whenever someone generates a block. When you haven’t had it running for a while, once you’re connected it spins up rapidly as it downloads what was generated while you were gone to catch up. I’m not sure exactly how to describe it (that would fit on the status bar in 1 word, maybe 2 words max), any ideas?
The blocks number in the status column next to your transactions is the number of blocks that have come after that transaction. Your transaction is essentially “in” that many blocks.
Satoshi
My best guess - it is the length of the global chain, and the rapid advance at the start is as the software downloads and verifies the preceding blocks in the chain as being valid.
Right. I’m trying to think of more clear wording for that, maybe “%d network blocks” or “%d block chain”.
I’m having an unusual run of (block not-accepted) failures, and thought I’d let you know in case this was of any significance.
What rate of not-accepted did you see? I didn’t see anything unusual on my end. If you had more than, say, 4 in a row, that would be abnormal and probably a loss of network communication. If it’s scattered and less than 25%, just random bad luck. It’s normal and harmless to randomly get some per cent of not-accepted, and of course randomness can sometimes bunch up and look like a pattern.
The idea of an option to View/Hide unaccepted blocks is a good one, as well as View/Hide all generated blocks so you can more easily see incoming transactions. Seeing the unaccepted blocks is just annoying and frustrating. Everyone faces the same rate of unaccepted, it’s just a part of the process. It would probably be best to default to hide unaccepted blocks, so as not to show giving and taking away something that never was, and not show new generated blocks at all until they have at least one confirmation. It would only mean finding out you have a generated block 15 minutes later than normal, and then you still have 119 blocks to go before it matures anyway. This is on the to-do list for v0.1.6.
Satoshi
[note: I have some improvements in 0.1.6 to reduce this problem somewhat, and it’ll also improve when the network is larger]
For some reason your transfer to me shows up as “From: unknown” even though I added you to my address book.
I have a “Generated (not accepted)” line in my transaction list, it seems like an attempt to generate a coin went wrong somehow. Not sure what happened here - presumably my node successfully solved a block but then I went offline before it was sent to the network?
Transactions sent to a bitcoin address will always say “from: unknown”. The transaction only tells who it’s to. Sending by bitcoin address has a number of problems, but it’s so nice having the fallback option to be able to send to anyone whether they’re online or not. There are a number of ideas to try to improve things later. For now, if things work out like the real world where the vast majority of transactions are with merchants, they’ll pretty much always make sure to set up to receive by IP. The P2P file sharing networks seem fairly successful at getting a large percentage of their users to set up their firewalls to forward a port.
I badly wanted to find some way to include a comment with indirect transfers, but there just wasn’t a way to do it. Bitcoin uses EC-DSA, which was essential for making the block chain compact enough to be practical with today’s technology because its signatures are an order of magnitude smaller than RSA. But EC-DSA can’t encrypt messages like RSA, it can only be used to verify signatures.
The “Generated (not accepted)” normally happens if two nodes find a block at close to the same time, one of them will not be accepted. It’s normal and unavoidable. I plan in v0.1.6 to hide those, since they’re just confusing and annoying and there’s no reason for users to have to see them. While the network is still small like it is now, if you can’t receive incoming connections you’re at more of a disadvantage because you can’t receive block announcements as directly.
…So far it has two “Generated” messages, however the “Credit” field for those is 0.00 and the balance hasn’t changed. Is this due to the age/maturity requirement for a coin to be valid?
Right, the credit field stays 0.00 until it matures, then it’ll be 50.00. BTW, you can doubleclick on a line for details.
…understand correctly, there is only one (or maybe a few) global chain[s] into which all transactions are hashed. If there is only one chain recording “the story of the economy” so to speak, how does this scale? In an imaginary planet-wide deployment there would be millions of even billions of transactions per hour being hashed into the chain…
…I found the section on incentives hard to follow. In particular, I’m not clear on what triggers the transition from minting new coins as a reason to run a node, to charging transaction fees (isn’t the point of BitCoin largely to zero transaction costs anyway?). Presumably there’s some human in charge of the system…
…How did you decide on the inflation schedule for v1? Where did 21 million coins come from? What denominations are these coins? You mention a way to combine and split value but I’m not clear on how this works. For instance are bitcoins always denominated by an integer or can you have fractional bitcoins?…
…it’s rare that I encounter truly revolutionary ideas. The last time I was this excited about a new monetary scheme was when I discovered Ripple. If you have any thoughts on Ripple, I’d also love to hear them.
There is only one global chain.
The existing Visa credit card network processes about 15 million Internet purchases per day worldwide. Bitcoin can already scale much larger than that with existing hardware for a fraction of the cost. It never really hits a scale ceiling. If you’re interested, I can go over the ways it would cope with extreme size.
By Moore’s Law, we can expect hardware speed to be 10 times faster in 5 years and 100 times faster in 10. Even if Bitcoin grows at crazy adoption rates, I think computer speeds will stay ahead of the number of transactions.
I don’t anticipate that fees will be needed anytime soon, but if it becomes too burdensome to run a node, it is possible to run a node that only processes transactions that include a transaction fee. The owner of the node would decide the minimum fee they’ll accept. Right now, such a node would get nothing, because nobody includes a fee, but if enough nodes did that, then users would get faster acceptance if they include a fee, or slower if they don’t. The fee the market would settle on should be minimal. If a node requires a higher fee, that node would be passing up all transactions with lower fees. It could do more volume and probably make more money by processing as many paying transactions as it can. The transition is not controlled by some human in charge of the system though, just individuals reacting on their own to market forces.
A key aspect of Bitcoin is that the security of the network grows as the size of the network and the amount of value that needs to be protected grows. The down side is that it’s vulnerable at the beginning when it’s small, although the value that could be stolen should always be smaller than the amount of effort required to steal it. If someone has other motives to prove a point, they’ll just be proving a point I already concede.
My choice for the number of coins and distribution schedule was an educated guess. It was a difficult choice, because once the network is going it’s locked in and we’re stuck with it. I wanted to pick something that would make prices similar to existing currencies, but without knowing the future, that’s very hard. I ended up picking something in the middle. If Bitcoin remains a small niche, it’ll be worth less per unit than existing currencies. If you imagine it being used for some fraction of world commerce, then there’s only going to be 21 million coins for the whole world, so it would be worth much more per unit. Values are 64-bit integers with 8 decimal places, so 1 coin is represented internally as 100000000. There’s plenty of granularity if typical prices become small. For example, if 0.001 is worth 1 Euro, then it might be easier to change where the decimal point is displayed, so if you had 1 Bitcoin it’s now displayed as 1000, and 0.001 is displayed as 1.
Ripple is interesting in that it’s the only other system that does something with trust besides concentrate it into a central server.
Satoshi