Теперь поговорим о некоторых упрощенных криптовалютах, чтобы потом понять, как работают такие системы, как BitCoin.
И сначала поговорим о GoofyCoin.
GoofyCoin – это простейшая криптовалюта, которая подчиняется двум правилам.
Первое правило состоит в том, что Гуфи может создавать новые монеты, когда он захочет, и когда он создает новую монету, она принадлежит ему.
Когда Гуфи создает монету, она представлена определенной структурой данных.
Чтобы создать монету, Goofy генерирует уникальный идентификатор монеты CoinID, который он никогда не генерировал раньше, и создает строку «CreateCoin [uniqueCoinID]».
Затем он подписывает эту строку цифровой подписью с помощью своего секретного ключа.
Он вычисляет цифровую подпись этой строки с использованием своего секретного ключа.
Эта строка вместе с подписью Гуфи – это и есть монета.
Кто угодно может проверить, что монета содержит действительную подпись Goofy для утверждения CreateCoin и, следовательно, она является действительной монетой.
И новые монеты принадлежат Гуфи по определению, потому что это правило, которое создал сам Гуфи.
Второе правило GoofyCoin заключается в том, что тот, кто владеет монетой, может передать ее кому-то другому.
Передача монеты – это не просто вопрос отправки структуры данных монеты получателю – она выполняется с использованием криптографических операций.
Предположим, Гуфи хочет передать монету, которую он создал, Алисе.
Для этого он создает новое выражение, в котором говорится: «Оплатите это Алисе», где «это» – это хэш-указатель, который ссылается на монету.
И, как мы определили ранее, идентификаторы на самом деле являются просто публичными ключами, поэтому «Алиса» это публичный ключ Алисы.
Наконец, Goofy подписывает строку, представляющую это выражение.
Поскольку Гуфи – это тот, кому принадлежит эта монета, он должен подписать любую транзакцию, которая передает эту монету.
Как только эта структура данных, представляющая сделку Гуфи, подписанная им же, существует, Алиса владеет этой монетой.
Она может доказать кому угодно, что она владеет монетой, потому что она может предоставить структуру данных с действительной подписью Гуфи.
Кроме того, эта структура данных указывает на валидную монету, принадлежащую Гуфи.
Таким образом, валидность и владение монетами самоочевидны в системе.
Теперь, когда Алиса владеет монетой, она может также ее потратить.
Для этого она создает выражение, в котором говорится: «Платите эту монету публичному ключу Боба, где «это» является хэш-указателем на монету, принадлежавшую ей.
И конечно, Алиса подписывает это выражение.
Любой, когда увидит эту монету, может проверить, что Боб является ее владельцем.
Он будет следовать цепочке хэш-указателей обратно к созданию монеты и сможет убедиться, что при каждом шаге, законный владелец подписал выражение, в котором говорится: «Платите эту монету новому владельцу».
Подводя итог, GoofyCoin следует следующим правилам:
Goofy может создавать новые монеты, просто подписывая выражение о том, что он создает новую монету с уникальным идентификационным номером монеты.
Тот, кто владеет монетой, может передать ее кому-то другому, подписав выражение, в котором говорится: «Передайте эту монету X "(где X указывается как открытый ключ).
Любой может проверить действительность монеты, следуя цепочке хеш-указателей обратно к ее создателю Гуфи, проверяя все подписей на этом пути.
Конечно, с GoofyCoin существует фундаментальная проблема безопасности.
Скажем, Алиса передала свою монету Бобу, отправив подписанное выражение Бобу, но никому не об это не сказала.
Она может создать другое подписанное выражение, которое платит ту же самую монету Чаку.
Для Чака это кажется хорошей действительной транзакцией, и теперь он якобы является владельцем монеты.
Боб и Чак, оба теперь утверждают, что являются владельцем этой монеты.
Это называется атакой двойной траты – Алиса тратит одну и ту же монету дважды.
Интуитивно мы знаем, что монеты не должны работать таким образом.
Читать дальше