Эта транзакция CreateCoins создает несколько монет.

Каждая монета имеет серийный номер в транзакции.

И каждая монета также имеет значение, а именно стоимость как определенное количество ScroogeCoins.

И наконец, каждая монета имеет получателя, который является открытым ключом и который получает монету, когда она создана.

Таким образом, CreateCoins создает кучу новых монет с разными значениями и присваивает их разным получателям как первоначальным владельцам.

Мы ссылаемся на монеты с помощью CoinID.

CoinID – это комбинация идентификатора транзакции и серийного номера монеты в рамках этой транзакции.

Транзакция CreateCoins всегда действительна по определению, если она подписана Scrooge.

Мы не будем беспокоиться о том, когда Scrooge имеет право создавать монеты или сколько их создавать, точно так же, как мы не беспокоились в GoofyCoin о том, как Гуфи выбирается как сущность, которой позволено создавать монеты.

Второй вид транзакции – это PayCoins.



Эта транзакция потребляет несколько монет, то есть уничтожает их, и тут же создает новые монеты той же стоимостью.

Новые монеты могут принадлежать разным людям (публичным ключам).

Эта транзакция должна быть подписана всеми, кто платит монетой.

Поэтому, если вы являетесь владельцем одной из монет, которая будет потребляться в этой транзакции, тогда вам необходимо создать цифровую подпись этой транзакции, чтобы сказать, что вы действительно потратили эту монету.

Правила ScroogeCoin говорят, что транзакция PayCoins действительна, если действительны четыре вещи:

Используемые монеты являются валидными, то есть они действительно были созданы в предыдущих транзакциях.

Расходуемые монеты еще не были использованы в каких-либо предыдущих транзакциях. То есть, это не двойное расходование.

Общая стоимость монет, выходящих из этой транзакции, равна суммарному значению монет, которые вошли в транзакцию. То есть, только Scrooge может создать новую монету.

Транзакция действительно подписана владельцами всех потребляемых монет.

Если все эти условия выполнены, тогда транзакция PayCoins валидна, и Scrooge ее примет.

Он впишет эту транзакцию в историю, добавив ее в цепочку блоков, после чего каждый сможет увидеть, что эта транзакция случилась.

Только в этот момент все участники смогут принять, что транзакция на самом деле была произведена.

Пока она не будет опубликована, она может быть вытеснена транзакцией двойной траты, даже если она валидна в силу первых трех условий.

Монеты в этой системе неизменяемы – они никогда не меняются, не делятся и не объединяются.

Каждая монета создана один раз, в одной транзакции, и позже потребляется в какой-либо другой транзакции.

Но мы можем получить возможность делить или объединять монеты с помощью транзакций.

Например, чтобы разделить монету, Алиса может создать новую транзакцию, которая потребляет эту одну монету, а затем создает две новые монеты той же общей стоимостью.

Эти две новые монеты присваиваются ей обратно.

Теперь мы приходим к основной проблеме ScroogeCoin.

ScroogeCoin будет работать в том смысле, что люди могут видеть, какие монеты действительны.

Это предотвращает двойное расходование, потому что каждый может посмотреть на блок и убедиться, что все транзакции действительны и каждая монета потребляется только один раз.

Но проблема Скруджа в том, что у него слишком много влияния.

Он не может создавать поддельные транзакции, потому что не может подделывать подписи других людей.

Но он может прекратить одобрять транзакции у некоторых пользователей, отказывая им в сервисе и делая их монеты бесполезными.

Если Скрудж жадный, как его тезка из мультфильма, он может отказаться публиковать транзакции, если они не передают ему какую-либо утвержденную комиссию за транзакцию.