Author

Topic: sendmany - Python (Read 1135 times)

legendary
Activity: 1554
Merit: 1008
December 26, 2013, 07:21:09 AM
#9
Не понимаю проблемы, у меня отлично работает sendmany (а комиссию можно установить в настройках или settxfee).
Не использую обертки, у меня обычно 1 метод для работы с кошельком и сериализованные объекты (в php просто объект json_decode выдает) этого более чем достаточно, только ошибки ловить и все будет норм.

проблема в том что аккаунт с которого я шлю имеет минусовой баланс!
не н у можно конечно все монеты самому себе перевести.... чтобы баланс аккаунта поправить
но это тоже както не правильно
legendary
Activity: 1120
Merit: 1069
December 25, 2013, 02:29:56 PM
#8
Не понимаю проблемы, у меня отлично работает sendmany (а комиссию можно установить в настройках или settxfee).
Не использую обертки, у меня обычно 1 метод для работы с кошельком и сериализованные объекты (в php просто объект json_decode выдает) этого более чем достаточно, только ошибки ловить и все будет норм.
legendary
Activity: 1554
Merit: 1008
December 25, 2013, 12:48:08 AM
#7
спасибо за инфо

но все она о том как учесть входы крипты

а у меня вопрос как сделать разовый перевод на много адресов

ответ есть?
legendary
Activity: 1120
Merit: 1069
December 24, 2013, 10:08:24 AM
#6
Средствами кошельке пытаться исправить этот баг - бессмысленно, либо править код либо забыть этот инструментарий как страшный сон.
Ставьте abe и работайте с sql-базой транзакций, удобно и без проблем.

Либо если адреса все ваши (на прием), сохраняйте в своей базе табличку с полями:
 * адрес_bitcoin
 * приватный_ключ (на случай, если адреса генерируются с помощью Vanitygen, тогда не нужно будет их импортировать в кошелек и генерировать транзакции иными методами, например подключив библиотеку от electrum или libbitcoin)
 * номер_блока_bitcoin_создания_адреса (определяет время, когда был сгенерирован адрес)
 * номер_блока_bitcoin_последнего_обновления (определяет время, когда информация из базы blockchain была обновлена для этого адреса)
 * идентификатор_клиента
 * итоговый_баланс
 * список_транзакций (для отладки можно хранить в виде сериализованного списка, или если позволяет движок базы, например postgres или некоторые nosql, в виде нативного списка)
И самостоятельно на каждый найденный блок сканируйте транзакции (это каких то 4-5 строчек кода на callback нового блока) обновляйте базу. Рекомендую обновлять только для блоков с номером меньше чем текущий (например 6 как рекомендуется для bitcoin), тогда не придется изобретать сложного кода для анализа еще орфанов и даблспенд атак (вообще то придется, но это отложит проблему на потом, когда сервис станет серьезным)
legendary
Activity: 1554
Merit: 1008
December 24, 2013, 06:41:50 AM
#5
спасибо, я это знаю...

вопрос - как сделать так чтобы этот sendmany - не проверял баланс или где найти и как сделать чтобы для него баланс на каком-то "главном"
аккаунте был достаточный??

командой move как видно это не получается сделать - остальные команды будут жрать комиссию и ждать подтверждения из сети ((
вот же бред то ((
legendary
Activity: 1120
Merit: 1069
December 24, 2013, 04:57:59 AM
#4
legendary
Activity: 1554
Merit: 1008
December 24, 2013, 04:26:03 AM
#3
Code:
       conn.settxfee(0.0001)
        main_acc = '.main.'
        bal = conn.getbalance(main_acc, xcurr.conf) # дает баланс 0.02
        print bal, vol
        if bal < vol:
            for (k,v) in conn.listaccounts(xcurr.conf).iteritems():
                if v == 0: continue
                conn.move(k, main_acc, float(v))
                print k,v
        bal = conn.getbalance(main_acc, xcurr.conf)
        print 'NEW bal:', bal
        #res = conn.sendmany( main_acc, sends, xcurr.conf )
        res = conn.sendmany( main_acc,{ '....VMsWBDjDLL5': 0.00200 })
        log(res)

дает ошибку  u'Insufficient funds', u'code': -6

что за бред?
понятно что команда MOVE только на баланс влияет
но какого хрена тогда проверка в sendmany ??

помогите пожалуйста

неужели придется самому рав-транзакцию собирать?
legendary
Activity: 1554
Merit: 1008
December 23, 2013, 05:26:46 AM
#2
о походу она ругается что адрес не указан
а как его не указывать в питоне? None не принимает ((
странно вот такая фигня с getbalance()
= getbalance() - выдаст баланс всего кошелька
А как задать минимальное число подтверждений и не указывать при этом аккаунт?

= getbalance(None, 3) - выдаст ошибку мол такого адреса нету
блин как быть
legendary
Activity: 1554
Merit: 1008
December 23, 2013, 05:11:43 AM
#1
Привет

подскажите пожалуйста как нап итоне сделать двойное число с плавающей точкой
или почему ругается sendmany
Code:
   sends = {}
    for (k,v) in request.vars.iteritems():
        v = float(v)
        sends[k] = v # converted to float
res = conn.sendmany( sends )
выдает ошибку:
{u'id': 1, u'result': None, u'error': {u'message': u'sendmany {address:amount,...} [minconf=1] [comment]\namounts are double-precision floating point numbers', u'code': -1}}
Jump to: