2. Сделки
Мы определяем электронную монету как цепочку цифровых подписей. Каждый владелец передает монету следующему, подписывая цифровой подписью хэш предыдущей транзакции и открытый ключ следующего владельца и добавляя их в конец монеты.
Получатель платежа может проверить подписи, чтобы подтвердить цепочку владения.
Проблема, конечно, в том, что получатель платежа не может проверить, что один из владельцев не потратил монету дважды.
Распространенным решением является создание доверенного центрального органа, или монетного двора, который проверяет каждую транзакцию на предмет двойных расходов.
После каждой транзакции монета должна быть возвращена на монетный двор для выпуска новой монеты, и только монетам, выпущенным непосредственно монетным двором, гарантировано, что они не будут потрачены дважды.
Проблема с этим решением заключается в том, что судьба всей денежной системы зависит от компании, управляющей монетным двором, и каждая транзакция должна проходить через нее, как в банке.
Нам нужен способ, чтобы получатель платежа мог знать, что предыдущие владельцы не подписывали никаких предыдущих транзакций. Для наших целей учитывается самая ранняя транзакция, поэтому нас не волнуют последующие попытки двойного расходования.
Единственный способ подтвердить отсутствие транзакции — быть в курсе всех транзакций. В модели, основанной на монетном дворе, монетный двор знал обо всех транзакциях и решал, какие из них поступили первыми.
Чтобы добиться этого без доверенной стороны, транзакции должны быть публично объявлены[1], и нам нужна система, позволяющая участникам согласовывать единую историю порядка их получения.
Получателю платежа необходимо доказательство того, что во время каждой транзакции большинство узлов согласились, что она была получена первой.