Размер шрифта
-
+

Введение в технологию Блокчейн - стр. 39

Теперь предположим, что Алиса хочет отправить некоторые из этих монет Бобу.

Для этого она создает новую транзакцию, вторую транзакцию в нашем примере.

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

Здесь она ссылается на выход 0 транзакции 1 (единственный выход транзакции 1), который присвоил Алисе 25 битконов.

Она также должна указать выходные адреса в этой транзакции.

В этом примере Алиса указывает два выхода, 17 монет Бобу и 8 монет Алисе.

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

Почему Алиса должна отправить деньги самой себе в этом примере?

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

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

Алиса хочет заплатить Бобу только 17 биткойнов, но выход, который у нее есть, стоит 25 биткойнов.

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

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

Когда новая транзакция добавляется в реестр, как можно легко проверить, что она является валидной?

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

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

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

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

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

Например, Боб получил деньги в двух разных транзакциях – 17 биткойнов в одной и 2 биткойна в другой.

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

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

Это позволяет ему консолидировать эти две транзакции.

Также, легко сделать и совместные платежи.

Предположим, Кэрол и Боб оба хотят заплатить Дэвиду.

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

Страница 39