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})
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
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} )
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}
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)
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
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