Closed Relfick closed 1 year ago
network_mode: "host"
нужно убрать. Тогда можно будет отказаться от использования разных портов.
Подобный способ управления образами, приведёт к сборке трёх разных докер-образов, а нам нужен один.
@Relfick ping
Поправил
Смотрю лог нод:
sharpchain-node2-1 | Generated block: Block(index=9, prevHash=251b, Hash=cb91, Data=94kF, Nonce=284345, Timestamp=05/25/2023 06:11:40)
sharpchain-node1-1 | Generated block: Block(index=9, prevHash=2983, Hash=8fc6, Data=nHeq, Nonce=177584, Timestamp=05/25/2023 06:11:45)
sharpchain-node3-1 | Generated block: Block(index=9, prevHash=2983, Hash=0000, Data=zEK8, Nonce=436748, Timestamp=05/25/2023 06:11:45)
sharpchain-node2-1 | Generated block: Block(index=10, prevHash=cb91, Hash=c49d, Data=A8h8, Nonce=359355, Timestamp=05/25/2023 06:11:45)
sharpchain-node3-1 | Generated block: Block(index=10, prevHash=0000, Hash=1511, Data=FO4E, Nonce=1080441, Timestamp=05/25/2023 06:11:48)
sharpchain-node2-1 | Generated block: Block(index=11, prevHash=c49d, Hash=b70e, Data=Q7Ym, Nonce=1149025, Timestamp=05/25/2023 06:11:48)
sharpchain-node1-1 | Generated block: Block(index=10, prevHash=8fc6, Hash=2ce4, Data=5kCL, Nonce=57382, Timestamp=05/25/2023 06:11:51)
Получается, что каждая нода сгенерировала 9-й блок, а потом, не получив подтверждение от соседей, каждая приступила к генерации 10-го блока. И в итоге, у нас блокчейн распался на 3 минорити, верно?
Механизм запросов полной цепи при попадании ноды в минорити реализован, возможно, следовало немного подождать.
Тут просто видно, что 10й блок был сгенерирован всеми тремя нодами так, что prevHash
у всех разный. Как работает логика разрешения минорити в этом случае?
Реализовывал через размер цепи. У кого блоков в цепи больше - тот и прав. Рано или поздно какая-то нода убежит вперед, тогда остальные подтянутся к ней.
Но это не корректно... Я могу искусственно намайнить огромное количество блоков, и засунуть туда любые транзакции которые захочу. Остальные ноды будут вынуждены принять это за правду только на основании того, что моя цепочка длиннее. Фактически, мы от распеределённой системы переходим к централизованной.
Исправил. Добавил валидацию цепи после запроса. Теперь её длина - не единственный критерий правильности.
+
Student, group: Rebik Roman, 3530901/90201 URL: https://github.com/Relfick/SharpChain Any comments: git-flow, C#