def p2porders(self, moniker="", sellonly=False, buyonly=False): """Show peer to peer trade orders""" # sanitize inputs sellonly = sanitize.flag(sellonly) buyonly = sanitize.flag(buyonly) asset = None if moniker and moniker != 'bitcoin': asset = sanitize.asset(self.model, moniker) # get offers agent = self._init_p2ptrade() agent.update() offers = agent.their_offers.values() offers = map(lambda offer: offer.get_data(), offers) # filter asset if given if asset: descs = asset.get_color_set().color_desc_list def func(offer): return (offer["A"]["color_spec"] in descs or offer["B"]["color_spec"] in descs) offers = filter(func, offers) # filter sellonly if given if sellonly: offers = filter(lambda o: o["A"]["color_spec"] != "", offers) # filter buyonly if given if buyonly: offers = filter(lambda o: o["A"]["color_spec"] == "", offers) return _print(offers)
def history(self, moniker): """Show the history of transactions for given asset.""" # sanitize inputs asset = sanitize.asset(self.model, moniker) return _print(self.controller.get_history(asset))
def listaddresses(self, moniker): """Lists all addresses for a given asset""" # sanitize inputs asset = sanitize.asset(self.model, moniker) addressrecords = self.controller.get_all_addresses(asset) return _print([ao.get_color_address() for ao in addressrecords])
def dumpprivkeys(self, moniker): """Lists all private keys for a given asset.""" # sanitize inputs asset = sanitize.asset(self.model, moniker) addressrecords = self.controller.get_all_addresses(asset) return _print(map(lambda ar: ar.get_private_key(), addressrecords))
def newaddress(self, moniker): """Creates a new coloraddress for a given asset.""" # sanitize inputs asset = sanitize.asset(self.model, moniker) addressrecord = self.controller.get_new_address(asset) coloraddress = addressrecord.get_color_address() return _print(coloraddress)
def getbalance(self, moniker, unconfirmed=False, available=False): """Returns the balance for a particular asset.""" # sanitize inputs asset = sanitize.asset(self.model, moniker) unconfirmed = sanitize.flag(unconfirmed) available = sanitize.flag(available) balance = dict([self._getbalance(asset, unconfirmed, available)]) return _print(balance)
def send(self, moniker, coloraddress, amount): """Send <coloraddress> given <amount> of an asset.""" # sanitize inputs asset = sanitize.asset(self.model, moniker) coloraddress = sanitize.coloraddress(self.model, asset, coloraddress) amount = sanitize.assetamount(asset, amount) txid = self.controller.send_coins(asset, [coloraddress], [amount]) return _print(txid)
def _p2ptrade_make_offer(self, we_sell, moniker, value, price, wait): # sanitize inputs asset = sanitize.asset(self.model, moniker) bitcoin = sanitize.asset(self.model, 'bitcoin') value = sanitize.assetamount(asset, value) price = sanitize.assetamount(bitcoin, price) wait = sanitize.integer(wait) total = int(Decimal(value)/Decimal(asset.unit)*Decimal(price)) color_desc = asset.get_color_set().color_desc_list[0] sell_side = {"color_spec": color_desc, "value": value} buy_side = {"color_spec": "", "value": total} agent = self._init_p2ptrade() if we_sell: agent.register_my_offer(MyEOffer(None, sell_side, buy_side)) else: agent.register_my_offer(MyEOffer(None, buy_side, sell_side)) self._p2ptrade_wait(agent, wait)
def _p2ptrade_make_offer(self, we_sell, moniker, value, price, wait): # sanitize inputs asset = sanitize.asset(self.model, moniker) bitcoin = sanitize.asset(self.model, 'bitcoin') value = sanitize.assetamount(asset, value) price = sanitize.assetamount(bitcoin, price) wait = sanitize.integer(wait) total = int(Decimal(value) / Decimal(asset.unit) * Decimal(price)) color_desc = asset.get_color_set().color_desc_list[0] sell_side = {"color_spec": color_desc, "value": value} buy_side = {"color_spec": "", "value": total} agent = self._init_p2ptrade() if we_sell: agent.register_my_offer(MyEOffer(None, sell_side, buy_side)) else: agent.register_my_offer(MyEOffer(None, buy_side, sell_side)) self._p2ptrade_wait(agent, wait)
def dumpprivkey(self, moniker, coloraddress): """Private key for a given coloraddress.""" # sanitize inputs asset = sanitize.asset(self.model, moniker) coloraddress = sanitize.coloraddress(self.model, asset, coloraddress) wam = self.model.get_address_manager() for addressrecord in wam.get_all_addresses(): if coloraddress == addressrecord.get_color_address(): return _print(addressrecord.get_private_key()) raise AddressNotFound(coloraddress)
def received(self, moniker): """Returns total received amount for each coloraddress of a given asset. """ # sanitize inputs asset = sanitize.asset(self.model, moniker) received = {} def reformat(data): coloraddress = data['color_address'] colorvalue = data['value'].get_value() return (coloraddress, asset.format_value(colorvalue)) data = self.controller.get_received_by_address(asset) return _print(dict(map(reformat, data)))
def getasset(self, moniker): """Get the asset associated with the moniker.""" return _print(sanitize.asset(self.model, moniker).get_data())