Предположим, например, что я размещаю свой общедоступный биткойн-адрес на веб-сайте для пожертвований, и несколько человек по всему миру одновременно вносят биткойны в один и тот же кошелек:
На ваш первый вопрос: количество транзакций, которые можно отправить на один адрес, не ограничено. Даже если кто-то отправил два разных платежа на ваш адрес с одного и того же адреса, оба на одну и ту же сумму, в один и тот же момент: это будут две отдельные транзакции с разными идентификаторами транзакций, и вы получите кредит за обе из них. Ответ Марча более подробно объясняет, как это работает.
По вашему второму вопросу: Прежде всего следует избегать смешивания слов проверено и подтверждено .; хотя в повседневном английском языке они по существу являются синонимами, в терминологии биткойнов они имеют особые значения. Подтверждение транзакции просто означает проверку того, что она действительна : она тратит монеты, которые действительно существуют, и авторизована лицом, которому эти монеты принадлежат. Но проверка не исключает возможности того, что этот человек также санкционировал другую действительную транзакцию, пытающуюся потратить те же монеты. Исключение, которое достигается подтверждением, что, по сути, гарантирует, что из любого набора конфликтующих транзакций только одна считается «подтвержденной» путем включения в растущую цепочку блоков, и что этот выбор является постоянным.
Я думаю, что на самом деле вы хотите спросить: если кто-то (назовем их X) отправляет вам биткойны, можете ли вы потратить их сразу же (отправив их какому-то другому человеку Y), или вам нужно ждать подтверждения транзакции. ? Протокол Биткойн говорит, что если транзакция, отправляющая вам монеты, действительна , то вы можете немедленно создать транзакцию, тратя эти монеты, и она также будет действительна . Однако для подтверждения ваша транзакция в Y не может быть подтверждена до тех пор, пока не будет подтверждена транзакция из X. Если первая транзакция не подтверждена (возможно, X забыл включить комиссию за транзакцию или уже потратил эти монеты), то ваша транзакция с Y также не может быть подтверждена.
Таким образом, в принципе возможно немедленно потратить поступающие монеты, но на практике это, вероятно, не очень хорошая идея, потому что это может привести к запутанной ситуации, если входящая транзакция не будет подтверждена. По этой причине, чтобы уберечь вас от выстрела в ногу, большинство биткойн-клиентов заставят вас ждать, пока входящая транзакция получит некоторое количество подтверждений, прежде чем позволить вам использовать их в качестве входных данных для исходящих транзакций; до тех пор вы можете тратить только те монеты, которые ранее были получены и подтверждены. Но это функция удобства, а не внутреннее ограничение: если вы действительно хотите, вы можете исправить свое программное обеспечение, чтобы снять это ограничение, и это будет нормально для остальной части сети.
Кажется, вам не хватает неизрасходованных выходов транзакций (UTXO) как части головоломки:
каждая транзакция в сети приводит к одному или нескольким UTXO. Вы можете думать о них как о счете со стоимостью полученной транзакции. Каждый раз, когда вы совершаете транзакцию, введенный вами UTXO уничтожается, и создаются новые, которые может потратить получатель. Поскольку каждый UTXO уникален, они не могут конфликтовать друг с другом (получение счета от одного человека не мешает вам получить счет от кого-то еще), и вы можете потратить их только после того, как получили их.
Ник Оделл