コード例 #1
0
    def endorse_create():

        valid_assets = [AVAL_1000, AVAL_10000, AVAL_30000]

        _from = request.json.get('from')
        endorse_type = request.json.get('endorse_type')

        from_id = cache.get_account_id(ACCOUNT_PREFIX + _from)

        if endorse_type not in valid_assets:
            return jsonify({'error': 'invalid_endorsement'})

        p = rpc.db_get_account_balances(from_id, [endorse_type])
        if p[0]['amount'] == 0:
            return jsonify({'error': 'no_endorsement_available'})

        if from_id not in rpc.db_get_accounts([PROPUESTA_PAR_ID
                                               ])[0]['blacklisted_accounts']:
            return jsonify({'error': 'no_endore_state'})

        p = rpc.db_get_account_balances(from_id, [DESCUBIERTO_ID])
        if p[0]['amount'] > 0:
            return jsonify({'error': 'already_have_credit'})

        asset, asset_core = rpc.db_get_assets([endorse_type, CORE_ASSET])

        memo = {'message': '~ae'.encode('hex')}

        endorse_transfer_op = transfer(from_id, PROPUESTA_PAR_ID, asset, 1,
                                       memo, None, CORE_ASSET)[0]

        print "************************************************"
        print json.dumps(endorse_transfer_op, indent=2)
        print "*********************"

        # fees = rpc.db_get_required_fees([endorse_transfer_op], CORE_ASSET)
        print "toma => ", endorse_transfer_op[1]['fee']['amount']
        print "************************************************"

        tx = build_tx_and_broadcast(
            account_whitelist(
                PROPUESTA_PAR_ID,
                from_id,
                0  #remove from black list
            ) + transfer(
                PROPUESTA_PAR_ID, from_id, asset_core,
                amount_value(endorse_transfer_op[1]['fee']['amount'],
                             asset_core)) + [endorse_transfer_op] +
            account_whitelist(
                PROPUESTA_PAR_ID,
                from_id,
                2  #add to black list
            ),
            None)

        to_sign = bts2helper_tx_digest(json.dumps(tx), CHAIN_ID)
        signature = bts2helper_sign_compact(to_sign, REGISTER_PRIVKEY)

        tx['signatures'] = [signature]
        return jsonify({'tx': tx})
コード例 #2
0
ファイル: cache.py プロジェクト: dargonar/waba_api_bts
def get_asset(asset_id):
    key = '?asset_id_%s' % asset_id
    asset = mc.get(key)
    if not asset:
        asset = rpc.db_get_assets([asset_id])[0]
        mc.set(key, asset, 120)
    return asset
コード例 #3
0
ファイル: main.py プロジェクト: dargonar/waba_api_bts
  def endorse_create():
    
    valid_assets = [AVAL_1000, AVAL_10000, AVAL_30000]    
    
    _from        = request.json.get('from')  
    _to          = request.json.get('to')
    endorse_type = request.json.get('endorse_type')

    from_id = cache.get_account_id(ACCOUNT_PREFIX + _from)
    to_id   = cache.get_account_id(ACCOUNT_PREFIX + _to)

    if endorse_type not in valid_assets:
      return jsonify({'error':'invalid_endorsement'})

    if to_id in rpc.db_get_accounts([PROPUESTA_PAR_ID])[0]['blacklisted_accounts']:
      return jsonify({'error':'already_endorsed'})

    p = rpc.db_get_account_balances(from_id, [endorse_type])
    if p[0]['amount'] == 0:
      return jsonify({'error':'no_endorsement_available'})

    p = rpc.db_get_account_balances(to_id, [DESCUBIERTO_ID])
    if p[0]['amount'] > 0:
      return jsonify({'error':'already_have_credit'})

    asset = rpc.db_get_assets([endorse_type])[0]
    
    memo = {
      'message' : '~ieu'.encode('hex')
    }

    tx = build_tx_and_broadcast(
      transfer(
        from_id,
        to_id,
        asset,
        1,
        memo,
        None,
        MONEDAPAR_ID
      ) + account_whitelist(
        PROPUESTA_PAR_ID,
        to_id,
        2 #insert into black list
      )
    , None)

    to_sign = bts2helper_tx_digest(json.dumps(tx), CHAIN_ID)
    signature = bts2helper_sign_compact(to_sign, REGISTER_PRIVKEY)
    
    tx['signatures'] = [signature]
    return jsonify( {'tx':tx} )
コード例 #4
0
ファイル: credit_func.py プロジェクト: dargonar/waba_api_bts
def init(other_accounts):
    global accounts
    accounts = {
        a[0]: a[1]
        for a in rpc.db_get_full_accounts(
            list(set(list(wifs) + other_accounts)), False)
    }

    global assets
    global assets_by_id
    assets = {
        a['symbol']: a
        for a in rpc.db_get_assets([
            '1.3.0', '1.3.1236', '1.3.1237', '1.3.1319', '1.3.1322',
            '1.3.1320', '1.3.1321'
        ])
    }
    assets_by_id = {assets[k]['id']: assets[k] for k in assets}
コード例 #5
0
ファイル: credit_func.py プロジェクト: dargonar/waba_api_bts
def multisig_claim_fees(assets_to_claim):
    init([])

    oinfo = rpc.db_get_objects([
        ainfo['dynamic_asset_data_id'] for ainfo in rpc.db_get_assets(
            [assets[asset]['id'] for asset in assets_to_claim])
    ])

    ops = []
    for j in xrange(len(assets_to_claim)):

        asset = assets[assets_to_claim[j]]

        assert (oinfo[j]['id'][1:] == asset['id'][1:]), "Invalid claim"
        if oinfo[j]['accumulated_fees'] == 0: continue

        amount = amount_value(oinfo[j]['accumulated_fees'], asset)
        ops.extend(asset_claim_fees(account_id('gobierno-par'), asset, amount))

    set_fees_and_broadcast(ops, [wifs['marcio'], wifs['beto']], CORE_ASSET)
コード例 #6
0
ファイル: process.py プロジェクト: dargonar/waba_api_bts
def user_transfer_authorizations(t):

    to = t.memo[8:].decode('hex')
    to_id = cache.get_account_id(unicode(ACCOUNT_PREFIX + to))
    from_name = real_name(t.from_name)
    endorse_type = t.amount_asset

    if to_id in rpc.db_get_accounts([PROPUESTA_PAR_ID
                                     ])[0]['blacklisted_accounts']:
        raise Exception('unable_to_receive')

    asset = rpc.db_get_assets([endorse_type])[0]
    memo = {'message': '~et:{0}'.format(from_name).encode('hex')}

    tx = build_tx_and_broadcast(
        transfer(PROPUESTA_PAR_ID, to_id, asset, t.amount, memo), None)

    to_sign = bts2helper_tx_digest(json.dumps(tx), CHAIN_ID)
    signature = bts2helper_sign_compact(to_sign, REGISTER_PRIVKEY)
    tx['signatures'] = [signature]

    print tx
    p = rpc.network_broadcast_transaction(tx)
    return to_sign
コード例 #7
0
ファイル: process.py プロジェクト: dargonar/waba_api_bts
def user_authorize_user(t):

    to = t.memo[8:].decode('hex')
    to_id = cache.get_account_id(unicode(ACCOUNT_PREFIX + to))
    from_name = real_name(t.from_name)
    endorse_type = t.amount_asset

    if endorse_type not in valid_assets:
        raise Exception('invalid_endorsement')

    p = rpc.db_get_account_balances(to_id, [DESCUBIERTO_ID])
    if p[0]['amount'] > 0:
        raise Exception('already_have_credit')

    if to_id in rpc.db_get_accounts([PROPUESTA_PAR_ID
                                     ])[0]['blacklisted_accounts']:
        raise Exception('already_endorsed')

    asset = rpc.db_get_assets([endorse_type])[0]
    memo = {'message': '~eb:{0}'.format(from_name).encode('hex')}

    tx = build_tx_and_broadcast(
        transfer(PROPUESTA_PAR_ID, to_id, asset, 1, memo) + account_whitelist(
            PROPUESTA_PAR_ID,
            to_id,
            2  #insert into black list
        ),
        None)

    to_sign = bts2helper_tx_digest(json.dumps(tx), CHAIN_ID)
    signature = bts2helper_sign_compact(to_sign, REGISTER_PRIVKEY)
    tx['signatures'] = [signature]

    print tx
    p = rpc.network_broadcast_transaction(tx)
    return to_sign