Actually there are no addresses at the protocol level.
- snip -
I still do not understand how it checks whether the address exists.
It doesn't.
There are
no addresses at the protocol level. (I thought you said you wanted to understand this at the "code level".) If you want to understand this at the code level, then you need to understand that the code does not check whether ay address exists. At the user interface level any well written wallet will check to make sure that the address you are sending to is formatted correctly. After that the "address" is converted to specific script and the script is used in the transaction.
Maybe initially it makes some pending transaction and only after that it's possible to build the blocks including this already pending transaction?
What? No. Just no. Stop saying "Maybe" and then inventing your own useless idea about how it doesn't work. That is not helping you understand and is wasting my time. Please re-read the multiple times that I have explained to you that
there are no addresses at the protocol level.
Also, we were talking about DDos attack and you said that a node will simply drop connection with another node if it finds too many incorrect messages.
Imagine that or bot can change it's IP address using the list of the proxies, etc. So after connection is dropped, the node will change it's IP and will try to connect to the network again and continue sending the wrong messages. Aventually the network would stop. Right?
No. The bot doesn't connect to every peer on the entire network. It only connects to a limited number of nodes. It can create some annoyance for those specific nodes by ip hopping, but since those nodes will refuse to relay anything they receive from the bot, it won't effect the rest of the network. Eventually, the nodes being annoyed will simply hard code their connections and stop accepting new connections from any other ip.
If it is a valid solution? Then yes. However, it is not possible for you to have the answer to any block without first expending the effort required to find that solution. This is why the hash is called a proof of work.
This thesis is correct only if we assume that from the cryptographical point of view the used algorithm is unbreakable. So this is nothing but the assumption.
Correct. Bitcoin is based on the best understanding of cryptography at the time. If any of the cryptographic functions are later found to have any weaknesses, then those functions will be replaced with newer and more secure functions. Of course to effect mining, the SHA256 function will have to be
VERY broken. Small weaknesses, or even very big weaknesses will not prevent SHA256 from filling the necessary need (which is why md5 would work fine for Bitcoin if we wanted to use it).
No. Alice includes the fee in her transaction when she creates the transaction. Bob includes the value of that fee in the block reward when he chooses her transaction and creates the block that he will work on.
So, if my understanding is correct, Bob includes into the block all the transactions, then the fee related transactions for himself, then some special transaction called "block reward".
Correct.
And then if he finds the hash, he convince the others that he earned 25 BTC as a reward, N BTC as the fees, and that the other transactions are valid.
He doesn't "convince" anybody of anything. He sends the block to all the peers that are connected to him. Each of those peers then verifies that that the block only pays a reward that is less than or equal to the 25 BTC subsidy plus the fees. Each of those peers also verifies that every transaction in the block is valid. Peers do not trust Bob at all. They always verify everything themselves.
I'm just pointing out that it would be more accurate for your pseudo-code to use the following function instead:
I could if I knew I'm talking to IT guy, but the topic is read not necessarily by IT guys, so I'm trying to make it as simple as possible.
This is the "Development & Technical Discussion" section of the forum. You are talking to IT guys (I'm not so sure that I'm talking to an IT guy though). You didn't just make it simple, you made it wrong. I am correcting you because you claim that you want to understand.
I've already explained to you multiple times that the block subsidy is paid to the miner in a special transaction in the block.
Yes, you did. If I wanted to understand it only on the high level then that explanation would be enough. But I want to understand it on the low level that is why I asked how this rewarding transition works. Because from your initial explanation it looked like there is just a function that rewards anybody who calls this function.
Yes, there is a function when creating a block that creates the block reward transaction
in that block for anybody that calls that function. You can change that function if you want, but if you do then your
block will be invalid and nobody will accept it.
If your transaction is a larger value, then the only incentive you have to include a fee is to encourage miners to choose your transaction instead of someone else's. You have the option of paying nothing, but then you are depending on the charity of generous miners to include your transaction in their block. It is generally a good idea to include a small fee if you want your transaction to be included in the next block.
I see. So now it comes to paying for priority of your transitions. I did not see how it works, so I presume there is an option where you can select whether you want to pay for your transition or not and if you pay, there is a field where you can specify how much you want to pay. Right?
It depends on the wallet software you are running. Some wallets allow you to adjust the fee, others have a hard-coded minimum fee and let you increase the fee if you want, and then some are hard-coded to specific fee rules and don't allow the user any control at all.
Yes, this is exactly what I said. Eventually one of the miners will be first. In your example that "eventual" time was when alt block 3 was solved.
This is a strange solution then. Because there is a split and one part of the network updated their data according to the first branch, and the second part of the members updated their data according to the second branch. Eventually they might resolve the longest branch and re-update their data.
Correct. This is the distributed consensus mechanism that Satoshi "discovered". This is the method that Bitcoin uses to solve the Byzantine Generals problem. If you have a better way to arrive at a distributed consensus, then you can build a better cryptocurrency. At the moment, nobody has ever discovered a better way to arrive at a consensus in a distributed (non-centralized) manner. Fortunately, the difficulty on solving blocks is maintained at a high enough level and the hash output is random enough that orphans a a minor annoyance and not a serious problem.
But it means that all the transactions from the first branch are now considered as invalid
No. Not all the transactions. Most of the transactions that are in the first branch were also in the second branch, therefore they remain confirmed. The remaining few transactions are not "invalid", they are simply "unconfirmed". They can then be confirmed again in a future block in the second branch. The only transactions from the first branch that would be "invalid" would be transactions where BOTH of the following occur:
- A transaction is included into a block in path 1
- A competing transaction that spends at least one of the same previously unspent outputs is included into a block in path 2
Most well written software keeps track of the outputs that it spends, and therefore it isn't possible for the average user to accidentally create this situation. If an attacker had enough control over the network and mining, they might be able to accomplish this attack. This is most commonly considered to be a threat if a single entity acquires more than 50% of all the total network hash power, and it often called a "51% attack". This is a well known risk in the protocol design.
and the work of the miner from the first branch is also considered as invalid.
Correct.
This is the reason that the protocol does not allow users to spend block rewards until there are at least 100 more blocks added to the chain.
Ok, here's the solution comes…
The only problem: how do you separate the money obtained as reward from the money you have in your wallet?
Any well written wallet will keep track of these outputs for you and let you know when they are spendable. At the code level, the code can keep track of which block the output came from and then compute how many more blocks have been added to the chain.
This is a mechanism to prevent collisions between two different cryptocurrency networks.
So this is a kinda id for Bitcoin currency.
Yes.
What means that it's also one of the options for DDos attack.
I don't think so. You'd have to explain what you mean better.
Cryptogrphically secure hashes are based on math that is easy to do in one direction and VERY difficult and time consuming to do in the opposite direction.
But
still possible, especially if you have enough resources or if you control the most of the resources or if you make the others to separately search for some "solutions" helping you to find some other solution.
No. When I say
VERY difficult, what I mean is difficult
beyond any possibility with the current understanding of mathematics in the world.
I don't do cryptanalysis as a part of my work, so I can't specify the exact ways of breaking SHA256
Clearly.
but it's "strength" is only the assumption.
An assumption established by significant amounts of study and years of testing in many real world situations.
This is not true. I can get a random number by rolling dice, or shuffling a deck of 52 playing cards, or any of dozens of other methods if I like.
This is NOT true. It's not random and it can be calculated. If your dice has only 6 options, the probability of your dice will be 1/6; If you have 2 dices with 6 options in each then your probability is only 1/36;
I don't think you understand the difference between probability and randomness. I don't have the time or inclination to teach you that difference. You are welcome to either educate yourself or to maintain any flawed believe you like.
If you use 52 cards then the probability of 1 card is only 1/52 if you take 2 cards from the deck of 52 cards then you probability is 1/2652 which is a very and very easy number from brutforce.
And if I deal out the entire deck of well shuffled cards? I'll give you a hint, it's less than 1 / (8 X 10
67)
Such a random number is NOT "a very and very easy number from brutforce".
And very often what you think is random is not random at all and statistically will be repeated.
It is true that many people misunderstand the concept of random and that what they think is random actually is not. You seem to be one of those people.
This is not true. Modern random number generators can use non-deterministic input from multiple sources to generate a random number.
This is not true again. I wrote earlier.
You wrote wrongly. Your understanding of random number generators seems to have stopped some time in the 1980's. Computers have advanced beyond that.
You either didn't understand what you read, or you read something from someone that didn't understand what they were writing.
I perfectly understood what I read.
Then you read some false information.
Some1 who knew about the "bug" was able to read all the "encrypted" traffic in the internet from March 2012 when the first version OpenSSL 1.0.1 was released.
No. They weren't.
Some readers of that news even wrote that with such the "bug" you can kneel any country.
They were either wrong or exaggerating.
I told you already, this is the "Technical Discussion" section of the forum. If you continue to try to discuss non-technical concerns, then I will consider you a troll and mark your userID for "ignore". You will receive no further assistance from me in that case.
Is "NSA" a forbidden word? Why it makes you so nervous? Come on, you act like you work for them and of course you don't
- snip -My friend, why are you so nervous? Is "pentagon" another forbidden word?
- snip -My friend, you specified that I have paranoia, so as a doctor you made the diagnosis over the internet which is absolutely amazing! And why can't I ask you about this? - isn't it the diagnosis you addressed to me? I care a lot about my health, so I could not help from asking you, a doctor, about my health. Especially taking into the account that it's very easy: I don't have to come to your clinic, you do the job remotely over the internet. It's amazing.
- snip -And surely you think so because I mentioned 2 forbidden words: "NSA", "Pentagon" and the idea that FRS and NSA are behind the bit coin
![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
)) I expect the bunch of your colleagues with the new diagnosis now
![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
))) the propaganda machine can't take it so easily!
Plonk!