Если я тебе скажу: а расшифруйка мне 0000000000000000000000abcde - ты мне ответишь: "Ты что?! я буду делать это вечно!!!!11!!!!"
А если я тебе скажу: найди ка мне исходные данные, хеш который в итоге будет 0000000000000000000000abcde - ты ответишь: "Ок, 10 минут жди"
event.preventDefault();
в случае моего примера). const userName= document.getElementById('formName');
console.log(`Имя: '${userName.value}'` )
modulesEl.html('');
здесь мы вызываем метод html, при этом передаём туда пустую строку ''
. Таким образом, внутри элемента modulesEl будет пусто. Но так же можно добавить туда любой другой html.modulesEl.html('<option value="">- выберите модуль -</option>');
Ещё раз, возможно мы спорим о разных вещах, возможно не совсем понятен вопрос или проблема которую нужно раскрыть. Но конкретно момент с изменяемой сложностью в зависимости от "мощности" сети не самая сложная часть биткоина. Там всё настолько просто, насколько технически можно было придумать при заданных условиях.
Не понятнов чем проблема то?
Давай по пунктам, которые конкретно не понятны:
1. Из-за особенностей алгоритма(+текущие знания математики и мощности компьюетра) вычисление хеша - даёт случайный результат. Подобрать входные параметры под этот результат сейчас невозможно, можно только проверить что твои входящие параметры дают этот результат.
2. Сложность - грубо говоря просто ограничение, число задающее рамки в которых принимают результат. Чем меньше число, тем меньше рамки, а значит реже результат вычисления хеша будет попадаать в них.
ВЫВОД: генерация хеша - лотерея. Выиграть может любой. Даже тот кто пытается искать на обычном процессоре. Каждая генерация хеша - как покупка лотерейного билета. Чем больше генерируешь, тем выше шанс что выиграешь именно ты. Когда количество игроков и покупки билетов меняется(меняется мощность сети биткоин, что генерирует хеши) ведущий меняет целевое ограничение таким образом, чтобы победитель был раз в 10 минут. Стало меньше хешей в минуту считаться, ок, увеличим окно и число с которым сравниваем хеш, таким образом повысим шансы конкретного хеша стать выигрышным.
Если здесь всё ясно, то можно уже перейти к конкретной реализации в биткоине. Но там тоже всё просто. Любой хеш это всё же число, от 0 до очень большого(отбросим условности 2 в степени 256).
Да мы приняли что будем брать особые хеши, с ноликами. Сложность регулируется числом, которому должен быть равен или меньше хеш. И если хеш вышел больше этого числа, то он не принимается. Вот так и работает. Больше это целевое число - больше шансов что хеш примут. Никакой магии нет. Есть обычная вероятность в течении двух недель(проимерно, на самом деле раз в определенное количество блоков)