Bitcoin Forum
May 11, 2024, 08:56:05 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Local / Политика / Re: Хазин вычислил, кто стоит за биткоинами on: November 21, 2014, 03:20:31 PM
Вот не пойму я с чего Хазин решил, что долларовая система должна рухнуть. Для хозяев системы она сверхприбыльна. Сами хозяева рушить её не станут, а сил, способных противостоять им после распада СССР - нету.


В то что доллар рухнет никто не сомневается, хазин тут не исключение.
Для продления жизни доллара и так уже устраивали 9-11, сейчас вот еще дополнительно и биткойн.

Долги сша уже не могут быть выплачены в принципе вообще! даже с их печатным станком. Наступит момент когда обязательные платежи по этим долгам превысят то, что имеется у сша. Хотя на самом деле крах доллара произойдет раньше. Собственно многие страны уже активно отказываются от доллара и только за последний год доля доллара в международных расчетах упала более чем в 2 раза и будет падать и далее.
Доллар бы давно уже рухнул если бы Китай и япония не покупали бы облигации сша. В этом плане мотив японии ясен - они пиндосские шестерки и не более. Вопрос в том что останавливает Китай. С одной стороны это товарооборот между Китаем и сша, с другой стороны возможно имеются какие-то закулисные рычаги, в том числе силовые. Вообще же если Китай ждал момента стратегического наступления, то оно уже сейчас - я чувствую это также отчетливо как товарищ бонапарт чувствовал решающий момент для ввода резерва в сражение. Да, Китай понесет экономические потери с падением доллара, но падение доллара именно сейчас гарантирует Китаю стабильный фундамент и преимущества в лидерстве. В противном случае далее будет медленный спад китайского чуда.

2  Bitcoin / Development & Technical Discussion / Re: Bitcoin protocol questions on: November 21, 2014, 12:49:46 PM
Quote
That was the heartbleed bug. It wasn't ALL encryption at all. It was serious though.

Sure, it's impossible to leave such the thing without a back door Smiley))



 

Quote
I must persuade everyone else to change their source code to my new version. If they don't (which they won't), my unearned coins will just be ignored.
My friend, I understand it. And that is why I asked how the protection mechanism works. Because if you reward yourself for finding a solution, then you can easily change the code and reward yourself without doing any work at all.

 

Quote
Actually there are no addresses at the protocol level.  Addresses are a feature of wallet software that makes it easier for humans to work with transactions.  What an address at the user level actually represents at the protocol level is a very specific script.  The script encumbers the output with a specific requirement.  As long as the user meets the requirement of the script in their transaction, then they are allowed to re-assign the value to whatever new output scripts they like.  The software running in full nodes is able to verify that all inputs have satisfied the script requirements and that all outputs are valid scripts.
I still do not understand how it checks whether the address exists. Maybe initially it makes some pending transaction and only after that it's possible to build the blocks including this already pending transaction?

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?

Quote
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.


Quote
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".
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.

Quote
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.

Quote
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.

Quote
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?

Quote
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 memebers updated their data according to the second branch. Eventually they might resolve the longest branch and re-update their data. But it means that all the transactions from the first branch are now considered as invalid and the work of the miner from the first branch is also considered as invalid.

Quote
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?

Quote
This is a mechanism to prevent collisions between two different cryptocurrency networks.
So this is a kinda id for Bitcoin currency. What means that it's also one of the options for DDos attack.

Quote
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. I don't do cryptanalysis as a part of my work, so I can't specify the exact ways of breaking SHA256 but it's "strength" is only the assumption.


Quote
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; 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 very often what you think is random is not random at all and statistically will be repeated.

Quote
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.

Quote
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 Smiley


Quote
I repeat.  Keep your concerns technical, or I will not be responding to you.  This is your last warning.

My friend, why are you so nervous? Is "pentagon" another forbidden word? I just notify the facts: pentagon does not use async methods of encryption because does not consider them as absolutely reliable. Should we also forbid "encryption" word? Why are you trying to limit people's thought?
And of course, I don't force you to respond me and this "blackmail" sounds strange Smiley

Quote
I am The Doctor. Why do you ask?

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.

--------

Quote
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. 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. Some readers of that news even wrote that with such the "bug" you can kneel any country.

----

Quote
I think you guys need to perhaps consider that the OP might just be trolling to waste your time

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)) I expect the bunch of your colleagues with the new diagnosis now Smiley))) the propaganda machine can't take it so easily!





3  Bitcoin / Development & Technical Discussion / Re: Bitcoin protocol questions on: November 20, 2014, 04:37:19 PM
Forgot to mention: I guess it uses OpenSSL? If this is the case then there an interesting thing I read about it: it contained some specially made bug that allowed somebody to read ALL the encoded internet.
4  Bitcoin / Development & Technical Discussion / Re: Bitcoin protocol questions on: November 20, 2014, 04:29:11 PM
Quote
Yes.

The miner should verify all transactions before including them in the block. The miner should only include valid transactions in the block.  If he includes invalid transactions, then any work he does on that block is in vain.

How can you check if address in a transaction is correct? You can of course loop the chains you have on your PC but what if it's a new address? - you can not say whether address exists or not if it conforms the format. No?


Quote
You understood it incorrectly.  The amount of work is determined by the target difficulty.  Finding a hash that is lower than the target takes time.  It is a time consuming task. It doesn't matter how much time it takes. It only matters that the miner performed enough "work" to find such a hash.
I understood your correctly. What I mean is: imagine I have the answers to all of your blocks, I will immediately throw them on the floor once I see your block. I will not consume time for this. Will you still consider such the solution valid?
 

Quote
Miners don't "charge" fees.  The fees are voluntarily paid by the users to encourage miners to confirm their transactions.  Miners choose which transactions they want to confirm and then keep whatever fee the transaction paid.
How it happens?: Alice makes some transaction. Bob is a miner and processes her transition. When transaction is processed, Bob's software sends Alice a message "done". And now Alice's software should automatically reward Bob?
If this is the case, then Alice can modify her software and her software will never send reward to the person who processes.
Also, reward is also a transition. What means that David will process now the reward Alice is trying to send?
And if Alice has to pay Bob for processing  let's say 0.000001 coin then David who is processing this will charge much more from Alice? Or even such the small fee will not be processed at all and Bob will never get reward.
How bit coin protocol resolves such the situation?

Quote
First thing to understand is that the block subsidy isn't ALWAYS 25 BTC.  It is 25 BTC today, but for the first four years it was 50 BTC. Approximately every four years the block subsidy is cut in half and rounded down to the nearest 0.00000001 bitcoins.  In a few more years the block subsidy will shrink to 12.5 BTC.
I know. I mentioned 25 BTC only in order to make my message more clear.


Quote
That being said, the miner can create a block that ONLY pays the block subsidy and does not include any transactions. He will generate less revenue than all the other miners who are also earning transaction fees for their blocks. Since mining is a competitive business, the cost of mining will increase until the most efficient miners are earning just a bit more revenue than their costs.  This will increase the cost of mining for the miner that doesn't include any transactions to the point where it exceeds his revenue.  We already answered this question in the previous post.
I think we have a kinda misunderstanding. I'm trying to understand how it works in the details: in the code.

Because if the code/software (of the miner) has such the function : Create25BTC()
Then you can easily hack this software and write sth like:
while(true) {
Create25BTC()
}
And you don't need any mining since then. You will be rewarding in the amount of 25BTC every microsecond.
But I guess this is not how it works. So there must be some protection mechanism. This is what I'm asking about.

Also talking about the fees: you pay the fee if your transaction is very small. If your transaction is not small you pay nothing.
It means that for a miner it's profitable to pick up the small transactions then.


Quote
Eventually one of the miners will solve their block faster than the other.  This block will then be propagated through the network and all nodes will see that this leg of the chain is now longest.  All nodes will switch over to the longest chain and the shorter chain will be abandoned.
I don't think so. There is no proof of this. Statistically it's very possible that 2 miners would release a new block at the same time and these 2 new blocks will reference to the same previous block. And then the whole network would split.
I read that in this case the porticol considers "the longest road". So in the example:

1<-2….5<-new block1-<new block2
            <-some alt block1<- some alt block 2 <-some alt block 3

It would consider the second road.

But if it does so, then what happens to the money from new block1 and new block2 …?


Quote
Yes. As long as they are both well connected in the network.
I read in the documentation that address has several very strange bytes: called network identifier
but I did not understand much because in the schema there were only 3 options:
Main network 0x00, Test network 0x6f, Namecoin network 0x34
What is this? And is it possible that they specify your geo location/ geo cloud?

Quote
It is well accepted by those that study and understand the hash function that it is very fast and easy to compute the hash and effectively impossible to predict its result without calculating it.  If this is ever false, then the proof-of-work system that bitcoin uses will be broken, and a new proof-of-work mechanism will need to be chosen.
I read the same about the bunch of the previously propagated methods like md5, etc. All of them became hacked.
And every time when somebody hacks a method, a new one immediately gets released.
Every crypto method is based on "random" number. You can get a random number in one of the following ways only:
call for a builtin random function, create your own random function that implements one of the well know algorithm, use some 3rd party component which is the same as option N2, or you should plug a special and expensive physical device.
All the options except the physical device will give you pseudorandom number, not a random. This number can be easily obtained by NSA.
The method also uses async encryption, however for Pentagon it's strictly prohibited to use any async crypto method because they consider that they can be hacked, although officially there is no proof.
Every1 heard a lot about reliable RSA method however, finally it was broken.



Quote
I will not waste time addressing your paranoia.

Are you a doctor?


5  Bitcoin / Development & Technical Discussion / Re: Bitcoin protocol questions on: November 20, 2014, 02:16:30 PM
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?
 

Quote
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.


Quote
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"?


Quote
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?

Quote
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?

Quote
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?


Quote
Quote
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)?

Quote
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?
 


Quote
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?


Quote
Quote
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…

Quote
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?



Quote
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?




6  Bitcoin / Development & Technical Discussion / Re: Bitcoin protocol questions on: November 19, 2014, 07:49:18 PM
DannyHamilton, thanks a lot for answering so many questions. Yes, I indeed have to read the official document. When I created my questions I used some article, that was explaining how bitcoins works but it seems that the article was incorrect.
And I will probably ask other questions when I finish reading, but before I'd like to ask some questions about your answers.

Quote
No.  Only those that are running "full nodes" (which store and share the entire blockchain) have to verify every transaction.  There are lightweight wallets that don't store the entire blockchain, and services that can provide wallets with an interface.
Let's imagine that every1 uses only "full" wallets. Does it mean that if the network includes 1million members, each of them has to verify the transactions of 999,999 members?

Quote
Then they will have created their own alternative coin.  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.
How do you know if their chain completed enough work on the task or not? : I guess there is a time field in the block right?
But what if they do in the following way:
each block has some property "previous_block_id", so schematically it looks sth like this:
1<--2<--3<--4
Imagine that block id number 4 is the latest one in the list. Then, they could simply manually create block with a property previous_block_id =4 and suggest this block to the others.
How can you recognise that this last block is invalid? If has a reference to the previous block which can be verified.

Quote
Yes.  However, most nodes on the network will refuse to accept or relay a transaction with an extremely small amount of bitcoin unless the transaction also pays a transaction fee of at least 0.0001 BTC.  That means the DDOS attack will cost the attacker 1 BTC for every 10,000 transactions that they send.

a) who gets the fee? Let's say Bob sends coins to Alice. David is verifying their transaction. Will David get the fee?
b) So the wallets have some kind of verification section: if (transaction_amount < 0.0001) refuse_transaction() ?
c) What happens to the refused transaction? Will Bob get some notification or he will wait in vain?
d) If some reach person is in charge of the DDOS attack, so he can pay 1 BTC for 10K transaction, or if he uses the minimum amount of the BTC where no fees are charged, then BTC network could be stopped?

Speaking about the fees:
I understand that each transaction has a priority field: a transaction with lots of the money will be implemented first and transaction with small amount of the money will wait for its turn a lot of time, is it correct?
And if every new block is created every 10 mins, does it mean that in order to implement transaction , a sender has to wait at least 10 mins?

Quote
With mining though you are correct that the protocol requires the miner to prove that they have completed a time consuming task.  Once they can provide this proof, they can broadcast the associated block of transactions.
In general terms it's clear but I'm trying to understand how it really works in the world full of hackers.
Bob "takes" a block he wants to "unlock".
a) Bob does not see the transactions in the block? e.g. the transactions are maybe encrypted?
b) Who is this person who gets the proof of Bob that the task was done?
In the case if it's only Bob's mining application that works in the following way:
while(true)
{
        ...
   if (check_key(suggested_key))
           return suggested_key;
}
And nobody else checks Bob's solution, then Bob can easily modify his software. So I guess somebody checks his answer, right?

Quote
 In exchange for this service, the miner gets to include a special transaction that pays him 25 BTC that didn't exist before the block as well as paying him all the transaction fees from all the transactions that are included in the block.

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() ?


Quote
Correct.  Confirmations will not occur unless there is at least one node that is "mining".
So eventually we will come to the point when it will not be profitable to mine. And consequently the network will stop?
unless somebody fully artificially will mine in order to keep the network working

Quote
David's software looks at the list of transactions that are not yet in any block that David's software knows about.  David's softwware chooses which of these unconfirmed transactions it would like to confirm.  It collects all the chosen unconfirmed transactions together into a block and computes a block header that is specific only to that exact list of transactions.  It includes a special transaction that will pay David 25 BTC plus the sum of the transaction fees from all the chosen transactions.

a) There is a public queue with unconfirmed transactions. How David works with these transactions: he only marks them that now he works on them or he removes them from the public queue?
What if David marks/remove the transactions and then turns off his PC, what will happen next with the marked/removed transactions? They will be lost?
b) I understand that each block of transactions has a reference to the previous block.
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 ?

Quote
Correct.  Once one miner broadcasts a valid block, all miners will generally start all over working on a new block.
So, eventually we will come to the point where only some organisation with the most powerful computers is able to confirm the transactions and earn on transactions. Is it Federal Reserve System?

Quote
Every peer on the network keeps their own list of unconfirmed transactions and their own copy of the blockchain.
These lists which each node has, are they equal?

Quote
There is not key.  There is a proof of work that must be accomplished.  If Alice does not complete the appropriate proof of work, then the rest of the network will ignore her invalid block.

But you said that miner creates a block, populates it with the transactions he wants to confirm and "locks" it with some hash and then starts searching for the answer for this hash.
So is it possible that Alice(miner) will create a very easy hash or the hash depends on the included transitions and consequently can not be "adjusted" by Alice?



7  Local / Кодеры / Протокол биткойна - вопросы on: November 18, 2014, 08:24:43 PM
1. Каким образом биткойн кошелек и/или протокол биткойн рассчитывает сколько у меня денег/достаточно ли денег: каждый раз он вынужден пробегать по цепочке blockchain и считать сумму всех транзакцией моего кошелька?

2. сообщение о моей транзакции, как я понимаю, сопровождается моим публичным ключем для подтверждения идентичности. Значит в пакете каждой транзакции биткойнов содержится еще и публичный ключ?

3. проверка получателем, действительно ли отправитель имеет деньги:
Боб не просто идет вперед и принимает сделку. Вместо этого, он передает сообщение Алисы всей сети. Другие члены сети проверяют, имеет ли Алиса этот инфокоин. Если это так, они передают сообщение «Да, Алиса владеет инфокоином 1234567, теперь он может быть передан Бобу».Как только достаточное количество людей распространят этот послание в сети, все обновят свои цепочки блоков, которые будут показывать, что инфокоин 1234567 теперь принадлежит Бобу, и сделка завершена

а) Т.е. если у нас в сети 100тыс человек, то все они проверяют мою транзакцию?
б) что значит "достаточное кол-во людей"? Сколько это?
в) В какой момент эти остальные люди меняют цепочку блоков у себя? : вот кто-то получает запрос на проверку, ок, проверил - совпало и что сразу обновлять? А что если у нескольких других не совпадет?
г) Что случится если в сети появятся ну например 50тыс ботов на 100 тыс реальных пользователей, у которых будет совершенно своя история транзакций?
д) если предположить, что в сети появился миллион или даже 10 миллионов ботов, которые бессмысленно посылают друг-другу минимальную сумму биткойнов, то получим аналог Dos атаки и сеть просто встанет?

4
"Существует способ избежать этой проблемы, используя идею, известную как доказательство правильности работы (proof-of-work). Идея парадоксальна и включает в себя сочетание двух других идей: (1) (искусственно) сделать подтверждение транзакций затратными для пользователей сети в виде компьютерных вычислений; и (2), вознаградить их за помощь проверки транзакций.
...
Дэвид проверяет свою копию цепочки блоков, и видит, что каждая сделка годна. Он хотел бы помочь, отправив новость о годности сделок для всей сети.

Тем не менее, прежде чем сделать это, как часть протокола проверки, Дэвиду требуется решить непростую вычислительную задачу — доказательство правильности работы. Без решения этой задачи, остальная часть сети не будет принимать его проверку сделок."

Таким образом схематично мы имеем некую коробку в которой есть неподтвержденные транзакции и эта коробка закрыта неким шифром, который надо подобрать, прежде чем подтвердить транзакции. Соответственно возникают следующие вопросы:

а) Как я понимаю, подтверждение - это и есть майнинг. А если это так, то в случае, если у нас в сети всего(упростим задачу) 10 пользователей и никто из них не хочет заниматься майнингом, то транзакции там и будут висеть необработанные?
б) Получается что если подтверждает только майнер, то если у нас есть свои 2 бота которые подтвердят сфальсифицированную транзакцию то все ее примут?
в) Если в сети работают 2 майнера, и первый нашел ключ быстрее второго, то второй никакого вознаграждения не получает? т.е. его компьютер продолжает работать в холостую? или там если получит сообщение о том, что кто-то уже нашел ключ, но он прекратит работу, начнет работать над другой задачей и так далее пока не бросит эту затею тк у других компьютеры мощнее?
г) откуда берется вознаграждение за поиск ключа? Получается что в программе майнера стоит простое условие: если результат == ключу то баланс+=25 монет?? Если это так, то ведь ничего не мешает хакнуть такую программу.

д) Кто "создает" и "запечатывает" в коробку транзакции пользователей и "выдумывает" для них ключ?

е) Где вообще хранится эта "коробка" с транзакциями? Если сеть одноранговая, то у нас нет какого-то отдельного места где мы могли бы держать очередь и тп. Или каждый кошелек автоматом создает на каждой машине свою очередь и автоматом инкременирует ее номер после того как она заполнена? В таком случае как они синхронизируют номера для "коробок"?




5) если в цепочке "коробок" появляется разветвление, то берется то, которое длиннее и оно считается правильным.
Как строится цепочка? - пакет имеет id на предыдущий пакет и тд.
В таком случае если злоумышленник сгенерирует более длинную цепочку, то его цепочка и будет считаться правильной, разве нет?







8  Bitcoin / Development & Technical Discussion / Bitcoin protocol questions on: November 18, 2014, 08:14:10 PM
1. How bitcoin wallet knows how much money I have? : it count it on the basis of the bit coin chains or i just uses some variable to keep the info?

2. If I understand it correctly,  every time when I make a transaction, I also send my public key so that the others could verify that it's done by me?
If yes, lets imagine the following situation:

Bob creates bit coin wallet and gets some bit coins.
Alice steals Bob's public key(which is not a secret) and simulates the bit coin message which says that Bob transfers Alice 1 bit coin. She uses Bob's public key to validate it.
Actually here we have 2 situation: a) when Bob's public key was already used in some of the transactions. b) he never used it before.

3.
Verifycation whether a sender has the money:
 
Bob does not just confirms Alice's transaction. Instead he transfers her message to the whole network. The others check whether Alice has the money or not for this transaction. If positive, they send a message "Yes, Alice has the money". The transaction is complete when the necessary number of the members confirm this. And after that, everyones chain list will show that now Bob has 1 coin Alice transferred him.

a) What if we have 100K members or even 1 million, all of them have to verify each other's transaction?
b) what it means "the necessary number of the members"? How many?
d) When the others change the chain list on their PCs? : let's say Bob received a request to verify some transaction. Ok. Done. So should Bob immediately change the chain after that? What if Bob confirms and changes but John does not confirm?
e) What will happen if 50% of the fake members(the bots) would have their own chain list?
f) Imagine that there is a million or even 100 millions of the bots and they send each other some extremely small amount of the bit coin. They do it without any purpose. So it means we get a kinda Dos attack?

4
I understand that "enough number of the members" simply uses the following idea:
Anybody can confirm the transition only in the case if he resolves a "task". And for this job he gets 25bitcoins.
 
So David checks the list of his block chains and sees that transaction is correct. He wants to share the news over the network: the trans action is correct.
But before he does it, as a part of verification task, David must resolve some "task". Without it the others will not consider his confirmation.
Schematically we have a kinda box with unconfirmed transactions. And this box is locked with a key. So the task for David is to find this key to unlock the box and confirm the transactions.
Thus, having the following questions:

 
a) how the others know whether David resolved the task or not?
b) as far as I understand, confirmation is nothing but mining! If so, then in the case if we have let's say only 10 members in the network and none of them mines, we will get the huge list of unconfirmed transactions and this confirmation job will never be done unless one of them will be convinced to start mining?
c)  If so and only a miner can confirm the transactions, then in the case if Alice will confirm the fake transaction everyone will accept it?
d) Imagine we have only 2 miners in the network. The first miner found the key first.Does it mean the second one will not get coins for his job? If so we have a situation that only a miner with the most powerful PC will always earn and consequently the other miners will eventually stop mining.

e) How the miner gets his reward for finding a key? I mean what is the source of this money? :
Is it sth like his mining app simply checks the condition: if result==key then balance+=25 coins?
If so then anybody can hack such the app.

f) Who creates and locks the "box" of transactions and composes a key for the boxes?

g) Where does this box is located? As far as we are talking about a p2p network, there is no special place where we could keep the queue, etc. Or maybe each wallet, on each PC, automatically creates a queue and automatically increments its number after the box is full? Then how they synchronise the work and what if Alice hacked her app and it uses a weak key?


5) In the case if our bin coin chain has a split, the others consider the one which is longer and this "road" is considered as a real one.  We know that each chain has the id of the previous one and so on.
So what if Alice would generate a longer chain?  In this case her chain will be considered as the correct one, no?
 

6) Bitcoin can be decided into lots of the pieces. For example, let's say Alice has 1 bit coin and it's serial number is 123456
Now Alice sends 0.5 bit coin to Bob 
Before this transaction, Bob already had 0.5 bit coin (presuming that even a part of bit coin has a serial number, the serial number of Bob's 0.5 bit coin was 98765)
So now Alice has 0.5 bit coin with a serial number 123456
And Bob has :
   0.5 bit coin with serial number 98765 and 0.5 bit coin with a number 98765 ?
So each member has to keep the huge number of the small pieces instead of merging them?
       





Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!