Поверхностно почитал всякой херобазы.
Всё что далее написано, скорее всего, настолько тупо, шопесец. Но я просто пытаюсь понять с нуля.
Я так понял, все участники сети слушают некий порт, куда от всех других участников валятся транзакции. Совершил транзакцию - разослал её 100 другим юзерам на этот порт.
Эти 100 юзеров пытаются сформировать блок, пихая туда все транзакции, которые они поймали. Правила формирования блока описаны, спрашивать не буду. Хеши-перехеши там всякие...
Тупые вопросы такие:
1. Нельзя просто так взять и сформировать блок по формальным правилам с первой попытки, а надо чтобы некий хеш, собранный из хеширования транзакций и заголовка блока содержал вначале некоторое число нулей. Это установлено текущей сложностью в сети. И этот процесс есть майниг. Т.е. паковка блоков (жизненно важная для сети функция) и майнинг неразрывно связаны? Чтобы майнинг осуществлять, крутят nonce, а когда он переполнился - крутят спец-поле в одной из транзакций, перехешируют её и снова крутят nonce в заголовке. Т.е. создатели блоков одновременно являются и майнерами, т.е. проделывателями работы чтобы было proof-of-work?
2. Я так понял, не все участники обязаны пытаться сформировать блок, но формирование блоков есть жизненная сила сети. Не будет блоков - всё встанет, некуда будет паковать новые транзакции. Собственно, block chain перестанет расти. Т.е. формирование блоков — это необходимая для сети функция, но так как центрального сервака нет — делать её должен «кто-нибудь», за что ему дают награду.
3. Зачем блок должен быть с «крутым» хешом с нулями в начале, доказывающим что проделана работа, почему бы вместо этого не принимать сформированный с первой попытки блок с любым хешом, просто тот который сформировался раньше всех? Тогда к пакованию блоков ниже требования, её можно поручить пыльной материнке в туалете, а не разводить кучу ферм. Функция будет проще, а значит тупо надёжнее. Вознаграждение бы платилось видимо чуваку наиболее удачно расположенному в топологии инетрнета, который умудряется херачить блоки быстрее всех, что слишком херово и поэтому решили завязаться на proof-of-work? Ну получается почти так же нелепо, потому что китайцы в огромных сараях ставят тонны видеокарт... Ну хорошо, можно было бы выбирать тот блок, который победил в неком конкурсе великого все-сетевого рандома.
4. Я так понял, появление в сети новых биткоинов (по 50 за блок и потом по 25 за блок) совмещено с жизненно важной для сети функцией паковки блоков. Т.е. это как если бы новые рубли в Банке России эмитировались в экономику на основании того, сколько раз повар в столовке Банка России испёк кур. Ну т.е. некая жизненно важная функция, которая делается с трудом и которая бы делалась в любом случае (готовка обедов), как-то логически-нелепо совмещена с генерацией нового бабла.
5. Каждые 2016 блоков сложность меняется. Но не всегда возрастает, а адаптивно - например если эти 2016 блоков создавались слишком долго, то сложность может быть уменьшена. Так? И судят об этом все участники сети независимо сами, т.е. на вопрос о текущей сложности каждый может ответить себе сам, посмотрев на то, сколько времени заняла генерация предыдущих 2016 блоков, да?
6. В блоках есть поля с timestamp, типа там время негерации транзакции или время генерации блока. А что, все часы синхронизированы в сети? А как решить, врали ли часы у майнера или нет? Это вообще важно? Если неважно, нафига это поле, а если важно, кто следит за корректностью часов?