Bitcoin Forum
May 26, 2024, 10:55:11 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Как отслеживать новые монеты на конкретнl  (Read 1176 times)
NNZ (OP)
Member
**
Offline Offline

Activity: 63
Merit: 10


View Profile
June 17, 2013, 02:34:19 PM
 #1

Решил подключить оплату в биткоинах на сайте.
Поднял клиент, организовал привязку адресов к клиентам сайта login=bitcoin_adress
Но не могу понять, какой командой к bitcoind проверять текущий баланс на конкретном адресе, есть комманды которые показывает баланс без учёта отправленных.

Схема приёма у меня такая:
1) Клиент переводит на свой личный вечный биткоин адрес любую сумму
2) Сервер после 6 подтверждений выдаёт клиенту покупку
3) Сервер переводит с адреса клиента биткоины на адрес магазина.

Проблема в том, что сервер не знает сколько биктоинов на конкретном адресе, так как нет команды для btcoind на подобие getblanace bitcoinadress которая бы возвращала текущий баланс конкретного адреса

Если кто сталкивался подскажите как организовать проверку баланса?
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
June 17, 2013, 02:48:32 PM
 #2

Готовые (тяжелые) проекты - https://en.bitcoin.it/wiki/Abe (аналог blockexplorer.com или blockchain.info) дадут вообще полную информацию по блокчейну и любому адресу в виде удобной реляционной базы.
Можно самостоятельно сканировать блокчейн (для >0.8 версии нужно индекс включить), каждый блок (ключ -blocknotify позволяет указать свое приложение, которое будет запускаться на каждое появление блока) анализируем:
Code:
getblock <hash>
получаем в т.ч. txid  - хеши транзакций, для каждой выполняем
Code:
getrawtransaction <txid> 1
получаем подробно транзакцию, в ней будет видно и адреса, и объемы, и источники монет (ссылки на транзакции, из них можно выцепить при необходимости исходные адреса)
...
если нужно анализировать неподтвержденные транзакции, то список их txid получается так
Code:
getrawmempool


Изначально предполагалось, что если нужно контролировать прием монет на адреса, то каждый адрес нужно помещать в свой аккаунт, тогда у кошелька есть способы узнать доступный баланс на аккаунте... но из-за того, что тратятся монеты с аккаунтов не подконтрольно, этот метод слишком неудобен для использования.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
NNZ (OP)
Member
**
Offline Offline

Activity: 63
Merit: 10


View Profile
June 17, 2013, 03:16:04 PM
 #3

Выглядит конечно как костыль, но видимо разработчикам видней.
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
June 17, 2013, 03:48:27 PM
 #4

Выглядит конечно как костыль, но видимо разработчикам видней.
опа.. неее! это информация ПО ЛЮБЫМ адресам, даже вне кошелька! В подавляющем большинстве случаев надежнее на веб-сервере разместить пустой кошелек с bitcoind для таких запросов, а реальный доступ к монетам на сверхзащищенном секретном...

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
NNZ (OP)
Member
**
Offline Offline

Activity: 63
Merit: 10


View Profile
June 17, 2013, 05:38:24 PM
 #5

Я так понял есть два способа ?
1) Описанный вами
2) Написанием своего парсера БД
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
June 17, 2013, 06:06:15 PM
 #6

Я так понял есть два способа ?
1) Описанный вами
2) Написанием своего парсера БД
3) взять готовый, например abe (не интересовался, есть ли еще, но наверняка есть)

p.s. описанный мною метод не такой уж и сложный, там все ответы красивым форматированным json выдаются, все интуитивно понятно и просто.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
Xtc
Legendary
*
Offline Offline

Activity: 1972
Merit: 1028


;u


View Profile WWW
June 17, 2013, 06:17:37 PM
 #7

API блокчейна не подходит?
blockchain.info/ru/q/addressbalance/[адрес]

rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
June 17, 2013, 07:33:32 PM
 #8

API блокчейна не подходит?
blockchain.info/ru/q/addressbalance/[адрес]


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

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
NNZ (OP)
Member
**
Offline Offline

Activity: 63
Merit: 10


View Profile
June 17, 2013, 07:51:55 PM
 #9

API блокчейна не подходит?
blockchain.info/ru/q/addressbalance/[адрес]
Подходит с натяжкой конечно, но не даёт возможности подключать другую криптовалюту.

Странно что нет поддержки команды на подобие getbalance, что-то вроде getbalance adress
Очень странно почему разработчики не сделали, ведь всего одна команда облегчит организацию приёма платежей в разы.
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
June 17, 2013, 07:57:09 PM
 #10

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

Из-за того, что при трате монет (исходящие транзакции) пока (в офицальном bitcoin и я не понимаю почему) нет никакого контроля над используемыми монетами, пользоваться понятием счет пользователя = сумма монет на его адресе - ошибочно! Обслуживать внутренние счета клиентов приходится самому.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!