So the miner places some transactions he wants to confirm into the block. The miner does not know all the addresses.
Imagine that the list of transactions has some invalid address.
What will happen next? The miner who works on finding some solution either confirms or unconfirms all the transactions in the block.
Does it mean he would work in vain?
There is, but it is just used to make sure that the blocks are coming at the right pace.
But earlier you said:
"Since their chain won't have completed enough work on the time consuming task, the rest of the network won't recognize their chain as being valid."
So I understand it as in order to confirm your solution, I should see that you spent 10 mins on it. In the other words: even if you solution is correct, I can not accept it because you did not spent time on it. This is how I understood it.
That depends on the reason for refusal. Most well written wallet software will protect a user from sending transactions that don't meet the well known conditions on the network. The wallet software would in that case refuse to even try to send the transaction and would report to Bob that he is attempting to send a problematic transaction. If Bob writes his own wallet software and doesn't check for the conditions, then his software would wait in vain.
So in the other words, the theory that I can divide 1 coin into the smallest pieces like 0.00000001 and operate with them is nothing but a theory?
And also, in the case of enormous increase of the popularity, the cost will also go up what means that what costs now 0.00000001 will cost more and consequently there will be a need to break the rules…How breaking the rules match "decentralisation"?
Even when sending transactions that are above the minimum amount, there are other fee conditions to make DDOS attacks expensive.
Ok, but what if the hacker will try to send lots of the wrong/incorrect messages/transactions using their own software?
What I mean: they know the structure of the transaction, so they can create such the structure, populate it with some information that does not reflect on their money and broadcast such the transactions. Surely, sooner or later such the transactions will be refused, but if there is a huge stream of such the transactions, they will surely spam the transactions queue of the nodes and the system will stop, is it correct?
miners are encouraged to make when they are deciding which transactions to include
So theoretically we might have the huge-huge list of transactions which none of the miners wants to take? What happens next? These unprocessed transactions will act like a kinda spam?
No. A transaction can be sent immediately. It is then relayed as an "unconfirmed transaction" throughout the network immediately. The recipient is generally likely to receive the "unconfirmed transaction" within a few seconds.
So Alice sends 1 coin to Bob. Initially Bob has 5 coins in his wallet. What Bob's wallet will show in a second after Alice clicked a send button?
Will it show: 5 coins and 1 unconfirmed coin?
so Bob's mining software has some kinda flow:
Stamp_block(){
include_transactions_into_block();
include_25BTC_into_block_forMiner();
}
If this is the case, why Bob can't hack his software and request only include_25BTC_into_block_forMiner() ?
He can, but then he will miss out on all the transaction fees from all the transactions that paid fees. Other miners will get those fees instead in the next block after Bob's. This will result in lower revenue for Bob. Since mining is competitive, it tends to increase in costs until the costs for the most efficient miners are only slightly less than their revenues. As such, Bob will find that his reduced revenue results in his business operating at a loss. He will either need to:
• Continue operating at a loss until he is bankrupt.
• Start including transactions so that he can collect the transaction fees to improve profitability
• Quit mining
Here we have a strange situation.
1) Imagine that for simplicity sake we have only 2 transactions for the block. According to the fee table, a miner has to charge N coins for each of them.
So he starts building the block:
Block block = new Block();
block.transations.Add(trans1);
block.transations.Add(trans2);
What happens next? - he creates 2 additional transactions for the fee?, e.g:
block.transations.Add(trans_fee1);
block.transations.Add(trans_fee2);
And only after that starts doing the calculation work?
2) If Miner's software has such the function/method like include_25BTC_into_block_forMiner() that automatically grants 25 coins to the miner,
then miner does not really care about the fees, he can simply modify his software like this:
while(true)
{
include_25BTC_into_block_forMiner() ;
}
I guess it won't work because there is some kinda protection mechanism. How this mechanism prevents such the miner from modification of his software (not granting a miner 25 coins without doing a real work)?
No. All miners are allowed to simultaneously work on whatever unconfirmed transactions they want to.
I don't understand it.
Let's say we have 5 unconfirmed transitions
trans 1
trans 2
trans 3
trans 4
trans 5
And only 2 miners.
The block size is only 2 transactions.
The first miner picks up trans1 and trans 5
The second miner then picks trans 1 and trans 2
So both of them work on trans 1 too.
The first miner does the job first and releases the new block that includes trans 1 and trans 5
What happens to the second miner? He understands that he worked for nothing and he has to "re-populate" his block again and start all over again?
Peers do not generally remove a transaction from their list of unconfirmed transactions until they see the transaction in a block.
I've just installed the wallet for the very first time and the size of the current transactions is around 25Gb!
So in order to implement the constant check whether some unconfirmed transaction is still unconfirmed or not, I have to loop all the 25Gb?
Or maybe it keeps in memory the confirmed transactions from only some latest period of time and checks only this small list?
So David and Alice are mining and both of them started "building" their blocks. They both know that the id of the last block is 5. What happens next? - they both create a new block with a reference to the block #5 ?
Yes.
But in this case we will have a split of the block chain..
1<-2….5<-new block1-<new block2
<-some alt block1<- some alt block 2
The only solution I see: I can populate the field prev_block_id only when I resolve the work. But in this case this field does not effect on the block hash and I still have a situation that somebody else will release some other block with the same prev_block_id at the same time as me…
I don't understand the question.
Imagine we have 1million members in the network. They are all over the world. Does it mean that when Bob makes transaction somewhere in Africa, Alice who is in China immediately gets this transaction in her list of unconfirmed transactions ? Or maybe the whole network is decided into several clouds and each cloud processes the transactions corresponding to some region assigned to this cloud?
Since it is impossible to predict what the result of a SHA256 hash will be for a given input
This is only the assumption, not a fact. How do you know?
Do you think hundreds thousands guy from NSA would let it go uncontrolled?, having the budget which is around 50% of the total budget of more than 20 spying organizations in the states? What means: saying : our budget is too high, we don't do anything, you can reduce it.
Also: kennedy wanted to control Federal Reserve System (FRS) and they killed him. Do you want to say that the guys would allow somebody to take their "right" to print the money from the air and they would give it to somebody else? To some "uncontrolled" and "decentralised" network?
Do you truly believe this?
Don't you think that they intend to control it from behind of the scene, placing in front the puppies called "enthusiasts" (where only some of them play the role of "enthusiasts")?
Don't you think that this is an attempt to replace dying dollar with a new ether that could allow to get real gold for nothing?