Exemplo n.º 1
0
    def combine_actions(connection,
                        account_alias,
                        asset_alias,
                        max_amount=5000000000,
                        size=20):
        actions = []
        gas_amount = 40000000
        amount = 0
        asset = Asset.get_asset_by_alias(connection, asset_alias)
        asset_id = asset['id']
        address = Account.find_address_by_alias(connection, account_alias)

        result = UnspentOutputs.list_by_account_asset(connection,
                                                      account_alias,
                                                      asset_alias)
        utxos = UnspentOutputs.find_little_utxo(max_amount=max_amount,
                                                utxos=result)

        if utxos.__len__() <= size:
            for utxo in utxos:
                actions.append(Action.unspent_output(output_id=utxo['id']))
                amount = amount + utxo['amount']
        else:
            for i in range(0, size):
                actions.append(Action.unspent_output(output_id=utxos[i]['id']))
                amount = amount + utxos[i]['amount']

        # consider gas amount
        if amount > gas_amount:
            amount = amount - gas_amount
        else:
            print(
                '\nAttention: The amount of all utxos is too little, less than tx gas.'
            )
            os._exit(0)
        actions.append(
            Action.control_address(amount=amount,
                                   asset_id=asset_id,
                                   address=address))

        return actions