Как наказать майнеров за ложную информацию в блокчейне, доказательство работы POW, алгоритм консенсуса
Как наказать майнеров за ложную информацию в блокчейне, доказательство работы POW, алгоритм консенсуса

Как наказать майнеров, предоставляющих ложную информацию в блокчейне

1. Наказание за механизм консенсуса: если майнер обманывает, отправляя несколько блоков, вся ипотечная валюта майнера будет вычтена, а вычислительная мощность хранилища будет очищена и не сможет быть восстановлена.

2. Штраф за ошибку доказательства пространства-времени: если доказательство пространства-времени, представленное узлом, не соответствует соответствующему периоду, будет наложен штраф за ошибку.

3. Непредоставление пространственно-временного доказательства. Если узел не сможет предоставить пространственно-временное доказательство в течение периода доказательства, все залоговые данные будут конфискованы, а вычислительная мощность будет очищена.

4. Штраф за нарушение контракта. Если узел не сможет предоставить услуги хранения в соответствии с требованиями контракта, он будет обязан вернуть плату клиенту и лишиться соответствующего залога за хранение.

Доказательство работы военнопленный

Что такое подтверждение работы?

Доказательство работы Биткойна должно сводиться к компьютерным вычислениям, то есть математическим задачам. Как построить математическую задачу для реализации доказательства работы? Давайте посмотрим на простой пример.

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

Поскольку не существует фиксированной формулы для решения уравнений высшего порядка, для расчета правильных результатов требуется большой объем вычислений. Этот процесс расчета требует определенного объема работы. Предполагая, что Сяо Мин первым вычислил результат x=2,5, Сяо Хун может просто проверить, верен ли этот результат:

Видно, что решить уравнение сложно, но проверить результаты сравнительно просто. Таким образом, эффективное доказательство работы заключается в том, что процесс расчета очень сложен и занимает определенное время, но процесс проверки относительно прост и может быть завершен практически мгновенно.

Теперь возникает другой вопрос: что, если кто-то другой увидит ответ Сяо Мина и прыгнет, чтобы ответить на него?

Эту задачу также легко решить. Сяохун может отправлять разные уравнения разным мальчикам в зависимости от их номеров. Коэффициент первого члена уравнения — это число. Таким образом, уравнения, которые каждому приходится решать, разные. Решение x=2,5, полученное Сяо Мином, недопустимо для Сяо Цзюня, поскольку число Сяо Цзюня равно 3. Использование результатов Сяо Мина для проверки уравнения Сяо Цзюня не может пройти проверку.

Фактически, если уравнение проверено и принято, Сяохун может напрямую узнать, кто решил уравнение, по первому коэффициенту уравнения. Поэтому бесполезно воровать результаты чужого доказательства работы.

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

В сети Биткойн майнинг майнеров также является доказательством работы. Однако этого нельзя достичь путем решения полиномиальных уравнений, поскольку решение полиномиальных уравнений сложно вычислить людям, но это очень легко сделать для компьютеров. 1 секунда. Выполнено за несколько минут.

Чтобы компьютер реализовал доказательство рабочей нагрузки, необходимо найти алгоритм рабочей нагрузки, который компьютер не сможет рассчитать за короткое время. Этот алгоритм является хеш-алгоритмом.

Изменив заголовок блокаизодининдивидуальныйnonceПолеизценить,компьютер может рассчитывать различные хеши блоков:

Расчет заканчивается, когда вычисляется определенное значение хеш-функции. По сравнению с другими хешами, этот хэш характеризуется несколькими нулями впереди:

Язык кода:javascript
копировать
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-битное случайное число:

Язык кода:javascript
копировать
hash256("Hello?") = ????????????????????????????????????????????????????????????????

Рассчитано примерно 16 раз,В полученном хеше мы можем обнаружить, что первый бит равен0хэш-значение,Потому что вероятность того, что первая цифра равна 0, равна 1/16:

Язык кода:javascript
копировать
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 раза:

Язык кода:javascript
копировать
hash256("Hello44") = 00e477f95283a544ffac7a8efc7decb887f5c073e0f3b43b3797b5dafabb49b5

Если мы хотим узнать это раньше3бит есть0хэш-значение,Теоретически его нужно посчитать 163\=4096 раз.,Фактический расчет 6591 раз:

Язык кода:javascript
копировать
hash256("Hello6591") = 0008a883dacb7094d6da1a6cefc6e7cbc13635d024ac15152c4eadba7af8d11c

Если мы хотим узнать это раньше4бит есть0хэш-значение,Теоретически его нужно вычислить более 164\=65000 раз.,Фактический расчет более 67 000 раз:

Язык кода:javascript
копировать
hash256("Hello67859") = 00002e4af0b80d706ae749d22247d91d9b1c2e91547d888e5e7a91bcc0982b87

Если мы хотим узнать это раньше5бит есть0хэш-значение,Теоретически его нужно пересчитать 1,65\=1,04 миллиона раз.,Фактический расчет 1,58 миллиона раз:

Язык кода:javascript
копировать
hash256("Hello1580969") = 00000ca640d95329f965bde016b866e75a3e29e1971cf55ffd1344cdb457930e
Язык кода:javascript
копировать
Если мы хотим найти хэш-значение, первые 6 бит которого равны 0,Теоретически его нужно пересчитать 1,66\=16,77 миллиона раз.,Фактический расчет 15,58 миллиона раз:
Язык кода:javascript
копировать
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 триллиона вычислений.

Язык кода:javascript
копировать
17 0 = 1617 = 295147905179352825856 = 2,9 триллиона раз

действительныйизтрудностьоснован наbits由одининдивидуальныйчиновниквычислитьпублично заявить,Протокол Биткойн требует, чтобы рассчитанное хеш-значение блока было меньше значения сложности.,Этот блок считается валидным:

Язык кода:javascript
копировать
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 блоков, практически невозможно изменить.

краткое содержание

Биткойн Горное дело – это своего рода ременьМеханизм доказательства выполнения работы для экономических стимулов; Доказательство работы гарантирует, что модификация блокчейна требует чрезвычайно высоких затрат, тем самым защищая характеристики защиты от несанкционированного доступа к блокчейну; Биткойнизсеть安全действительный上就是依靠强大изВычислительная мощность гарантирована

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.