У меня есть вопросы по консенсусу и синхронизации действий майнеров, я хотел бы узнать как это работает.
Как я это вижу. Есть блокчейн, в нём для примера 10 майнеров(я так понимаю не важно по какому признаку тут консенсус я так думаю, пусть будет PoS или PoW, можно рассмотреть Ethereum) . У первого майнера появляется транзакция, которую нужно подтвердить.
Действия майнера: Если это транзакция на перевод средств, то майнер должен проверить подпись что бы удостовериться, что транзакция не фиктивна. Далее проверить достаточно ли средств на кошельке отправителя. Потом списать деньги и зафиксировать это у себя.
Дальше тоже самое должны проделать другие майнеры, перед тем как вставить транзакцию в блок
Вопросы.
1. Каждый майнер должен хранить на своей стороне информацию о всех доступных кошельках и балансе на них? Или это выясняется иными путями?
2. Нужно оповестить всех остальных майнеров, что бы они подтвердили тоже самое? А если один из десяти не согласен? А если майнеров тысячи, и в процессе подтверждения к системе подключаются новые? Как успеть оповестить всех, DHT таблица будет огромна и постоянно меняться.
3. Предположим количество майнеров фиксировано, и каждый майнер знает адреса остальных майнеров, так что он рассылает им оповещения об этой транзакции. Всем сразу. Что будет, если в это же время пришла вторая транзакция другому майнеру? В динамической системе же должна образоваться тонна форков, и половина ресурсов будет направлена только на то, что бы от них избавиться.
4. Если всё на самом деле работает не так, то как же достигается синхронизация между всеми майнерами в сети при условии постоянно появляющихся транзакций?