Когда пользователь отправляет транзакцию в блокчейн на основе субстрата, к транзакции добавляются дополнительные подписанные данные, чтобы гарантировать, что они применяются к правильному состоянию цепочки, для которого пользователь их предназначал. Вы можете увидеть, какие дополнительные подписанные данные прикреплены в шаблоне узла
Цель CheckGenesis
- обеспечить передачу транзакции в правильную цепочку, а не в другую. ,Без CheckGenesis
возможна следующая атака.
Алиса платит Бобу несколько жетонов в цепочке, которую они оба обычно используют. Транзакция проходит, как и ожидалось, и Боб получает токены. Боб замечает, что Алиса повторно использует свой ключ в другой цепочке. Поэтому он также передает ее транзакцию в эту вторую цепочку. Транзакция также проходит по второй цепочке, и Боб получает второй платеж.
Ссылаясь на цепочку, для которой предназначена транзакция, в подписанных данных, Алиса может предотвратить эту атаку.
Как криптографический совет, вы не должны повторно использовать ключи в приложениях в целом. Не все цепочки блоков основаны на субстрате, и не все цепочки включают эту проверку.