Bitcoin Forum

Local => Кодеры => Topic started by: Woland1987 on June 30, 2014, 06:55:20 AM



Title: Связка bitcoind + MySQL + PHP
Post by: Woland1987 on June 30, 2014, 06:55:20 AM
Всем привет!
Если кто сталкивался подскажите как отработать событие прихода средств на адрес аккаунта в bitcoin кошельке?

Суть такова: пользователю создается аккаунт на сайте и с таким же именем в кошельке, кошельку отдается команда getnewaddress("username"), это понятно. В любой момент пользователь может себе сгенерировать новый адрес для депозита, это тоже элементарно.

Но встал в ступор на такой стадии: когда пользователь отправил монеты на свой адрес, как дать понять скрипту что надо сделать запись этого значения в БД MySQL? то есть сколько пришло монет на адрес, столько должно попасть в числовом эквиваленте в БД сайта. Как отработать это событие?

Спасибо мужики, если поможете.


Title: Re: Связка bitcoind + MySQL + PHP
Post by: icreator on June 30, 2014, 10:58:16 AM
я использую
Code:
listunspent 

как только пришел блок, а его можно поймать если задать запуск команды в конфиге клиента
Code:
blocknotify	=start /LOW /MIN C:\web2py-m\applications\...\!notify-curl.cmd BTC %s >nul

в комнадном файле
Code:
curl_nossl http://localhost..../УРЛ/%1/%2 --connect-timeout 10 -m 10 --no-keepalive --no-sessionid -j >>%to_out%


у меня как только пришел блок кошелек запускает открытие УРЛ на локальном сервисе и апачи запускает весь расчет который на фрэймворке web2py сделан (на питоне)


Title: Re: Связка bitcoind + MySQL + PHP
Post by: pianist on July 13, 2014, 06:26:30 PM
Ужас какой, питон под виндой... кошмар...

По делу — способ так себе, так как не будет ловить не подтвержденные транзакции, а люди любят, когда сразу приходит хотя бы как "не подтвержденное".

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

Вот код на пхп:

Code:
        $txs = false;
        try
        {
                $block_count = $W->getblockcount();
                $block_since = $W->getblockhash($block_count - 600);
                $txs = $W->listsinceblock($block_since);
        }
        catch (Exception $e)
        {
                echo "ERROR: " . $e->getMessage() . "\n";
        }

        if (!$txs) return;

        foreach ($txs['transactions'] as $t)
        {
...
        }


Title: Re: Связка bitcoind + MySQL + PHP
Post by: awoland on September 04, 2014, 04:06:19 AM
А зачем
Code:
$block_since = $W->getblockhash($block_count - 600);
?
У нас ведь подтверждение транзакции 6 блоков, а не 600?


Title: Re: Связка bitcoind + MySQL + PHP
Post by: icreator on September 04, 2014, 05:22:25 AM
тоже не то - делать двойную работу, ведь кошелек уже все сделал за нас
поэтому я использую lisunspent
хотя с таким подходом много нюансов

работает и с нулевыми подтверждениями
пример работы можно тут глянуть
http://cryptopay.in/shop/bill/show/240
при оплате любой покажет и с нулевым подтверждением
но зачтет в баланс при 1-м подтверждении

для отлова нулевых подтверждений - запускаем цикл бесконечный и каждые 10-30 сек делаем проверку

а не проще нам скооперироваться и бесплатно поставить вам на сайт наш мерчант приема платежей

там то всего 2 строчки кода будет:
- создать счет
- проверить оплату по счету


Title: Re: Связка bitcoind + MySQL + PHP
Post by: pianist on September 11, 2014, 10:45:51 AM
а не проще нам скооперироваться и бесплатно поставить вам на сайт наш мерчант приема платежей

вы в своем уме?


Title: Re: Связка bitcoind + MySQL + PHP
Post by: becool on September 14, 2014, 06:45:39 PM
Ужас какой, питон под виндой... кошмар...

По делу — способ так себе, так как не будет ловить не подтвержденные транзакции, а люди любят, когда сразу приходит хотя бы как "не подтвержденное".

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

Вот код на пхп:

Code:
        $txs = false;
        try
        {
                $block_count = $W->getblockcount();
                $block_since = $W->getblockhash($block_count - 600);
                $txs = $W->listsinceblock($block_since);
        }
        catch (Exception $e)
        {
                echo "ERROR: " . $e->getMessage() . "\n";
        }

        if (!$txs) return;

        foreach ($txs['transactions'] as $t)
        {
...
        }

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


Title: Re: Связка bitcoind + MySQL + PHP
Post by: Ivanech on October 05, 2014, 02:28:59 PM
Ужас какой, питон под виндой... кошмар...

По делу — способ так себе, так как не будет ловить не подтвержденные транзакции, а люди любят, когда сразу приходит хотя бы как "не подтвержденное".

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

Вот код на пхп:

Code:
        $txs = false;
        try
        {
                $block_count = $W->getblockcount();
                $block_since = $W->getblockhash($block_count - 600);
                $txs = $W->listsinceblock($block_since);
        }
        catch (Exception $e)
        {
                echo "ERROR: " . $e->getMessage() . "\n";
        }

        if (!$txs) return;

        foreach ($txs['transactions'] as $t)
        {
...
        }

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

JSON-RPC PHP (http://jsonrpcphp.org/) ведь?