PoW: Difference between revisions

From Decimal Wiki
Jump to navigation Jump to search
[checked revision][checked revision]
No edit summary
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{#seo:
{{#seo:
                     |title= PoW
                     |title= PoW — Decimal Wiki
                     |titlemode= append  
                     |titlemode= append  
                     |keywords= PoW
                     |keywords= PoW, Proof-of-Work consensus protocol
                     |description= PoW
                     |description= PoW, Proof-of-Work consensus protocol
                     }}
                     }}
<div class="mikio-article-content">
'''Proof-of-Work''' (proof of work) is a [[consensus]] based on the necessity to perform long—term work (finding a solution to the problem) on the client side. The result of this work can be easily and quickly [[verification|verified]] by the [[server]].
The peculiarity of the calculations used lies in the asymmetry of time spent: they are significant for finding a solution and still too small for verification.
The purpose of Proof-of-Work is to verify that the required calculations were actually performed when creating a new [[block]].
== History ==
For the first time, the description of proof of work was given in the article entitled Pricing via ''Processing or Combatting Junk Mail'' of 1993.
The authors proposed the following idea to combat spam: to access a shared resource, the user must calculate some complex function. The client-side process should be much more complicated than checking the result on the server side. According to the authors, complex calculations do not create obstacles for sending several letters from a user`s computer but the necessity for constant calculations still makes this very resource intensive.
* '''In 1997''', [[wikipedia:Adam Beck|Adam Beck]] launched the ''Hashcash'' project dedicated to spam protection.
* '''In 1999''', the term Proof-of-Work appeared. It was used in the article "Proofs of Work and Bread Pudding Protocols".
* '''On August 16, 2004''', [[wikipedia:Hal Finney|Hal Finney]], in his letter on the [[cypherpunk]]s forum, suggested using reusable proof of work to organize electronic currency. Soon [[wikipedia:Satoshi Nakamoto|Satoshi Nakamoto]] proposed the "[[bitcoin]]" [[cryptocurrency]] in which proof of work protocol is used to significantly complicate double spending.


<div class="mikio-tags">
== Operation principle ==
[[Mining]] of each block represents, in essence, a search for the function solution. The complexity of the task varies to control the frequency of finding blocks. The system is programmed in such a way that the average frequency of finding is one block in 10 minutes. Each block contains a [[hash]] of the previous block, forming a [[chain]].


It is impossible to change the block — you can only create a block at the same height, which will contain the hash of the previous block. To carry out such a process, it is necessary to do work on finding all the previous blocks. The high complexity of this process protects the block chain ([[blockchain]]) from unauthorized access and [[double-spending attacks]].
== Vulnerabilities ==
'''For 11 years of the Bitcoin network's existence, no one has been able to break the system and take advantage of its vulnerabilities.'''


=== 51% attack ===
In the early stages of its existence, Bitcoin, like many other cryptocurrencies, is vulnerable to a "51% attack". If more than a half of the computing power is concentrated in the hands of attacker, then he has the opportunity to confirm only his own blocks, while ignoring others, and this allows him to receive 100% of all bitcoins produced, as well as block any transactions. Alternatively, an attacker can rewrite the entire block generation history starting from a certain point in the past. As a result, he can catch up and overtake the current blockchain chain, making his version valid. As a result, the money stored in users' [[wallet]]s for a long period will disappear.
=== Double spending ===
Double spending is the repeated transfer of the same [[digital assets|assets]]. This attack is divided into several subtypes.
'''Race type attack'''. The attacker commits [[transaction]] X, paying for the purchase of goods, while transferring the same money to another account with transaction Y. If the seller did not wait for confirmation of the transaction and shipped the goods, then he took a big risk: there is a 50 percent chance that transaction Y can get into the true chain.
'''Finney Attack'''. The attacker is trying to find the block that contains his transaction Y. However, as soon as the block is detected, the attacker sends transaction X, after which he buys the goods. The seller waits for the confirmation of transaction X and ships the goods. If a block with transaction Y appears at this moment, then a fork situation is created in which miners must choose one of two blocks to continue the blockchain chain. When concentrating a large amount of computing resources in the hands of an attacker, he can significantly increase the probability of choosing a block with operation Y. Thus, a confirmed transaction is not guaranteed to be valid.
== Disadvantages of PoW ==
Mining using PoW algorithms consumes an extremely large amount of electricity, as it requires a constant increase in computing power. Therefore, the PoW approach is not the best solution in terms of energy efficiency.
'''In 2017, one transaction on the Bitcoin network required the same amount of energy that meets the needs of a family consisting of three people and living in a small one-story house for five and a half days.'''
The results of calculating hash functions are not needed anywhere except in the network itself. Since the advent of technology, the community has been trying to come up with a way to direct all the computing resources of the network to solving some useful mathematical or industrial problem, but it has not been possible to implement it in its pure form.
Attempts to get rid of the disadvantages of PoW have led to the emergence of PoS and numerous hybrid variants.


</div>
== See also ==
<span id="pow"></span>
* [[PoS]]
= PoW =
* [[DPoS]]
 
<div class="level1">
[[Category:Commoninfo]]
 
[[Category:Consensus protocols]]
'''Proof-of-Work (доказательство работы)''' — консенсус, основанный на необходимости выполнения длительной работы (нахождения решения задачи) на стороне клиента, результат которой легко и быстро проверяется на стороне сервера.
 
Особенность применяемых вычислений заключается в асимметрии затрат времени: они значительны на нахождение решения и весьма малы для проверки.
 
Назначение Proof-of-Work — удостоверить, что требуемые вычисления действительно были осуществлены при создании нового блока.
 
 
</div>
<span id="istorija"></span>
= История =
 
<div class="level1">
 
Впервые требование доказательства выполнения работы приведено в статье '''Pricing via Processing or Combatting Junk Mail''' 1993 года.
 
Авторы предложили следующую идею для борьбы со спамом: для доступа к общему ресурсу пользователь должен вычислить некоторую сложную функцию. Процесс на стороне клиента должен быть гораздо сложнее, чем проверка результата на стороне сервера. По предположению авторов, сложные расчёты не создают препятствий для отправки нескольких писем с компьютера пользователя, но необходимость постоянных вычислений делает отправку спама очень ресурсоёмкой.
 
'''В 1997''' году Адам Бэк запустил проект Hashcash, посвящённый защите от спама.<br />
'''В 1999''' году появляется термин Proof-of-Work — использован он был в статье Proofs of Work and Bread Pudding Protocols.<br />
'''16 августа 2004''' года Хэл Финни в своём письме на форуме шифропанков предложил использовать многоразовое доказательство выполнения работы для организации электронной валюты. Вскоре Сатоси Накамото предложил криптовалюту '''биткоин''' , где доказательство выполнения работы использовано для значительного усложнения двойного расходования.<br />
 
 
 
</div>
<span id="princip_raboty"></span>
= Принцип работы =
 
<div class="level1">
 
Майнинг каждого блока, по сути, является, поиском решения функции. Сложность задачи варьируется для контроля частоты нахождения блоков. Система запрограммирована таким образом, чтобы частота нахождения в среднем составляла один блок в 10 минут. Каждый блок содержит хеш предыдущего блока, образуя цепь. Изменить блок невозможно — возможно лишь создать блок на той же высоте, который будет содержать в себе хеш предыдущего блока. Для проведения такого процесса необходимо проделать работу по нахождению всех предыдущих блоков. Высокая сложность этого процесса защищает цепочку блоков (блокчейн) от несанкционированного доступа и атак типа «двойная трата».
 
 
</div>
<span id="ujazvimosti"></span>
= Уязвимости =
 
<div class="level1">
 
''За 11 лет существования сети Bitcoin никто не смог сломать систему и воспользоваться её уязвимостями.''
 
 
</div>
<span id="ataka_51"></span>
=== Атака 51% ===
 
<div class="level3">
 
На ранних этапах существования Bitcoin, как и многие другие криптовалюты, уязвим для «атаки 51%». Если в руках злоумышленника находится больше половины всех вычислительных мощностей в сети, то у него появляется возможность подтверждать только свои блоки, при этом игнорируя чужие, что позволяет ему получать 100% всех производимых биткоинов, а также блокировать любые транзакции. Как вариант, атакующий может переписать всю историю генерации блоков, начиная с определённого момента в прошлом. В результате он может догнать и обогнать текущую цепочку блокчейна, сделав свой вариант валидным. Как итог — деньги, хранящиеся на кошельках пользователей на протяжении продолжительного периода, пропадут.
 
 
</div>
<span id="dvojnoe_rasxodovanie"></span>
=== Двойное расходование ===
 
<div class="level3">
 
Двойное расходование — повторная передача одних и тех же активов. Данная атака делится на несколько подтипов.
 
'''Атака типа «гонки»''' Злоумышленник совершает транзакцию X, оплачивая покупку товара, одновременно переводя эти же деньги на другой свой счёт транзакцией Y. Если продавец не стал ждать подтверждения транзакции и отгрузил товар, то он пошёл на большой риск: есть 50-процентная вероятность, что транзакция Y может попасть в истинную цепочку.
 
'''Атака Финни''' Злоумышленник пытается найти блок, который содержит его транзакцию Y. Однако, как только блок обнаруживается, атакующий отправляет транзакцию X, после чего он покупает товар. Продавец дожидается подтверждения транзакции X и отгружает товар. Если в этот момент появляется блок с транзакцией Y, то создается ситуация развилки (форк), в которой майнеры должны выбрать один из двух блоков для продолжения цепочки блокчейна. При сосредоточении большого количества вычислительных ресурсов в руках злоумышленника он может значительно увеличить вероятность выбора блока с операцией Y. Таким образом, подтверждённая транзакция не является гарантированно валидной.
 
 
</div>
<span id="nedostatki_pow"></span>
= Недостатки PoW =
 
<div class="level1">
 
Майнинг с применением PoW-алгоритмов тратит чрезвычайно много электроэнергии, так как требует постоянного наращивания вычислительных мощностей. Поэтому PoW-подход является не лучшим решением с точки зрения энергоэффективности.<br />
 
 
''В 2017 году на одну транзакцию в сети Bitcoin требовалось такое же количество энергии, которое обеспечивает нужды семьи, состоящей из трёх человек и проживающей в небольшом одноэтажном доме, в течение пяти с половиной дней.''<br />
 
 
Результаты вычисления хеш-функций нигде, кроме как в самой сети, не нужны. С момента появления технологии сообщество пыталось придумать способ направить все вычислительные ресурсы сети на решение какой-либо полезной математической или промышленной задачи, но в чистом виде это не удалось реализовать.
 
Попытки избавиться от недостатков PoW привели к появлению PoS и многочисленных гибридных вариантов.
 
 
</div>
<div style="clear:both">
 
 
 
</div>
 
</div>
  [[Category:Commoninfo]]

Latest revision as of 15:11, 2 February 2024

Proof-of-Work (proof of work) is a consensus based on the necessity to perform long—term work (finding a solution to the problem) on the client side. The result of this work can be easily and quickly verified by the server.

The peculiarity of the calculations used lies in the asymmetry of time spent: they are significant for finding a solution and still too small for verification.

The purpose of Proof-of-Work is to verify that the required calculations were actually performed when creating a new block.

History

For the first time, the description of proof of work was given in the article entitled Pricing via Processing or Combatting Junk Mail of 1993.

The authors proposed the following idea to combat spam: to access a shared resource, the user must calculate some complex function. The client-side process should be much more complicated than checking the result on the server side. According to the authors, complex calculations do not create obstacles for sending several letters from a user`s computer but the necessity for constant calculations still makes this very resource intensive.

  • In 1997, Adam Beck launched the Hashcash project dedicated to spam protection.
  • In 1999, the term Proof-of-Work appeared. It was used in the article "Proofs of Work and Bread Pudding Protocols".
  • On August 16, 2004, Hal Finney, in his letter on the cypherpunks forum, suggested using reusable proof of work to organize electronic currency. Soon Satoshi Nakamoto proposed the "bitcoin" cryptocurrency in which proof of work protocol is used to significantly complicate double spending.

Operation principle

Mining of each block represents, in essence, a search for the function solution. The complexity of the task varies to control the frequency of finding blocks. The system is programmed in such a way that the average frequency of finding is one block in 10 minutes. Each block contains a hash of the previous block, forming a chain.

It is impossible to change the block — you can only create a block at the same height, which will contain the hash of the previous block. To carry out such a process, it is necessary to do work on finding all the previous blocks. The high complexity of this process protects the block chain (blockchain) from unauthorized access and double-spending attacks.

Vulnerabilities

For 11 years of the Bitcoin network's existence, no one has been able to break the system and take advantage of its vulnerabilities.

51% attack

In the early stages of its existence, Bitcoin, like many other cryptocurrencies, is vulnerable to a "51% attack". If more than a half of the computing power is concentrated in the hands of attacker, then he has the opportunity to confirm only his own blocks, while ignoring others, and this allows him to receive 100% of all bitcoins produced, as well as block any transactions. Alternatively, an attacker can rewrite the entire block generation history starting from a certain point in the past. As a result, he can catch up and overtake the current blockchain chain, making his version valid. As a result, the money stored in users' wallets for a long period will disappear.

Double spending

Double spending is the repeated transfer of the same assets. This attack is divided into several subtypes.

Race type attack. The attacker commits transaction X, paying for the purchase of goods, while transferring the same money to another account with transaction Y. If the seller did not wait for confirmation of the transaction and shipped the goods, then he took a big risk: there is a 50 percent chance that transaction Y can get into the true chain.

Finney Attack. The attacker is trying to find the block that contains his transaction Y. However, as soon as the block is detected, the attacker sends transaction X, after which he buys the goods. The seller waits for the confirmation of transaction X and ships the goods. If a block with transaction Y appears at this moment, then a fork situation is created in which miners must choose one of two blocks to continue the blockchain chain. When concentrating a large amount of computing resources in the hands of an attacker, he can significantly increase the probability of choosing a block with operation Y. Thus, a confirmed transaction is not guaranteed to be valid.

Disadvantages of PoW

Mining using PoW algorithms consumes an extremely large amount of electricity, as it requires a constant increase in computing power. Therefore, the PoW approach is not the best solution in terms of energy efficiency.

In 2017, one transaction on the Bitcoin network required the same amount of energy that meets the needs of a family consisting of three people and living in a small one-story house for five and a half days.

The results of calculating hash functions are not needed anywhere except in the network itself. Since the advent of technology, the community has been trying to come up with a way to direct all the computing resources of the network to solving some useful mathematical or industrial problem, but it has not been possible to implement it in its pure form.

Attempts to get rid of the disadvantages of PoW have led to the emergence of PoS and numerous hybrid variants.

See also