Дэнни, как обычно, всегда прав.
КСТАТИ "О вы bruteforcing криптографической SHA" ША не шифрование. Это алгоритм хэширования, выход алгоритма хеширования является по существу случайным образом. Это число в диапазоне от 0 до 2 ^ 256-1. Bitcoin просто использует его как "доказательство" что определенная работа была предпринята. Мы можем сделать это, потому что если у вас есть доказуемо случайное событие, которое происходит, например, один в 1 миллиард попыток в то время как кто-то может получить повезло или не повезло в течение длительного времени (тысячи событий), мы можем доказать, что потребовалось в среднем 1 миллиард попыток работы в случае. Трудность решения блока, однако не является статичной, сеть устанавливает цель, которая является просто числом от 0 до 2 ^ 256-1. Для решения блока выходного хэша должен быть меньше, чем цель. Чем ниже показатель число, тем труднее "решать" блок-и в среднем это займет больше попыток. Поскольку сеть становится быстрее (больше попыток в секунду) сеть делает цель меньше (больше попыток нужны "выиграть"), Когда сеть становится медленнее, сеть делает цель более высокие (меньше попыток, необходимых для "выиграть"). Эта цель уравновешивает вычислительную мощность в сети с целью в среднем 600 секунд между блоками. Независимо от того, насколько медленно или быстро сеть становится блоки будут находить в относительно последовательной манере, поскольку вычислительная мощность уравновешивается с трудом.
Если сеть в сочетании способен производить 10x столько хешей в секунду, то она занимает в среднем 10х столько же хэш попыток решить блок.
Если сеть в сочетании способна производить 1000000 столько хэшей в секунду, то это занимает в среднем 1000000 раз больше хэшей решить блок.
Сейчас сеть трудность составляет примерно 700 миллионов, так что в среднем занимает 700,000,000 раз больше хэш решить блок, как это было, когда Bitcoin первым начал (фактическое число затрудненного * 2 ^ 32, так как исходная трудность 1 требует 2 ^ 32 попытки).
Если вы хотите провести аналогию, представьте себе игру, где вы случайно генерировать число от 1 до 100 (скажем, с помощью пару десять кубика). Вы получаете 1 рулон в минуту и в среднем я только хочу победитель в каждые 10 минут. Я бы цель 10 или меньше. Есть 10 номеров ниже цели и 90 выше этого, ваши шансы на победу на каждом рулоне 10%. Вы можете получить повезло или не повезло в краткосрочной перспективе, но в среднем вы выиграете один раз каждые 10 минут. Если вы выиграли 100 раз мы играли в течение 1000 минут, и есть "доказательство работы" мы знаем, что это заняло бы вам около 1000 рулонов, чтобы выиграть 100 раз. Теперь представьте себе второй игрок присоединяется, но я до сих пор хочу только 1 победитель каждые 10 минут. Я мог бы просто уменьшить цель до 5. шанс выигрыша теперь 5% в рулон и есть 20 рулонов в минуту, так что до сих пор только один победитель каждые 10 минут. Теперь представьте, третий игрок присоединяется, но он получает в состоянии бросить три раза в минуту. В общей сложности будут 5 рулонов в минуту, и я хочу один победитель каждые 10 минут (всего 50 рулонов), так что шанс должен быть 2% в рулон и я опускаю цель 2. Независимо от того, сколько игроков присоединиться или уйти, или как быстро или медленно они могут катиться (возможно, некоторые люди имеют более чем 1 набор кубиков), я могу установить цель, так что в среднем только один "победитель" каждые 10 минут.
Вместо того, чтобы ролл кости мы используем SHA-256, чтобы быть источником для случайных величин, потому что доказуемо и сравнить их к цели.