Руководство по созданию веб-приложения на основе PHP для погашения купонов Биткойн

Я хотел бы выпустить биткойн-купоны с заданной стоимостью в долларах США. Погашающее веб-приложение должно принять пин-код купона и биткойн-адрес и перевести биткойны на этот адрес в соответствии с текущим обменным курсом. Я ищу быстрое/простое решение, желательно с PHP. Ищу рекомендации по дизайну и любые советы, которые помогут мне начать работу.

[править] Если быть более точным:

  1. Есть ли пример кода для отправки монет с помощью bitcoind/php?
  2. Есть ли сторонний API, обеспечивающий такую ​​функциональность (вместо использования биткойнов)?
  3. Есть ли у MtGox и Tradehill API для переводов?
  4. Капча обязательна?

[конец редактирования]

Я предлагаю вам не пытаться поддерживать биткойн-демон самостоятельно, а работать с чем-то вроде Overlay Network/Stratum — bitcointalk.org/index.php?topic=55842.0
4. НИКОГДА не вводите капчу. Они не приносят никакой пользы в обмен на то, что раздражают пользователей. Не. Всегда.

Ответы (2)

Я изменил код обмена Intersango с открытым исходным кодом, чтобы он мог выдавать и принимать купоны на биткойны. Вы можете просмотреть код , чтобы увидеть, как я это сделал. Мой код не хранит весь код купона в базе данных, поэтому, даже если хакер получит доступ для чтения к базе данных, он не сможет погасить невостребованные купоны.

Чтобы ответить на ваши конкретные вопросы:

1) Есть ли пример кода для отправки монет с помощью bitcoind/php?

Да. Вот некоторый код , который делает это очень простым способом.

2) Существует ли сторонний API, обеспечивающий такую ​​функциональность (вместо использования биткойнов)?

Я не знаю. Может быть , у одного из них есть то, что вы хотите.

3) Есть ли у MtGox и Tradehill API для переводов?

Трейдхилл больше не работает. МтГокс делает .

4) Капча обязательна?

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

Как не дать злоумышленнику попробовать больше одного раза за раз?
Я использую блокировку, чтобы каждая вошедшая в систему учетная запись не выполняла более одной задачи одновременно. Я не могу помешать одному злонамеренному пользователю создать миллион учетных записей и использовать их все сразу, но это будет гораздо более очевидно, если это произойдет.
Если злонамеренный пользователь создает Nучетные записи, он может проверять Nкупоны одновременно. Вы не можете удержать его на одном. И хотя это может быть очевидно, если пользователь создает миллионы учетных записей, как его остановить? Задержка также имеет тенденцию превращать его в самостоятельную DOS, потому что вы склонны истощать себя из-за соединений.
  1. Выпускайте купоны с серийным номером, уникальным для каждого купона, предпочтительно скрытым таким образом, чтобы после того, как номер был виден, купон не выглядел неоткрытым.
  2. Имейте список всех серийных номеров купонов и их значения в вашей базе данных.
  3. После погашения купона с правильным биткойн-адресом конвертируйте сумму в соответствии с некоторой стоимостью на бирже (например, Mt.Gox) и отправьте нужное количество монет на указанный адрес.

Что касается фактической программы для выполнения этих действий, она не может вам сильно помочь, но если вы можете общаться с Bitcoind через JSON-RPC, остальное должно быть довольно легко запрограммировано.

tnx ThePiachu, я отредактировал вопрос, добавил несколько конкретных моментов.