Есть потребность одним платежом раскидывать на много адресов с разными весовыми коэффициентами
сейчас приходится для этого пользоваться сторонними службами - в случае если часть и большие списки
а что если в самом клиенте создать эту возможность?
делаем так называемый shared address - в который записываем список адресов с весовыми коэффициентами:
shadrr_list = { "addr1": 2, "addr2": 0.33, ... }
для этого в API:
# создать и сохранить в wallet.dat список, так чтобы изменить этот список нельзя было
shaddr = makesharedaddress( shaddr_list, label )
# причем создается адрес на 1 символ длинее - с добавкой 'S':
shaddr --> 'S1NilT.....13Gfas'
len(shaddr ) --> 35
Чтобы послать всем поделенные платежи вызываем команду API:
sendshared( shaddr, amount )
тело функции (послать поленные платежи) примерно такое
################## on python
def sendshared( shaddr, amount ):
if not amount > 0: return 'error'
# calc sum
sum = 0.0
for v in shaddrs:
if v>0:
sum += v
# recalc amo_outs
list_out = {}
for (k, v) in shaddrs.iteritems():
if v>0:
list_out[k] = round(amount *v / sum, 8)
sum_out = 0.0
for v in list_out:
sum_out += v
diff = amount - sum_out
# ну и раскидать разницу по 0.00000001 случайно на адреса
while diff>0:
diff -= 0.00000001
list_out[random_key[list_out]] += 0.00000001
return connection.sendmany(list_out)
#################