m
Recent Posts
19/09/2018
ГлавнаяСтатьиБлокчейн образование: что такое UTxO

Блокчейн образование: что такое UTxO

В привычном понимании — регулярные банковские операции переводятся с банковских счетов. Например, в транзакции можно перевести $100 от Алисы к Бобу. Транзакции в криптовалютах, таких как Cardano или Bitcoin, немного отличаются. Часть «to» (куда) аналогична, за исключением того, что может быть несколько «выходов»; например, в транзакции может быть передано $70 Бобу и $30 Кэрол. Однако часть «from» (откуда) работает совершенно по-другому; транзакционные входы — это не счета, а другие транзакции. Например, назовем транзакцию, которая переводит $70 Бобу и $30 Кэрол «t1».

t1 inputs: …
outputs: $70 to Bob, $30 to Carol

Предположим, Боб хочет перевести Дейву 50 долларов. Он может создать новую транзакцию, которая сообщит «выход транзакции t1, передать 50 долларов Дэйву и передать 20 долларов мне обратно».

t2 inputs: first output of t1
outputs: $50 to Dave, $20 to Bob

Важно, чтобы Боб вернул себе «сдачу» в размере $20, потому что вывод транзакции может быть «потрачен» (spent) (то есть использован в качестве ввода) только один раз. Этот тип операции называется «UTxO»; UTxO расшифровывается как «Неизрасходованные транзакции (Tx) выходов».

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

Структура транзакций в блокчейне

Структура транзакций в блокчейне

Что такое криптовалютный кошелек

Криптовалютный кошелек — это программное обеспечение, которое отслеживает состояние блокчейна, отслеживает средства пользователей (точнее, их UTxO) и позволяет им создавать новые транзакции для включения в блокчейн. Кошелек является основным средством взаимодействия пользователей с блокчейном. Обратите внимание, что проверка этих новых транзакций и решение о том, включать ли их в глобальный блокчейн или нет, не зависит от кошелька; как это происходит, подробнее можно изучить в нашей Блокчейн Академии.

Формальная спецификация кошелька — это математическая абстракция, которая отбрасывает все ненужные детали и просто фокусируется на основной функции, как и привычные нам электронные кошельки Qiwi, Яндекс.Деньги и пр. При рассмотрении базовой модели мы урезали состояние кошелька до UTxO кошелька и его набора отложенных транзакций.

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

Баланс кошелька

В качестве примера одного из более сложных аспектов функционирования криптовалютного кошелька мы детально рассмотрим отчетность о балансе. Неудивительно, что баланс отчетности нетривиален, но даже для обычных банковских счетов у нас уже есть два понятия баланса. После того, как Алиса перечисляет $100 Бобу, её онлайн-банковский счет может сказать ей:

  • Ваш текущий баланс составляет $1000.
  • Есть отложенная сделка на $100, так что ваш доступный баланс составляет $900.

В отличие от обычных банковских операций, сделки в стиле UTxO связаны с изменениями; это, естественно, приводит к трем понятиям баланса. Если мы возьмем в качестве примера транзакцию t2 выше, баланс Боба может быть представлен как:

  • Ваш баланс UTxO составляет $1070.
  • Существует отложенная транзакция t2, поэтому ваш доступный баланс составляет 1000 долларов США.
  • Однако, транзакция t2 $20, так что ваш общий баланс составляет $1020.

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

Хотя здесь есть вопросы пользовательского интерфейса (как мы должны сообщать об этих различных типах баланса пользователю?), с точки зрения дизайна кошелька это еще не так сложно. Реальная сложность исходит из того, что могут возникнуть временные разногласия по поводу того, какие транзакции включены в блокчейн (такие разногласия известны как «форки»; случаи как они возникают и разрешаются, выходит далеко за рамки данной статьи).

Давайте придерживаться приведенного выше примера и предположим, что t2 находится в статусе ожидания, но были разногласия по поводу t1. После того, как разногласия разрешились, кошелек обнаруживает, что t1 на самом деле не присутствует в блокчейне (возможно, это произойдет позже). Доступный баланс кошелька пока ещё $1000, но действительно имело бы смысл представить его общий баланс $1020? Было бы странно иметь общий баланс больше, чем баланс UTxO; все это кажется запутанным.

Поэтому в спецификации мы определяем понятие минимального баланса: минимальный (UTxO) баланс пользователя «во всем возможном будущем»; это единственный баланс, в котором пользователь может быть уверен. В этом примере это будущее, в котором ни t1, ни t2 никогда не попадут в блокчейн, и, следовательно, мы сообщаем о $1000 в качестве минимального баланса (обратите внимание, что никогда не может быть такой ситуации, что t2 включен, но t1 нет, так как t2 зависит от t1). Хотя эта концепция имеет интуитивный смысл, чтобы сделать ее точной и иметь возможность вычислить ее, некоторые разработчики вводят концепцию «ожидаемого UTxO». Но об этом мы поговрим позже.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Спасибо!

Теперь редакторы в курсе.