Представьте себе большую таблицу, в каждой строке которой содержатся следующие данные (поля):
– дата и время финансовой операции (перевода денег);
– биткоин-адрес кошелька отправителя;
– биткоин-адрес кошелька получателя;
– сумма перевода.
Это и есть запись финансовой транзакции.
В протоколе Биткоина банковский счет аналогичен т.н. биткоин-адресу, который еще называют адресом кошелька. Формально это некая уникальная буквенно-цифровая строка, например:
12ctspmoULfwmeva9aZCmLFMkEssZ5CM3x.
Это не просто набор символов, а последовательность, криптографически связанная с приватным ключом от этого адреса. Т.е. биткоин-адрес и приватный ключ к нему являются уникальной парой, подобной публичному и приватному ключу в асимметричном шифровании.
Владелец биткоин-адреса, используя приватный ключ, может отправлять переводы на другие биткоин-адреса. Эти переводы записываются в блокчейн Биткоина (гроссбух – ledger) в виде транзакций.
Отметим, что все транзакции в блокчейне хранятся в незашифрованном виде. Любой человек, используя блокчейн-браузер или Block explorer – специальный сайт, для просмотра содержимого блоков, может увидеть любую транзакцию, включенную в блокчейн, в понятном виде – когда, откуда и куда, какое количество биткоинов было переведено.
Поскольку в блокчейне хранятся абсолютно все транзакции, именно по ним можно не только отследить движение всех монет между биткоин-адресами, но и вычислить, сколько криптоденег находится в данный момент в любом кошельке по его адресу.
Как это происходит? Все транзакции в Биткоине используют Входы (Inputs) и Выходы (Outputs):
1. Входы – пополнения, когда данный адрес выступает в качестве получателя биткоинов.
2. Выходы – платежи, переводы и т.п., когда адрес выступает в качестве отправителя.
Посредством Входов и Выходов транзакции связаны друг с другом – каждый Вход ссылается на Выход предыдущей, родительской транзакции. Таким образом цепочки связанных транзакций отслеживают все денежные потоки между биткоин-адресами внутри блокчейна.
На Входы каждой транзакции поступают средства с Выходов каких-то предыдущих транзакций, тем самым пополняя биткоин-адрес получателя средств. Если Выход не связан с Входом последующей транзакции, он считается непотраченным. Подсчитав все непотраченные Выходы, можно узнать текущий баланс конкретного биткоин-адреса (кошелька).
Но как владельцы этих адресов (кошельков) управляют своими деньгами? Как они совершают платежи и переводы?
Вот для этого и нужны собственно «биткоин-кошельки», в которых помимо уже упомянутого адреса хранятся