Я понимаю, что Биткойн использует неизрасходованные выходные данные tx и баланс учетной записи Ethereum. Однако в последнее время ведется много дискуссий о том, что база данных биткойнов UTXO стала слишком большой. Означает ли это, что транзакции на основе баланса счета лучше масштабируются, чем на основе UTXO?
Выбор между моделью UTXO и моделью баланса — это прежде всего выбор между стимулами к конфиденциальности и очевидной интуитивностью.
Если следовать стандартному совету не использовать повторно адреса/выходные данные/скрипты, чтобы не раскрывать безвозмездно, какие монеты принадлежат отправителю, а какие – получателю, эти две модели фактически эквивалентны. В этом случае балансы в любом случае будут одноразовыми, и будет столько же балансов, сколько в противном случае было бы UTXO, что устранит как очевидное преимущество размера, так и удобство.
Однако модель баланса эффективно стимулирует повторное использование. Поскольку стоимость обновления баланса для системы (возможно, в виде комиссий, но, безусловно, в затратах на работу узла) ниже, чем создание нового баланса, такая система по своей сути стимулирует раскрытие источников транзакций.
И хотя балансы более интуитивно понятны, они усложняют рассуждения о безопасности системы. Одной из проблем является проблема повторных атак. Предположим, что X заплатил Y, а Y заплатил Z. Теперь W снова платит Y. В наивной реализации Z может ретранслировать свою более раннюю транзакцию от Y и может взять деньги из платежа W к Y. Одно из решений состоит в том, чтобы проставить порядковые номера на балансах и потребовать от транзакций перечислить порядковый номер транзакций, из которых они получают деньги. . К сожалению, это требует сохранения порядкового номера даже для балансов, ставших равными нулю, а это означает, что база данных балансов должна поддерживать некоторые данные для каждого баланса, который когда-либо был ненулевым; результат, который в первую очередь гораздо менее масштабируем, чем модель UTXO (которая может забыть о выводах, как только они будут потрачены).
Короче говоря, я считаю, что модель баланса снижает взаимозаменяемость валюты в целом ради краткосрочной выгоды, которая исчезает.
В модели UTXO каждая транзакция тратит выходные данные предыдущих транзакций и создает новые выходные данные, которые позже могут быть потрачены транзакциями, управляемыми полными узлами. В вашем кошельке хранится список UTXO, связанных со всеми адресами, принадлежащими пользователю, а баланс кошелька рассчитывается как сумма этих неизрасходованных транзакций. Взгляните на этот пример:
A имеет 2,5 биткойна, т.е. один UTXO на 2,5 биткойна. Желание отправить B 1.0 btc. A использует 2,5 биткойна в качестве входных данных для trxn и отправляет 1,0 биткойна B, 1,5 биткойна отправляются обратно в A как новый UTXO с новым адресом. Таким образом, если у B есть 1 биткойн, то общее количество составляет 2 биткойна (отправлено A) и имеет два UTXO: один уже имеет 1 биткойн, а другой - 1 биткойн от A.
Блокчейн Биткойн использует эту модель, есть еще одна модель, которая используется в блокчейне Ethereum, т.е. Модель учетной записи, которая намного проще, чем предыдущая модель. Давайте посмотрим пример:
У A есть 2 эфира, A хочет отправить B 1 эфир, поэтому сеть уменьшит 1 эфир от A, т.е. A теперь имеет 1 эфир, а сеть добавляет 1 эфир к B. Если у B уже есть 2 эфира, то всего 3 эфира.
Обе модели имеют разные плюсы и минусы.
Каждая транзакция в модели учетной записи делает один вывод, что приводит к экономии места. Любая экономия места – это преимущество. Поскольку полные узлы сети предназначены для эксплуатации отдельными лицами, а не центрами обработки данных, чем ниже требования к данным, тем больше потенциальных участников.
Но UTXO обеспечивает более высокий уровень конфиденциальности, поскольку пользователи используют новые адреса для каждой транзакции, и им будет сложно связать учетные записи друг с другом.
Бьерн Магнуссен