Может ли один кошелек отправлять/получать биткойны из/в несколько источников одновременно?

Предположим, например, что я размещаю свой общедоступный биткойн-адрес на веб-сайте для пожертвований, и несколько человек по всему миру одновременно вносят биткойны в один и тот же кошелек:

  1. Будут ли все депозитные транзакции действительными в сети биткойн или некоторые транзакции могут «заменять» другие?
  2. При получении биткойнов от кого-то (еще не подтвержденная транзакция в сети), могу ли я снять или оплатить биткойны, используя тот же кошелек, учитывая, что сумма включает только предыдущие биткойны и новый депозит?
Я не могу понять ваш второй вопрос.

Ответы (2)

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

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

Я думаю, что на самом деле вы хотите спросить: если кто-то (назовем их X) отправляет вам биткойны, можете ли вы потратить их сразу же (отправив их какому-то другому человеку Y), или вам нужно ждать подтверждения транзакции. ? Протокол Биткойн говорит, что если транзакция, отправляющая вам монеты, действительна , то вы можете немедленно создать транзакцию, тратя эти монеты, и она также будет действительна . Однако для подтверждения ваша транзакция в Y не может быть подтверждена до тех пор, пока не будет подтверждена транзакция из X. Если первая транзакция не подтверждена (возможно, X забыл включить комиссию за транзакцию или уже потратил эти монеты), то ваша транзакция с Y также не может быть подтверждена.

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

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

Кажется, вам не хватает неизрасходованных выходов транзакций (UTXO) как части головоломки:
каждая транзакция в сети приводит к одному или нескольким UTXO. Вы можете думать о них как о счете со стоимостью полученной транзакции. Каждый раз, когда вы совершаете транзакцию, введенный вами UTXO уничтожается, и создаются новые, которые может потратить получатель. Поскольку каждый UTXO уникален, они не могут конфликтовать друг с другом (получение счета от одного человека не мешает вам получить счет от кого-то еще), и вы можете потратить их только после того, как получили их.