crossbar.network._backend

Attributes

Classes

Backend

Backend implementation of (most of the) public API.

Functions

_verify_meta_data(meta_hash, meta_data, meta_obj_expected)

is_valid_username(username)

Module Contents

class Backend(session: autobahn.twisted.wamp.ApplicationSession, db: zlmdb.Database, meta_schema: cfxdb.meta.Schema, xbr_schema: cfxdb.xbr.Schema, xbrnetwork_schema: cfxdb.xbrnetwork.Schema, chain_id: int, eth_privkey_raw: bytes, w3: web3.Web3, mailgw: crossbar.network._mailgw.MailGateway, bc_config: Dict, ipfs_cache_dir: str)[source]

Bases: object

Backend implementation of (most of the) public API.

_bc_gw_config[source]
_chain_id[source]
_db[source]
_download_and_cache(meta_hash)[source]
async _ensure_runtime(ts_started)[source]
_eth_acct[source]
_eth_adr[source]
_eth_adr_raw[source]
_eth_privkey[source]
_eth_privkey_raw[source]
_get_balances(wallet_adr)[source]
Parameters:

wallet_adr

Returns:

_get_gas_price()[source]
Returns:

_get_transaction_receipt(transaction: bytes)[source]
Parameters:

transaction

Returns:

_ipfs_cache_dir[source]
_mailgw[source]
_meta[source]
_monitor_blockchain(gateway_config, scan_from_block, period=300)[source]
Parameters:
  • gateway_config

  • scan_from_block

  • period

Returns:

_monitor_blockchain_thread[source]
_process_block(w3, block_number, Events)[source]
Parameters:
  • w3

  • block_number

  • Events

Returns:

_reactor[source]
async _really_login(account_oid, member_email, client_pubkey, timestamp, wallet_adr, ts_started, was_signup=False)[source]
_remove_verification_file(vaction_oid, vaction_type, rename_only=True)[source]
_run_monitor[source]
_save_verification_file(vaction_oid, vaction_type, verified_data)[source]
_send_createCatalogFor(member, created, catalog_id, terms, meta, signature)[source]
_send_createMarketFor(member, created, marketId, coin, terms, meta, maker, providerSecurity, consumerSecurity, marketFee, signature)[source]

Send transaction to XBRNetwork.registerFor on-chain contract. This method is run on a background thread, as web3 is blocking.

Parameters:
  • member

  • registered

  • eula

  • profile

  • signature

Returns:

_send_for(function, *args)[source]
_send_joinMarketFor(member, joined, marketId, actorType, meta, signature)[source]

Send transaction to XBRMarket.joinMarketFor on-chain contract. This method is run on a background thread, as web3 is blocking.

Parameters:
  • member

  • joined

  • marketId

  • actorType

  • meta

  • signature

Returns:

_send_registerFor(member, registered, eula, profile, signature)[source]

Send transaction to XBRNetwork.registerFor on-chain contract. This method is run on a background thread, as web3 is blocking.

Parameters:
  • member

  • registered

  • eula

  • profile

  • signature

Returns:

_session[source]
async _upload_to_infura(meta_hash, meta_data, upload=True)[source]
_w3[source]
_xbr[source]
_xbrnetwork[source]
async create_catalog(member_oid: uuid.UUID, catalog_oid: uuid.UUID, verifying_chain_id: int, current_block_number: int, verifying_contract_adr: bytes, terms_hash: str, meta_hash: str, meta_data: bytes, attributes: dict, signature: bytes)[source]
abstractmethod create_coin(member_oid, coin_oid, chain_id, block_number, contract_adr, name, symbol, decimals, initial_supply, meta_hash, meta_data, signature, attributes)[source]
Async:

async create_market(member_id, market_id, chain_id, block_number, contract_adr, coin_adr, terms_hash, meta_hash, meta_data, maker, provider_security, consumer_security, market_fee, signature, attributes)[source]
get_api(api_oid, include_attributes)[source]
get_block(block_no)[source]
Parameters:

block_no

Returns:

get_catalog(catalog_oid, include_attributes)[source]
get_config(include_eula_text=False)[source]

Assemble and return configuration.

Parameters:

include_eula_text – If set, fetch and include latest EULA text.

Note

This procedure is blocking, hence run on a background thread.

Returns:

async get_market(market_oid, include_attributes, include_terms_text)[source]
Parameters:

market_oid

Returns:

async get_member(member_oid)[source]
get_status()[source]

Assemble and return current status.

Note

This procedure is blocking, hence run on a background thread.

Returns:

async join_market(member_id, market_id, chain_id, block_number, contract_adr, actor_type, meta_hash, meta_data, signature)[source]
Parameters:
  • member_id

  • market_id

  • chain_id

  • block_number

  • contract_adr

  • actor_type

  • meta_hash

  • meta_data

  • signature

Returns:

log[source]
async login_member(member_email, client_pubkey, chain_id, block_number, contract_adr, timestamp, wallet_adr, signature)[source]
Parameters:
  • member_email

  • client_pubkey

  • chain_id

  • block_number

  • contract_adr

  • timestamp

  • wallet_adr

  • signature

Returns:

async onboard_member(member_username, member_email, client_pubkey, wallet_type, wallet_adr, chain_id, block_number, contract_adr, eula_hash, profile_hash, profile_data, signature)[source]
publish_api(member_oid, catalog_oid, api_oid, verifying_chain_id, current_block_number, verifying_contract_adr, schema_hash, schema_data, meta_hash, meta_data, signature, attributes)[source]
stop()[source]
Returns:

update_market(market_oid, attributes)[source]
Parameters:

market_oid

Returns:

async verify_create_catalog(vaction_oid, vaction_code)[source]
Parameters:
  • vaction_oid

  • vaction_code

Returns:

abstractmethod verify_create_coin(vaction_oid, vaction_code)[source]
Async:

async verify_create_market(vaction_oid, vaction_code)[source]
Parameters:
  • vaction_oid

  • vaction_code

Returns:

async verify_join_market(vaction_oid, vaction_code)[source]
Parameters:
  • vaction_oid

  • vaction_code

Returns:

verify_login_member(vaction_oid, vaction_code)[source]
Parameters:
  • vaction_oid

  • vaction_code

Returns:

async verify_onboard_member(vaction_oid, vaction_code)[source]
Parameters:
  • vaction_oid

  • vaction_code

Returns:

verify_publish_api(vaction_oid, vaction_code)[source]
Parameters:
  • vaction_oid

  • vaction_code

Returns:

_IPFS_ADD_FILE_ENDPOINT = 'https://ipfs.infura.io:5001/api/v0/add'[source]
_IPFS_API_GATEWAY = 'https://ipfs.infura.io:5001/api/v0'[source]
_IPFS_CAT_FILE_ENDPOINT = 'https://ipfs.infura.io:5001/api/v0/cat?arg={file_hash}'[source]
_IPFS_PUT_DAG_ENDPOINT = 'https://ipfs.infura.io:5001/api/v0/block/put'[source]
_USERNAME_PAT[source]
_USERNAME_PAT_STR = '^[a-zA-Z][a-zA-Z0-9_]{3,14}$'[source]
_verify_meta_data(meta_hash, meta_data, meta_obj_expected)[source]
is_valid_username(username)[source]