1. Наказание за механизм консенсуса: если майнер обманывает, отправляя несколько блоков, вся ипотечная валюта майнера будет вычтена, а вычислительная мощность хранилища будет очищена и не сможет быть восстановлена.
2. Штраф за ошибку доказательства пространства-времени: если доказательство пространства-времени, представленное узлом, не соответствует соответствующему периоду, будет наложен штраф за ошибку.
3. Непредоставление пространственно-временного доказательства. Если узел не сможет предоставить пространственно-временное доказательство в течение периода доказательства, все залоговые данные будут конфискованы, а вычислительная мощность будет очищена.
4. Штраф за нарушение контракта. Если узел не сможет предоставить услуги хранения в соответствии с требованиями контракта, он будет обязан вернуть плату клиенту и лишиться соответствующего залога за хранение.
Доказательство работы Биткойна должно сводиться к компьютерным вычислениям, то есть математическим задачам. Как построить математическую задачу для реализации доказательства работы? Давайте посмотрим на простой пример.
Предположим, что в классе определенной школы учится только одна девочка по имени Сяохун, а остальные мальчики. Каждый мальчик хочет попросить Сяохуна посмотреть фильм, но только один мальчик может осуществить его желание. Какого мальчика выбрать? В соответствии с принципом справедливости Сяохун должен проверить искренность каждого мальчика. Метод проверки состоит в том, чтобы задать математическую задачу, например, решить уравнение. Тот, кто первым решит уравнение, получит право посмотреть фильм с Сяохуном:
Поскольку не существует фиксированной формулы для решения уравнений высшего порядка, для расчета правильных результатов требуется большой объем вычислений. Этот процесс расчета требует определенного объема работы. Предполагая, что Сяо Мин первым вычислил результат x=2,5, Сяо Хун может просто проверить, верен ли этот результат:
Видно, что решить уравнение сложно, но проверить результаты сравнительно просто. Таким образом, эффективное доказательство работы заключается в том, что процесс расчета очень сложен и занимает определенное время, но процесс проверки относительно прост и может быть завершен практически мгновенно.
Эту задачу также легко решить. Сяохун может отправлять разные уравнения разным мальчикам в зависимости от их номеров. Коэффициент первого члена уравнения — это число. Таким образом, уравнения, которые каждому приходится решать, разные. Решение x=2,5, полученное Сяо Мином, недопустимо для Сяо Цзюня, поскольку число Сяо Цзюня равно 3. Использование результатов Сяо Мина для проверки уравнения Сяо Цзюня не может пройти проверку.
Фактически, если уравнение проверено и принято, Сяохун может напрямую узнать, кто решил уравнение, по первому коэффициенту уравнения. Поэтому бесполезно воровать результаты чужого доказательства работы.
С помощью доказательства работы можно эффективно убедиться в том, что каждый действительно должен был потратить определенное количество времени на вычисления.
В сети Биткойн майнинг майнеров также является доказательством работы. Однако этого нельзя достичь путем решения полиномиальных уравнений, поскольку решение полиномиальных уравнений сложно вычислить людям, но это очень легко сделать для компьютеров. 1 секунда. Выполнено за несколько минут.
Чтобы компьютер реализовал доказательство рабочей нагрузки, необходимо найти алгоритм рабочей нагрузки, который компьютер не сможет рассчитать за короткое время. Этот алгоритм является хеш-алгоритмом.
Изменив заголовок блокаизодининдивидуальныйnonce
Полеизценить,компьютер может рассчитывать различные хеши блоков:
Расчет заканчивается, когда вычисляется определенное значение хеш-функции. По сравнению с другими хешами, этот хэш характеризуется несколькими нулями впереди:
hash256(block data, nonce=0) = 291656f37cdcf493c4bb7b926e46fee5c14f9b76aff28f9d00f5cca0e54f376f
hash256(block data, nonce=1) = f7b2c15c4de7f482edee9e8db7287a6c5def1c99354108ef33947f34d891ea8d
hash256(block data, nonce=2) = b6eebc5faa4c44d9f5232631f39ddf4211443d819208da110229b644d2a99e12
hash256(block data, nonce=3) = 00aeaaf01166a93a2217fe01021395b066dd3a81daffcd16626c308c644c5246
hash256(block data, nonce=4) = 26d33671119c9180594a91a2f1f0eb08bdd0b595e3724050acb68703dc99f9b5
hash256(block data, nonce=5) = 4e8a3dcab619a7ce5c68e8f4abdc49f98de1a71e58f0ce9a0d95e024cce7c81a
hash256(block data, nonce=6) = 185f634d50b17eba93b260a911ba6dbe9427b72f74f8248774930c0d8588c193
hash256(block data, nonce=7) = 09b19f3d32e3e5771bddc5f0e1ee3c1bac1ba4a85e7b2cc30833a120e41272ed
...
hash256(block data, nonce=124709132) = 00000000fba7277ef31c8ecd1f3fef071cf993485fe5eab08e4f7647f47be95c
Принцип доказательства работы майнинга биткойнов заключается в том, чтобы постоянно пытаться вычислить хэш блока до тех пор, пока не будет вычислено определенное значение хеш-функции, которое меньше значения сложности. БиткойниспользовалSHA-256алгоритм Можно рассматривать как создание случайных выходных данных для случайных входных данных.,Например,У нас есть строка
Hello
Сложите число и посчитайте его дваждыSHA-256,В зависимости от количества,Полученный хэш представляет собой совершенно нерегулярное 256-битное случайное число:
hash256("Hello?") = ????????????????????????????????????????????????????????????????
Рассчитано примерно 16 раз,В полученном хеше мы можем обнаружить, что первый бит равен0
хэш-значение,Потому что вероятность того, что первая цифра равна 0, равна 1/16:
hash256("Hello1") = ffb7a43d629d363026b3309586233ab7ffc1054c4f56f43a92f0054870e7ddc9
hash256("Hello2") = e085bf19353eb3bd1021661a17cee97181b0b369d8e16c10ffb7b01287a77173
hash256("Hello3") = c5061965d37b8ed989529bf42eaf8a90c28fa00c3853c7eec586aa8b3922d404
hash256("Hello4") = 42c3104987afc18677179a4a1a984dbfc77e183b414bc6efb00c43b41b213537
hash256("Hello5") = 652dcd7b75d499bcdc61d0c4eda96012e3830557de01426da5b01e214b95cd7a
hash256("Hello6") = 4cc0fbe28abb820085f390d66880ece06297d74d13a6ddbbab3b664582a7a582
hash256("Hello7") = c3eef05b531b56e79ca38e5f46e6c04f21b0078212a1d8c3500aa38366d9786d
hash256("Hello8") = cf17d3f38036206cfce464cdcb44d9ccea3f005b7059cff1322c0dd8bf398830
hash256("Hello9") = 1f22981824c821d4e83246e71f207d0e49ad57755889874d43def42af693a077
hash256("Hello10") = 8a1e475d67cfbcea4bcf72d1eee65f15680515f65294c68b203725a9113fa6bf
hash256("Hello11") = 769987b3833f082e31476db0f645f60635fa774d2b92bf0bab00e0a539a2dede
hash256("Hello12") = c2acd1bb160b1d1e66d769a403e596b174ffab9a39aa7c44d1e670feaa67ab2d
hash256("Hello13") = dab8b9746f1c0bcf5750e0d878fc17940db446638a477070cf8dca8c3643618a
hash256("Hello14") = 51a575773fccbb5278929c08e788c1ce87e5f44ab356b8760776fd816357f6ff
hash256("Hello15") = 0442e1c38b810f5d3c022fc2820b1d7999149460b83dc680abdebc9c7bd65cae
Если мы хотим узнать, являются ли первые две цифры0
хэш-значение,Теоретически необходимо 256 вычислений,потому что00
Вероятность появления162\=256,Фактический расчет 44 раза:
hash256("Hello44") = 00e477f95283a544ffac7a8efc7decb887f5c073e0f3b43b3797b5dafabb49b5
Если мы хотим узнать это раньше3бит есть0
хэш-значение,Теоретически его нужно посчитать 163\=4096 раз.,Фактический расчет 6591 раз:
hash256("Hello6591") = 0008a883dacb7094d6da1a6cefc6e7cbc13635d024ac15152c4eadba7af8d11c
Если мы хотим узнать это раньше4бит есть0
хэш-значение,Теоретически его нужно вычислить более 164\=65000 раз.,Фактический расчет более 67 000 раз:
hash256("Hello67859") = 00002e4af0b80d706ae749d22247d91d9b1c2e91547d888e5e7a91bcc0982b87
Если мы хотим узнать это раньше5бит есть0
хэш-значение,Теоретически его нужно пересчитать 1,65\=1,04 миллиона раз.,Фактический расчет 1,58 миллиона раз:
hash256("Hello1580969") = 00000ca640d95329f965bde016b866e75a3e29e1971cf55ffd1344cdb457930e
Если мы хотим найти хэш-значение, первые 6 бит которого равны 0,Теоретически его нужно пересчитать 1,66\=16,77 миллиона раз.,Фактический расчет 15,58 миллиона раз:
hash256("Hello15583041") = 0000009becc5cf8c9e6ba81b1968575a1d15a93112d3bd67f4546f6172ef7e76
для данноготрудностьизSHA-256:Предположим, мы используемтрудность1Указывает, что первое место должно быть подсчитано1индивидуальный
0
,трудность2Указывает, что необходимо вычислить первые два0
,трудностьNУказывает, что первое место должно быть подсчитаноNиндивидуальный0
,Так,Каждый уровень сложности увеличивается,Сумма расчета увеличится в 16 раз.
Для майнинга Биткойн,Просто сначала укажите значение сложности,И затем продолжайте менятьсяnonce
,Рассчитать блок Хэшируйте до тех пор, пока не будет найден блок ниже заданного значения сложности. Хэш, даже если майнинг прошёл успешно.
Мы используем упрощенный метод, чтобы проиллюстрировать сложность,Например,долженвычислить Вне последовательности17индивидуальный0
началохэш-значение,Майнер сначала определяет предыдущий хэш,Merkle Hash,Timestamp,bits,Затем продолжайте менятьсяnonce
вычислить хеш,до непрерывного17индивидуальный0
началохэш-значение。Мы можем примерно посчитать,17индивидуальныйшестнадцатеричныйиз0
Эквивалентновычислить Понятно1617Второсортный,Требуется примерно 2,9 триллиона вычислений.
17 0 = 1617 = 295147905179352825856 = 2,9 триллиона раз
действительныйизтрудностьоснован наbits
由одининдивидуальныйчиновниквычислитьпублично заявить,Протокол Биткойн требует, чтобы рассчитанное хеш-значение блока было меньше значения сложности.,Этот блок считается валидным:
Difficulty = 402937298
= 0x18 0455d2
= 0x0455d2 * 28 * (0x18 - 3)
= 106299667504289830835845558415962632664710558339861315584
= 0x00000000000000000455d2000000000000000000000000000000000000000000
Уведомление,Чем меньше значение сложности,Объясните значение хеш-функции перед0
тем больше,Тем сложнее посчитать.
Значение сложности сети Биткойн постоянно меняется. Его значение сложности гарантирует, что блок генерируется примерно каждые 10 минут, а значение сложности корректируется каждые 2015 блоков: если среднее время генерации блока составляет менее 10 минут, это означает, что вся сеть. По мере увеличения вычислительной мощности значение сложности также будет увеличиваться. Если среднее время генерации блока превышает 10 минут, это означает, что вычислительная мощность всей сети снижается, и значение сложности также уменьшается. Таким образом, значение сложности будет динамически корректироваться по мере увеличения или уменьшения вычислительной мощности всей сети.
Когда проектировался Биткойн, изначально планировалось корректировать сложность каждые 2016 блоков, то есть раз в две недели. Однако из-за ошибки в первой версии кода фактический период корректировки составлял 2015 блоков.
Поэтому доказательство работы Биткойна в просторечии называют майнингом. в то же время,Все майнеры усердно работают над вычислением хеша следующего блока. Сложность майнинга зависит от процента от общей вычислительной мощности всей сети. Приведите пример,Предположим, что Сяо Мину принадлежит один процент общей вычислительной мощности всей сети.,Так他挖到下одининдивидуальныйблокироватьиз Возможность1%,Или, скорее,,На каждые 100 добытых блоков около 1 добывается мелкими майнерами.
Поскольку текущая вычислительная мощность всей сети превышает 100EH/s,Вычислительная мощность одномашинного процессора составляет всего несколько М, а вычислительная мощность графического процессора — всего 1 ГБ.так,Вероятность успеха майнинга с помощью одной машины практически равна 0. Биткойн-майнинг превратился из ранних процессоров и графических процессоров в майнинг-пул, построенный на специализированных чипах ASIC.
Когда майнер успешно находит новый блок для определенного хеша,Он тут же транслирует блокировку на всю сеть. После того, как другие майнеры получат новый блок,Новые блоки будут проверены,если действительно,Просто добавьте это в Блокчейнхвост。В то же время это показывает, что в этом раунде соревнования по доказательству работы этот майнер победил, в то время как другие майнеры потерпели неудачу. Неудавшийся майнер откажется от блока, который он в данный момент рассчитывает, но еще не завершил, и начнет рассчитывать следующий блок для следующего раунда соревнования по доказательству работы.
Потому что Merkle Hash блокирует все транзакции в этом блоке, а выходной адрес первой транзакции Coinbase в этом блоке является адресом майнера. Данные блока, генерируемые каждым майнером при майнинге, различны, поэтому невозможно украсть чужую рабочую нагрузку.
Общая сумма биткойнов ограничена примерно 21 миллионом биткойнов, а начальная награда за майнинг составляет 50 биткойнов за блок, которая будет уменьшаться вдвое каждые 4 года.
Если каждый из двух майнеров находит действительный блок одновременно, обратите внимание, что эти два блока различны, поскольку транзакции Coinbase различны, поэтому хеш Меркла различен, и хеш блока также различен. Но все они действительны, пока соответствуют значению сложности. Какой блок на данный момент должны получить другие майнеры в сети и добавить в конец блокчейна?
Ответ: это возможно.
Обычно майнеры получают действительные блоки первыми. Поскольку порядок трансляции в сети P2P неясен, возможно, что разные майнеры сначала получат разные блоки. В это время мы говорим, что блок разветвился:
В случае бифуркации
Некоторые майнеры продолжают майнить на зеленой вилке, а некоторые — на синей вилке:
Но в конце концов всегда будет форк, который сначала майнит последующие блоки, потому что Биткойнсеть использует самый длинный форк Алгоритма. консенсуса, зеленая вилка побеждает, синяя вилка закрывается, и все майнеры во всей сети продолжают майнить по самой длинной цепочке.
Поскольку Блокчейн, хотя данные в конечном итоге будут поддерживаться согласованными,но,Транзакция может быть включена в блок, который впоследствии становится потерянным.。так,Чтобы подтвердить, что транзакция постоянно записана в Блокчейн.,Требуется подтверждение транзакции. Если последующие блоки добавляются к Блокчейн,Фактически, исходная транзакция будет подтверждена.,Потому что чем длиннее цепочка,Исправлятьизтрудность Чем больше。Вообще говоря, транзакции, подтвержденные после 6 блоков, практически невозможно изменить.
Биткойн Горное дело – это своего рода ременьМеханизм доказательства выполнения работы для экономических стимулов; Доказательство работы гарантирует, что модификация блокчейна требует чрезвычайно высоких затрат, тем самым защищая характеристики защиты от несанкционированного доступа к блокчейну; Биткойнизсеть安全действительный上就是依靠强大изВычислительная мощность гарантирована。