示例#1
0
 def correct_market_precision(self, order_difference, price, asset,
                              current_cost):
     precision = Asset(asset).precision
     Asset.clear_cache()
     unrounded_payout = order_difference * price
     unrounded_payout += current_cost
     return float(round(unrounded_payout, precision))
示例#2
0
 def pool_change(self, new_pool_str):
     new_data = {}
     pool_obj = self.bs.rpc.get_object(new_pool_str.split(' ')[1])
     self.usd_val_a = 0
     self.usd_val_b = 0
     self.bts_val_a = 0
     self.bts_val_b = 0
     self.cny_val_a = 0
     self.cny_val_b = 0
     asset_a = Asset(pool_obj['asset_a'])
     asset_b = Asset(pool_obj['asset_b'])
     share_asset = Asset(pool_obj['share_asset'])
     self.pool_id = pool_obj['id']
     self.asset_a_precision = asset_a.precision
     new_data['asset_a_precision'] = self.asset_a_precision
     self.asset_b_precision = asset_b.precision
     new_data['asset_b_precision'] = self.asset_b_precision
     self.share_asset_precision = share_asset.precision
     self.virtual_value = pool_obj['virtual_value']
     self.invariant = int(self.virtual_value) / (10**(
         int(self.asset_a_precision) + int(self.asset_b_precision)))
     self.asset_a_id = asset_a.identifier
     new_data['asset_a_id'] = self.asset_a_id
     self.asset_a_symbol = asset_a.symbol
     new_data['asset_a_symbol'] = self.asset_a_symbol
     self.asset_a_balance = str(
         int(pool_obj['balance_a']) / 10**asset_a.precision)
     new_data['asset_a_balance'] = self.asset_a_balance
     self.asset_b_id = asset_b.identifier
     new_data['asset_b_id'] = self.asset_b_id
     self.asset_b_symbol = asset_b.symbol
     new_data['asset_b_symbol'] = self.asset_b_symbol
     self.asset_b_balance = str(
         int(pool_obj['balance_b']) / 10**asset_b.precision)
     new_data['asset_b_balance'] = self.asset_b_balance
     self.share_asset_id = share_asset.identifier
     new_data['share_asset_id'] = self.share_asset_id
     self.share_asset_symbol = share_asset.symbol
     new_data['share_asset_symbol'] = self.share_asset_symbol
     temp = self.bs.rpc.get_object(
         share_asset['dynamic_asset_data_id'])['current_supply']
     self.share_asset_balance = str(
         int(temp) / (10**share_asset['precision']))
     new_data['share_asset_balance'] = self.share_asset_balance
     Asset.clear_cache()
     # this is the generation of the stats panel information
     self.swap_fee = f'{pool_obj["taker_fee_percent"] / 100}%'
     new_data['swap_fee'] = self.swap_fee
     self.withdraw_fee = f'{pool_obj["withdrawal_fee_percent"] / 100}%'
     new_data['withdraw_fee'] = self.withdraw_fee
     history_info = self.generate_history(new_pool_str.split(' ')[1])
     # Get pool value
     self._get_pool_value(
         self.asset_a_symbol,
         self.asset_a_balance,
         self.asset_b_symbol,
         self.asset_b_balance,
     )
     if self.denomination == 'BitUSD':
         _precision = 2
         new_data['value'] = f'{(self.usd_val_a + self.usd_val_b):.2f} USD'
     elif self.denomination == 'BTS':
         _precision = 5
         new_data['value'] = f'{(self.bts_val_a + self.bts_val_b):.5f} BTS'
     elif self.denomination == 'BitCNY':
         _precision = 4
         new_data['value'] = f'{(self.cny_val_a + self.cny_val_b):.4f} CNY'
     new_data['swap_count'] = history_info['swap_count']
     new_data['history'] = []
     for item in history_info['history']:
         new_data['history'].append(item)
     if float(self.share_asset_balance) != 0:
         new_data[
             'poolshare_value'] = f'{round(float(new_data["value"].split(" ")[0]) / float(self.share_asset_balance), _precision)} {new_data["value"].split(" ")[1]}'
     else:
         new_data['poolshare_value'] = 0
     pub.sendMessage('update_pool_change', data=new_data)
示例#3
0
 def correct_pool_amount(self, higher_amount, lower_amount, asset):
     precision = Asset(asset).precision
     Asset.clear_cache()
     difference = higher_amount - lower_amount
     return float(round(difference, precision))
示例#4
0
                            "wss://kc-us-dex.xeldal.com/ws"
                        ]
            )

blockchain = Blockchain(
                        blockchain_instance=bitshares,
                        mode='head'
)

for op in blockchain.stream(['transfer']):
    payee = Account(op['to']).name
    from_account = Account(op['from']).name
    asset_symbol = Asset(op['amount']['asset_id']).symbol
    asset_precision = int(Asset(op['amount']['asset_id']).precision)
    amount = int(op['amount']['amount']) / (10**asset_precision)
    Asset.clear_cache()
    Account.clear_cache()
    body = '{} sent {} {} {} in block {}.'.format(
                                    from_account,
                                    payee,
                                    amount,
                                    asset_symbol,
                                    op['block_num'])
    pprint(body)
    if payee == ACCOUNT_WATCHING:
        message = client.messages.create(
                                body=body,
                                from_=BOT_PHONE_NUMBER,
                                to=YOUR_PHONE_NUMBER
                                )
        pprint(message.sid)