Title: Как парсить listtransactions <account> <count> <from> Post by: Tonako on April 08, 2014, 02:40:07 PM Первый раз встречаю такой вид сортировки данных
listtransactions <account> <count> <from> Пишу модуль для интернет магазина, как мне проверять оплату пользователей? По крону делать запрос listtransactions "33492" 500 ? или как-то иначе? подскажите пожалуйста пока не могу понять как реализовать занесение в БД входящий платежей Title: Re: Как парсить listtransactions <account> <count> <from> Post by: rPman on April 09, 2014, 06:24:53 AM В базу записывай транзакции (идентифицируй по txid и учитывай количество подтверждений) в цикле постранично запрашивая транзакции до тех пор, пока не встретим транзакцию, уже записанную в базе.
Code: // далее $saved_txs определен для простоты, но это не переменная а база данных Опрос кошелька нужно делать не по крону, а настроив калбак в кошельке на нахождение нового блока или входящую транзакцию Code: -blocknotify=<cmd> Execute command when the best block changes (%s in cmd is replaced by block hash) Title: Re: Как парсить listtransactions <account> <count> <from> Post by: Tonako on April 10, 2014, 03:29:23 PM Код будет немного сложнее, так как listtransactions для сложных транзакций (входящие, на несколько адресов кошелька) вернет несколько записей, по одной на каждый входящий адрес. Для этого можно либо хитро хранить транзакции, либо формировать свой идентификатор транзакции, например из txid и address тут я не поняла в чем тут проблема? можно подробне, в чем тут может возникнуть проблема? я вообще не собираюсь заморачиваться, если есть новый txid значит буду добавлять транзу в свою БД Title: Re: Как парсить listtransactions <account> <count> <from> Post by: rPman on April 11, 2014, 07:04:51 PM listtransactions возвращает список с не уникальными txid (например для таких https://blockchain.info/tx/17369a70b1a10878b1887767bea519afd3e0bc53ca384137d8480113d88ce0db ) для каждого исходящего адреса находящегося в кошельке (адреса кстати тоже не уникальны и могут повторяться в одной транзакции).
Т.е. хранить информацию о транзакции нужно как минимум со списком этих адресов (а не одним адресом). Title: Re: Как парсить listtransactions <account> <count> <from> Post by: Tonako on April 13, 2014, 02:54:59 AM rPman, спасибо огромное за этот момент. Я не обращал внимания что такое может быть.
Подскажи пожалуйста как мне реализовтаь для теста приход средств с нескольких адресов на мой адрес? чтобы я наглядно увидел как bitcoind выводит список таких танзакций и как мне их обрабатывать или сразу так вопрос задам, по этой транзакции https://blockchain.info/tx/17369a70b1a10878b1887767bea519afd3e0bc53ca384137d8480113d88ce0db я так понимаю там было 10 приходов с одним txid вот вопрос, как обрабатывать все эти 10 приходов, что в них уникального чтобы по несколько раз их в БД не заносить? мой скрипт по планам будет делать так 1. кроном запускается, получает допустим список из 50 транзакий из bitcoind 2. каждую транзакцию проверяет в БД на наличие, ищет txid - если его нет создает главную запись о транзакции 3. далее скрипт находит опять транзакцию с тем же txid, проверяет в БД, находит главную запись, добавляет запись вторичного типа, так же у главной записи обновляет значение суммы вот теперь не пойму как сделать проверку чтобы по несколько раз не зачислять приходы(( Title: Re: Как парсить listtransactions <account> <count> <from> Post by: Tonako on April 13, 2014, 03:38:14 AM еще вопрос, что за массив walletconflicts в транзакции ? какие там данные могут быть?
Title: Re: Как парсить listtransactions <account> <count> <from> Post by: rPman on April 13, 2014, 05:38:02 AM Про walletconflicts - не знаю.
Как обрабатывать транзакции, читай мое первое сообщение в теме Про 'приход 10' - предпоследнее. Для тестов создай транзакцию командой sendmany. Нет деннег - намайни за часок блок одной видеокартой в тестовой сети. Title: Re: Как парсить listtransactions <account> <count> <from> Post by: yurm on April 15, 2014, 03:20:48 PM еще вопрос, что за массив walletconflicts в транзакции ? какие там данные могут быть? walletconflicts — это список хэшей malleable (https://en.bitcoin.it/wiki/Transaction_Malleability) транзакций. Например, отправили вы куда-то энную сумму и получили один хэш, а в блокчейн попал другой хэш той же по сути транзакции. Оба этих хэша будут выдаваться listtransactions, а в walletconflicts они будут ссылаться друг на друга. У меня такое было один раз. При приёме монет скорее всего будет то же самое, если до кошелька аналогично дойдут разные хэши одной транзакции. |