BitcoinTalk

Technical clarifications

Technical clarifications

Hi people. I'm interested in decentralized currency and going to either participate in development of this one or develop my own version. Before making a decision i want to clarify  few technical aspects, which is not clear from documentation. Partially this is just because english is not my native language, but anyway Smiley.

0) Is it necessary to run a node if i want to have a wallet? Is it necessarily attached to some exact node or i can keep my wallet on flash drive for example and use it with any node? Where and in which form my account balance is stored?
1) Do i need to download whole network transactions log to be able to validate received coins?
2) How user protected from potential situation when some node is hacked(or modified) and using his id (public key) to send money from his account? It looks possible when everything is sychronyzed between everybody.
3) Which data exactly passed between 2 nodes during transaction? (or just show me place in source code where to look)
4) Can somebody please write more details about transaction fee: why is it needed, how and in which cases it's used and so on.
5) Is there any any plans on decentralizing node list (i have figured out from irc that bitcoin is currently not really decentralized, because nodes getting in touch by joining irc channel on freenode).
6) Do i correctly understand that after some point in time nobody will have ability to generate new coins? we'll just use fixed amount of existing ones.

Thanks for you answers.

Re: Technical clarifications

Hello Nixoid. I'll answer what I can. Everyone else, feel free to jump in and help, or to correct me if I have something wrong!

0) Yes and no. When people speak of a node here, they usually mean a generating node. You can have a wallet without generating coins, but you must have the software installed and running to make and receive transactions. You can, however, move your wallet between computers / accounts as long as you only keep one version of it. Otherwise, Bitcoin might try to spend the same coins twice. Your use case (on a flash drive) would be fine.
1) You do need the whole transaction log to validate transactions. At the moment it comes to something like 25MB.
2) I'm not sure about this one.
3) This one either, sorry.
4) At the moment, there is no transaction fee (I think). There is just support for one in the source code. At some point in the future, the transaction fee will be used to replace "mining" bitcoins as an incentive to run a node. Also, a transaction fee might be used to insure that other nodes accept your blocks.
5) I'm not sure what sirius's plans are, but I would like to decentralize this very much. I think IRC is one of Bitcoin's Achilles heels at the moment.
6) The rate of generation asymptotically approaches zero. About every 4 years, the number of coins created by each new block is halved. In roughly 10-11 years, each new block will generate 6.25 coins for the miner (instead of 50 today). At some point, transaction fees will be implemented to replace generation as the incentive to supply your bandwidth acting as a node. The idea is that the fee will be < 0.5%.

Re: Technical clarifications

I'll try to answer what I can:

0) Is it necessary to run a node if i want to have a wallet? Is it necessarily attached to some exact node or i can keep my wallet on flash drive for example and use it with any node? Where and in which form my account balance is stored?
You either have to run a node or trust somebody else (like MyBitcoin.com) to keep a wallet for you.

Your account balance is stored in a Berkeley DB file called 'wallet.dat' (what directory depends on your operating system; on my Mac it is ~/Library/Application Support/Bitcoin/wallet.dat, on linux it is ~/.bitcoin/wallet.dat, not sure about PCs).

The only application that can read wallet.dat is the bitcoin code, and the database structure isn't documented anywhere besides the bitcoin C++ source code.
Quote
1) Do i need to download whole network transactions log to be able to validate received coins?
Theoretically, no, but the code to do lightweight validation hasn't been written.
Quote
2) How user protected from potential situation when some node is hacked(or modified) and using his id (public key) to send money from his account? It looks possible when everything is sychronyzed between everybody.
Satoshi is planning on encrypting the wallet database, so you'd need to enter a password to read it.  (and they need to get your private keys to generate transactions-- those are what are stored in the wallet.dat)
Quote
3) Which data exactly passed between 2 nodes during transaction? (or just show me place in source code where to look)
4) Can somebody please write more details about transaction fee: why is it needed, how and in which cases it's used and so on.
Dunno.
Quote
5) Is there any any plans on decentralizing node list (i have figured out from irc that bitcoin is currently not really decentralized, because nodes getting in touch by joining irc channel on freenode).
There's another thread about this in these forums; maybe we should start a "Satoshi's TODO list" thread and get folks to volunteer to help out.
Quote
6) Do i correctly understand that after some point in time nobody will have ability to generate new coins? we'll just use fixed amount of existing ones.
Fewer and fewer coins will be created over the next N years (where N is-- what, 20?).  That's a feature, not a bug...

RE: developing your own version: are you thinking of creating a second bitcoin implementation that is compatible with the existing C++ one  (good idea, in my opinion)?  Or creating a similar-but-not-the-same system (bad idea, in my opinion)?

Re: Technical clarifications

Quote
4) Can somebody please write more details about transaction fee: why is it needed, how and in which cases it's used and so on.

I second that one.  My fear is that the transaction fee won't scale nicely.  Hopefully this is unfounded.

Re: Technical clarifications

4) Can somebody please write more details about transaction fee: why is it needed, how and in which cases it's used and so on.

Transaction fee is needed to give an incentive to generate blocks after many years from now, when the block value has grown low. Also, if many nodes stop recording transactions into the blocks they generate (because of the small generation speed benefit gained), you can apply transaction fee as an incentive.

There will probably always be nodes that include your transactions into their blocks for free, but you might have to wait for a few blocks if many nodes don't.

Re: Technical clarifications

3) Nothing, if sending by bitcoin address
5) It is decentralised.  After you have connected to the network the first time, you no longer need IRC.