Каждый блок содержит идентификатор транзакции, содержимое транзакции и хэш указатель на предыдущий блок.
Scrooge в цифровой форме подписывает также и последний хэш-указатель, который связывает все данные в единую структуру и публикует подпись вместе с цепочкой блоков.
В ScroogeCoin транзакция учитывается только в том случае, если она находится в цепочке блоков, подписанной Scrooge.
Любой может убедиться, что транзакция была одобрена Scrooge, проверив подпись Scrooge для блока, который появляется в цепочке.
Скрудж гарантирует, что он не одобрит транзакцию, которая пытается дважды потратить уже потраченную монету.
Зачем нам нужна цепочка блоков с хэш указателями в дополнение к тому, что Scrooge подписывает каждый блок?
Это обеспечивает свойство только добавления.
Если Scrooge попытается добавить или удалить транзакцию в истории, или изменить существующую транзакцию, это затронет все следующие блоки из-за хэш указателей.
Так как кто-то может отследить последний хэш-указатель, опубликованный Scrooge, это изменение будет очевидно и его легко обнаружить.
В системе, где бы Scrooge подписывал блоки по отдельности, вам бы нужно было отслеживать каждую подпись Scrooge, когда-либо выпущенную.
Цепочка блоков делает это очень легко, создавая единую историю транзакций, подписанную Скруджем.
В ScroogeCoin существует два вида транзакций.
Первый вид – это CreateCoins, которая аналогична операции GoofyCoin, которая делает новую монету.
В ScroogeCoin мы расширим немного семантику, чтобы разрешить создание нескольких монет в одной транзакции.
Эта транзакция CreateCoins создает несколько монет.
Каждая монета имеет серийный номер в транзакции.
И каждая монета также имеет значение, а именно стоимость как определенное количество ScroogeCoins.
И наконец, каждая монета имеет получателя, который является открытым ключом и который получает монету, когда она создана.
Таким образом, CreateCoins создает кучу новых монет с разными значениями и присваивает их разным получателям как первоначальным владельцам.
Мы ссылаемся на монеты с помощью CoinID.
CoinID – это комбинация идентификатора транзакции и серийного номера монеты в рамках этой транзакции.
Транзакция CreateCoins всегда действительна по определению, если она подписана Scrooge.
Мы не будем беспокоиться о том, когда Scrooge имеет право создавать монеты или сколько их создавать, точно так же, как мы не беспокоились в GoofyCoin о том, как Гуфи выбирается как сущность, которой позволено создавать монеты.