Bitcoin Forum

Local => Кодеры => Topic started by: yunixon on March 04, 2014, 01:11:16 PM



Title: Онлайн проверка баланса на кошельках
Post by: yunixon on March 04, 2014, 01:11:16 PM
Господа - есть игра, есть игровая валюта. Каждому игроку назначается DOGE адрес для пополнения, посредством dogeapi. Хотелось бы чтобы этот адрес и его значение и был показателем баланса игрока в игре. Каким образом проверяется зачисление монет на адреса игроков. Неужели нужен какой-то отдельный процесс (фоновая задача ?), который в цикле периодически, скажем раз в 10 минут, делает запрос на проверку всех кошельков игроков. Есть у кого опыт как правильно это делается?


Title: Re: Онлайн проверка баланса на кошельках
Post by: cryptodev on March 04, 2014, 09:36:56 PM
Какой-либо смысл в получении суммарного баланса всех участников игры одновременно имеется? Наверно, вряд ли, т.к. если обработка всех запросов займет хотя бы несколько секунд, есть вероятность получения неконсистентной картины (баланс первого участника N1 может измениться в момент опроса баланса последнего участника списка Nn).
С точки зрения практики достаточно будет добиться опроса баланса конкретного участника игры непосредственно в момент, когда это необходимо (т.е. когда он его видит глазами либо пытается расходовать, если это возможно средствами игры).


Title: Re: Онлайн проверка баланса на кошельках
Post by: rPman on March 05, 2014, 11:06:22 AM
doge форк от форка bitcoin, у демона есть удобные ключи (можно настроить в конфигурационном файле):
  -blocknotify=<cmd>     Execute command when the best block changes (%s in cmd is replaced by block hash)
  -walletnotify=<cmd>    Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)
куда уж проще, повесить на эти колбаки свое приложение, анализирующее кошелек или сразу транзакцию.


Title: Re: Онлайн проверка баланса на кошельках
Post by: cryptodev on March 06, 2014, 06:23:37 AM
Думаю, лучше все-таки запрашивать по мере необходимости, в этом случае при наличии технических проблем не будет доступен обусловленный ненулевым балансом функционал.

При использовании CB типичная ситуация - не отработал вызванный код (например, too many connections при обращении к БД), баланс не обновился, пользователь сделал двойное расходование.