Одним из наиболее важных вопросов, на мой взгляд:
Какие "трудно математическая задача" в настоящее время вычисляется?
Я имею в виду не в "ребенок язык" - но, скажем - в understanable пути к так называемым "нетехнических" человек.
Для начала вы должны понять (или, по крайней мере, принять), что существуют определенные математические расчеты, которые очень легко&быстро сделать в одном направлении, и очень трудно&медленно делать в противоположном направлении.
Одним из примеров этого может быть умножение больших простых чисел.
Если я дам вам 2 простых чисел:
9931 и 9803
Вы можете быстро и легко умножить их вместе и определить, что результат:
97353593
С другой стороны, если я дам вам номер:
93603659
И у Вас, два простых числа это продукт, вы бы трудно и отнимает много времени, чтобы определить, что ответ:
9923 & 9433
Теперь, когда мы установили, что существуют математические задачи, которые могут быть легко&быстро в одном направлении и трудно&замедлиться в другой. , ,
решаемой при добыче частности, математическая задача называется SHA-256 хэш. Этот алгоритм принимает набор данных и вычисляет 256 битное число из этих данных. Это очень быстро и легко для компьютера, чтобы вычислить хэш SHA-256 из набора данных. Это очень медленно и трудно идти другим путем, найти набор данных, который будет точно соответствовать заданной хэш. Это так медленно и трудно, что его можно считать невозможным.
Без выполнения алгоритма SHA-256, это невозможно знать заранее (с текущей математикой), что в результате 256 битного число будет, так что результат является по существу случайным образом. Изменение даже одного бита в исходных данных изменяется в результате 256 битного число непредсказуемым образом, весь алгоритм SHA-256 должен быть повторно вычислен для определения нового результата. Если вы получаете хэш SHA-256, не известно, быстрый или простой способ определить, что исходный набор данных приведет к конкретной хэш.
Шахтер упаковывает все транзакции, которые они хотят включить в блок. Затем они выполняют процесс хеширования SHA-256 на все операции и включают в себя полученное число (часто упоминаются как Merkle Root) в заголовке блока. Изменение любой информации в любой транзакции изменит этот Меркле корень, и, следовательно, изменить заголовок блока.
Минер затем вычисляет SHA-256 хэш заголовка блока. Для того, чтобы заставить шахтер, чтобы доказать, что они сделали определенное количество математической работы, протокол Bitcoin устанавливает целевое значение для этого SHA-256 хэша. Если хэш, что шахтер вычисляется меньше заданного значения, то блок "решена" и готов к публикации в сети. Если хэш больше, чем целевое значение, забойщик изменяет специальное поле в заголовке называется Nonce. Это поле существует исключительно с целью модификации полученного значения хэш-функции. Минер затем пересчитывает SHA-256 хэш заголовка блока (с этим новым значением Nonce). Шахтер повторяет этот процесс снова и снова до тех пор, в результате хэш меньше заданного значения. Там нет никакого известного способа предсказать, что одноразовое значение будет необходимо загодя. Шахтер должен просто продолжать пытаться, пока они не получат достаточно низкое значение хеш-функции.
Поскольку число (и скорость) шахтеры, работающих на этом хешировании проблема возрастает, они начинают открывать хэш, который меньше, чем заданное значение быстрее. Протокол затем предназначен требовать еще более низкое целевое значения, чтобы сделать его более трудно найти соответствующий хэш. Если шахтеры начинают отключив свои системы интеллектуального анализа, обнаруживая хэш, который меньше, чем целевое значение будет начать принимать больше. Протокол затем предназначен для требует более высокого целевого значения, чтобы сделать его легче найти соответствующий хэш. Протокол регулирует целевое значение этого каждые 2016 блоков, чтобы среднее количество времени, чтобы решить блок на 10 минут. Это заставляет всю сеть поставить "в среднем" 10 минут хэширования вычислений к каждому блоку.
Если кто-то хочет изменить какую-либо информацию в уже решенном блоке, он изменит значение Merkle Root в заголовке. Это приведет к изменению хеш-заголовка. Человек пытается изменить блок должен найти хэш своего нового заголовка, который был ниже необходимой цели для того, чтобы получить какие-либо из коллег по сети, чтобы принять его действительным.
Каждый новый блок включает в себя точный хэш предыдущего блока в его заголовке. Это означает, что человек пытается изменить данные в решаемой блоке должен не только найти достаточно низкий хеш для блока, который они пытаются изменить, но что они должны найти достаточно низкие хэш для каждого блока, который был создан с тех пор , В то время как человек пытается изменить старый блок пытается решить все эти хэш достаточно низкой стоимости, остальная часть сети работают на новом блоке. Это означает, что человек пытается изменить историю blockchain должен догнать остальной честной сети, брел впереди них. Единственный способ реально сделать это, чтобы иметь больше энергии, чем хэширования всей объединенной честной сети.
Обратите внимание, что когда-заголовок (с одноразовым номером и в результате хэша) транслируются в сеть, это очень быстро для каждого вглядываться, чтобы убедиться, что предыдущая работа шахтера недействительна. Им нужно только вычислить один хэш заголовка вещания, чтобы увидеть, если результирующий хэш является широковещательным хэш, а затем сравнить этот хэш для заданного значения, чтобы подтвердить, что он является достаточно низким.
Было ли это слишком технический? Или же мне удалось описать его "понятный способ для так называемого нетехнических лица"