Как проверяются средства?

Я понимаю, что транзакции попадают в мемпул, и майнер «проверяет» транзакции, например, удостоверяясь, что у пользователя есть соответствующие средства и правильная подпись. В частности, как проверяются доступные средства? Похоже, вам придется перебирать каждую соответствующую транзакцию в каждом блоке, чтобы определить, были ли уже потрачены средства или нет. Это кажется довольно трудоемким, поэтому, безусловно, есть быстрый способ проверить, есть ли у пользователя свободные средства для расходов.

Как майнер проверяет, что средства доступны и еще не потрачены, не проходя через всю цепочку блоков?

Ответы (4)

Как майнер проверяет, что средства доступны и еще не потрачены, не проходя через всю цепочку блоков?

Полные узлы проходят через всю цепочку блоков, но только один раз. По мере того, как они работают с историей сети, они создают и постоянно обновляют «набор UTXO», который представляет собой просто список всех действительных монет. С каждым новым блоком полные узлы в сети проверяют содержимое блока и обновляют свой набор UTXO по мере их выполнения. Это упрощает проверку новых транзакций: узел просто проверяет свой набор UTXO, чтобы убедиться, что новая транзакция тратит действительные входные данные.

Как майнер проверяет, что средства доступны и еще не потрачены, не проходя через всю цепочку блоков?

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

Узлы «упрощенной проверки платежей» (SPV) — это облегченные узлы, которые не загружают всю цепочку блоков, но им необходимо полагаться на одноранговые узлы для проверки.

Вкратце: Биткойн — это наличные, а не банковский счет.

Монетные дворы не отслеживают, какие люди держат каждую из своих монет или сколько денег у каждого человека.

Монетные дворы предоставляют пользователям своих монет несколько способов отличить настоящие монеты от поддельных.


Как проверяются средства?

Это не так. Сеть Биткойн не знает о средствах и не заботится о них. Он в основном знает о транзакциях. Из знания о транзакциях приходит знание о «монетах».

Я понимаю, что транзакции уходят в мемпул

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

и майнер «проверяет» транзакции

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

например, обеспечить наличие у пользователя соответствующих средств.

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

и правильная подпись.

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

В частности, как проверяются доступные средства?

Каждый узел отдельно отслеживает свой собственный список всех неизрасходованных «монет», существующих глобально. Под «монетами» мы обычно подразумеваем неизрасходованные выходы транзакций (UTXO).

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

Истинный.

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

Никого не волнует, есть ли у пользователей средства. Нам важно только, чтобы монеты были настоящими (неизрасходованными). Это как наличные. Это наличные . Когда вы покупаете что-то за наличные, никого не волнует, сколько у вас денег, только то, что наличные, которые вы им даете, не являются подделкой.

Настоящего ярлыка нет. Каждая нода отслеживает список всех подлинных (неизрасходованных) монет.

легкие узлы (узлы SPV) действительно полагаются на незнакомцев, которые делают за них некоторые вещи, и, следовательно, они менее безопасны.

Как майнер проверяет...

Точно так же проверяется любой другой тип узла.

... что средства доступны и еще не потрачены без повторения всей цепочки блоков?

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

Расходуемые средства в биткойнах отслеживаются в виде неизрасходованных выходов транзакций (UTXO) . Каждая транзакция использует некоторые существующие UTXO на входах и создает новые выходы транзакции для назначения средств получателям. Каждый полный узел отслеживает весь набор расходуемых балансов в структуре данных, которую мы называем набором UTXO . Хотя вы можете думать о блокчейне как о журнале транзакций Биткойна, набор UTXO — это книга балансов.

Каждый полный узел воссоздает набор UTXO независимо, начиная с пустого набора UTXO и применяя каждую отдельную транзакцию, записанную в блокчейне, вплоть до текущего блока. Достигнув настоящего момента, они проверяют всю историю сети Биткойн и получают полный набор всех существующих средств. Набора UTXO достаточно, чтобы проверить, действительна ли транзакция, поскольку он явно содержит информацию о том, какие UTXO доступны для расходования, им не нужно возвращаться назад и снова «проходить через каждую соответствующую транзакцию».