Представляет ли транзакция без комиссии больший риск, если продукт доставляется мгновенно?

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

Итак, я публикую адрес и жду неподтвержденную транзакцию, вижу транзакцию и запускаю цифровую загрузку.

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

Правильно ли мое мышление? и есть ли способ остановить этого короля атаки?

Чтобы остановить атаку, вы можете дождаться подтверждения, а затем отправить электронное письмо «ваша загрузка готова», если это подходит для вашего типа бизнеса.

Ответы (4)

Вы можете проверить, включает ли транзакция комиссию, просто взглянув на ее входы и выходы (вы также можете получить доступ к этой информации на blockexplorer.com ).

Но вы правы: принимать транзакции с 0 подтверждениями рискованно и помимо упомянутой вами есть и другие атаки ( атака 51% и атака Финни , например).

Вот несколько вариантов защиты от этого:

  • Дождитесь дополнительных подтверждений — это может быть нежелательно, но работает
  • Принимайте платежи из электронного кошелька / биржи, как упомянутый parker_vmg3 - некоторые веб-сайты, такие как TradeHill или CampBX, позволяют мгновенно отправлять биткойны между участниками.
  • Используйте зеленые адреса — в настоящее время они доступны только на MtGox и InstaWallet, но в будущем они могут стать более популярными.
Хотя 0 подтверждений сопряжены с риском, риск для покупок на небольшую сумму, вероятно, меньше, чем при приеме кредитных карт, особенно если учесть дополнительные расходы на комиссию за возврат средств. Все риски относительны. В то время как существует риск потери с 0 подтверждениями, риск потери никогда не равен 0 даже с 6 подтверждениями. Нужно взвесить стоимость требования многократного подтверждения (менее удобный для пользователя = меньше продаж) с очень низким риском двойных расходов.

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

Именно для этого и нужны подтверждения. Но маловероятно, что из-за этого вы увидите массовое «пиратство». Я бы просто списал это на расходы по ведению бизнеса. Если это выйдет из-под контроля, вы можете вернуться к ожиданию подтверждений или принятию «зеленых адресов».

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

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

Риск того, что транзакция никогда не будет принята, практически равен нулю. В настоящее время блоки заполнены в среднем только на 5%, поэтому майнеры и майнинговые пулы, как правило, включают все транзакции. Чтобы транзакция никогда не была включена, необходимо, чтобы ни один майнер на планете никогда не включал эту транзакцию.

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

Больший риск связан с «двойной тратой» или «атакой 51%», однако эти риски часто переоцениваются. Разрешение цифровых загрузок, оплачиваемых кредитной картой, также сопряжено с риском, поэтому достижение нулевого риска не является жизнеспособной бизнес-стратегией. Даже если ваше программное обеспечение никогда не было связано с мошенничеством с кредитными картами, оно, скорее всего, понесет убытки из-за пиратства, поэтому лучшее решение — это то, которое максимизирует чистый доход, а не то, которое пытается устранить все виды мошенничества.

Каждый бизнес должен смотреть на риск своего конкретного продукта. Чем выше значение, тем более вероятно, что вам следует рассмотреть возможность использования подтверждения. Нет смысла проводить атаку с двойной тратой, чтобы получить копию, скажем, «Super Angry Birds» за 1 BTC (3 доллара США на момент написания статьи). Разрешение мгновенных загрузок, вероятно, повысит продажи в достаточной степени, чтобы компенсировать незначительный рост мошенничества. С другой стороны, если вы разрешаете загрузку и лицензионные ключи для SQL Server Enterprise по цене 2500 BTC за копию, вам, вероятно, потребуется подтверждение.

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

+1 за «лучшее решение — это то, которое максимизирует чистый доход, а не то, которое пытается устранить все мошенничества»

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