Technical clarifications of Bitcoin
2010 Jun 10
See all posts
Technical clarifications of Bitcoin @ Satoshi Nakamoto
- Author
-
Satoshi Nakamoto
- Email
-
satoshinakamotonetwork@proton.me
- Site
-
https://satoshinakamoto.network
nixoid
Technical clarifications
June 10, 2010, 08:38:13 PM
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 .
- 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?
- Do i need to download whole network transactions log to be able to
validate received coins?
- 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.
- Which data exactly passed between 2 nodes during transaction? (or
just show me place in source code where to look)
- Can somebody please write more details about transaction fee: why is
it needed, how and in which cases it's used and so on.
- 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).
- 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.
lachesis
June 11, 2010, 01:23:48 AM
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!
- 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.
- You do need the whole transaction log to validate transactions. At
the moment it comes to something like 25MB.
- I'm not sure about this one.
- This one either, sorry.
- 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.
- 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.
- 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%.
Gavin Andresen
June 11, 2010, 01:34:11 AM
Quote from: nixoid on June 10, 2010, 08:38:13 PM
- 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.
- 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.
- 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)
- Which data exactly passed between 2 nodes during transaction? (or
just show me place in source code where to look)
- 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.
- 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.
- 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)?
QuantumMechanic
June 12, 2010, 02:11:15 AM
- 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.
sirius
June 13, 2010, 10:14:19 AM
Quote from: nixoid on June 10, 2010, 08:38:13 PM
- 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.
Satoshi Nakamoto
June 14, 2010, 10:21:55 PM
- Nothing, if sending by bitcoin address
- It is decentralised. After you have connected to the network the
first time, you no longer need IRC.
Technical clarifications of Bitcoin
2010 Jun 10 See all postsSatoshi Nakamoto
satoshinakamotonetwork@proton.me
https://satoshinakamoto.network
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 .
Thanks for you answers.
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!
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.Theoretically, no, but the code to do lightweight validation hasn't been written.
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)
Dunno.
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.
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)?
I second that one. My fear is that the transaction fee won't scale nicely. Hopefully this is unfounded.
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.