Решил написать свой собственно пример организации пополнения баланса используя BitCoin.
Скрипт написан на php с использованием немного доработанной обертки для bitcoind api bitcoin-php (
https://github.com/mikegogulski/bitcoin-php) , код скрипта-примера размещен тут
https://github.com/Lexiks/Bitpay.
Bitcoind демон размещен на бесплатном аккаунте, любезно предоставляемым для тестовых целей облачным хостингом Amazon AWS (
http://aws.amazon.com/free/).
Пример работы скрипта находится тут:
http://bitpay.tk/ Целью всей этой затеи является создание простого и понятного примера демонстрации возможностей Bitcoin по организации приема платежей.
Следующим шагом будет написание подробной и понятной инструкции , поясняющей код и объясняющей основные принципы работы механизмов биллинга на основе Bitcoin.
Описание работы демки:Переходим по ссылке
http://bitpay.tk/ , вводим любое имя , жмем кнопку вход.
Далее попадаем в админку. В случае, если такое имя уже есть (т.е. пользователь ранее заходил под ним), выводится адрес для оплаты, если же это первый вход, создается аккаунт и выводится номер кошелька.
Номер кошелька навсегда закрепляется за конкретным аккаунтом и не меняется. Т.е. все биткоины, которые будут поступать на этот Btc адрес, не зависимо от плательщика и суммы, будут зачисляться на на баланс для этого аккаунта.
Кнопка
"Обновить BTC баланс" проверяет не поступили ли btc на адрес пользователя, если поступили, выводит суммой.
"Обновить USD баланс" выводит значение долларового баланса пользователя (хранится в mysql базе и изменяется после вывода баланса).
"Перевести BTC в USD" проверяет, есть ли на на счету клиента BTC, если есть, перемножает данную сумму на курс (задается в настройках) и добавляет к USD балансу, обнуляя при этом остаток на BTC аккаунте пользователя.
BTC же со счета пользователя переводятся на консолидированный адрес сервиса (который находится в этом же кошельке, поэтому этот перевод является внутренним и не требует подтверждения сетью).
"Зачислить немного тестовых монет" - перебрасывает 1/5 из остатка на общем аккаунте сервиса, на аккаунт клиента, для того, чтобы можно было попробовать как работает пополнение USD баланса , без пополнения адреса.
Также можете закинуть BTC непосредственно со своего кошелька на кошелек аккаунта (все собранные средства пойдут
в фонд голодающих на пиво
) .
По ссылке
"Просмотреть остатки по всем аккаунтам на кошельке" можно посмотреть остатки по всем аккаунтам кошелька.
WalletBank - основной аккаунт (произвольно выбранный), на который переводятся BTC, когда списываются с аккаунта пользователя (с него же и выдаются тестовые монеты).
Если извне ни кто ничего не зачислит, число монет в обороте в сумме по всем аккаунтам меняться не будет.
Список транзакций показывает все движения по аккаунту.
Примечания:Все транзакции , перемещения и остатки в BTC хранятся/обрабатываются непосредственно в BTC базе (которая располазается ан Amazon и с которой связывемся о протоколу RPC).
Mysql база в данном случае используется только для хранения USD баланса.
Аккаунты можете создавать новые , просто перейдя по ссылке
[Изменить имя] , и введя любое другое имя. Если ввденного не будет в базе, оно будет создано автоматом и для него сгенерирован соответсвующий адрес.
Авторизации понятно тут никакой нету, сделано для демонстрации, если будете использовать на рабочем проекте, разумеется , прикрутите нормальную идентификацию.
По поводу создания собственного сервера в амазоновском облаке, читаем тут
http://habrahabr.ru/blogs/hosting/135713/ , а тут тема на данном форуме по этому поводу
https://bitcointalk.org/index.php?topic=58729.0 , если что спрашивайте.
Исходники распространяются под лицензией "берите кто хотите и делайте с ними все что хотите"
.
Любые пожелания, указания на ошибки и неточности принимаются с большой благодарностью.
Также буду очень признателен, если кто проведет аудит кода и укажет на слабые места и неточности, которые могут привести на практике к проблемам. До тестов на реальном проекте пока недошел.
Скриншоты: