def cancel_all_offers(self): # 取消当前交易对的所有委单 offers = self.handle_offers_data() builder = Builder(secret=self.seed, network=self.network, horizon=self.horizon_url) for offer in offers: builder.append_manage_offer_op(selling_code=self.selling_asset.code, selling_issuer=self.selling_asset.issuer, buying_code=self.buying_asset.code, buying_issuer=self.buying_asset.issuer, amount='0', price='1', offer_id=offer['id']) builder.sign() builder.submit()
def create_offers(self): # 创建挂单。这里是两个订单 # 买入价格 = 买一价 * (1 - buying_rate) # 卖出价格 = 卖一价 * (1 + selling_rate) market_price = self.get_price() builder = Builder(secret=self.seed, network=self.network, horizon=self.horizon_url) # 卖出 base_asset selling_price = round(float(market_price['ask']) * (1 + self.selling_rate), 7) builder.append_manage_offer_op(selling_code=self.selling_asset.code, selling_issuer=self.selling_asset.issuer, buying_code=self.buying_asset.code, buying_issuer=self.buying_asset.issuer, amount=self.selling_amount, price=selling_price) # 买入 base_asset buying_tmp_price = float(market_price['bid']) * (1 - self.buying_rate) buying_price = round(1 / buying_tmp_price, 7) buying_amount = round(self.buying_amount * buying_tmp_price, 7) builder.append_manage_offer_op(selling_code=self.buying_asset.code, selling_issuer=self.buying_asset.issuer, buying_code=self.selling_asset.code, buying_issuer=self.selling_asset.issuer, amount=buying_amount, price=buying_price) builder.sign() builder.submit()
def make_offer( systemdb, source_name, asset_name, asset_source_name, amount, quote_name, quote_source_name, price, offer__id): q = Query() a_sk = systemdb.search(q.name == source_name)[0]['sk'] b = Builder(secret = a_sk, network = 'TESTNET') if asset_source_name == None: q_pk = systemdb.search(q.name == quote_source_name)[0]['pk'] b.append_manage_offer_op(asset_name, None, quote_name, q_pk, amount, price, offer_id = offer__id) elif quote_source_name == None: as_pk = systemdb.search(q.name == asset_source_name)[0]['pk'] b.append_manage_offer_op(asset_name, as_pk, quote_name, None, amount, price, offer_id = offer__id) else: as_pk = systemdb.search(q.name == asset_source_name)[0]['pk'] q_pk = systemdb.search(q.name == quote_source_name)[0]['pk'] b.append_manage_offer_op(asset_name, as_pk, quote_name, q_pk, amount, price, offer_id = offer__id) b.sign() response = b.submit() print response
def genptxs( systemdb, timestamp): """generates contract ptxs 1-3 given systemdb, including a contract manifest in production, will add ptxs will be hosted along with manifest on e.g. IPFS """ q = Query() a_sk = systemdb.search(q.name == 'Contract')[0]['sk'] a_pk = systemdb.search(q.name == 'Contract')[0]['pk'] pr_pk = systemdb.search(q.name == 'Printer')[0]['pk'] pi_pk = systemdb.search(q.name == 'Pipe')[0]['pk'] UND = systemdb.search(q.type == 'manifest')[0]['UND'] UND_pk = systemdb.search(q.type == 'manifest')[0]['UND_source'] QUO = systemdb.search(q.type == 'manifest')[0]['QUO'] QUO_pk = systemdb.search(q.type == 'manifest')[0]['QUO_source'] strike = systemdb.search(q.type == 'manifest')[0]['strike'] size = systemdb.search(q.type == 'manifest')[0]['size'] address = Address(address=a_pk, network='TESTNET') address.get() ####2 PREAUTH TX ONE ##### b = Builder( secret = str(a_sk), horizon_uri = 'https://horizon.stellar.org', network = 'TESTNET', sequence = int(address.sequence)+3) """seq incremented by two bc acct will need to add hash signer, data entry, and lock """ strikeXsize = str(int(strike)*int(size)) b.append_payment_op(pr_pk, '0.5', 'OCA', pr_pk) if QUO_pk == None: b.append_payment_op(pi_pk, strikeXsize, QUO, asset_issuer=None) else: b.append_payment_op(pi_pk, strikeXsize, QUO, QUO_pk) b.append_manage_offer_op('SPA', pr_pk, 'OCA', pr_pk, '0.0000001', '5000000', offer_id=0) b.append_manage_offer_op('GTA', pr_pk, 'SPA', pr_pk, '1', '0.0000001', offer_id=0) price = str(float(1)/int(size)) b.append_manage_offer_op(UND, UND_pk, 'GTA', pr_pk, str(size), price, offer_id=0) envelope1 = b.gen_te() hashish1 = envelope1.hash_meta() xdr1 = b.gen_xdr() systemdb.insert({ 'type': 'ptx', 'name': 'ptx1', 'xdr': xdr1 }) ####2 PREAUTH TX TWO ##### b2 = Builder( secret = a_sk, horizon_uri ='https://horizon.stellar.org', network = 'TESTNET', sequence = int(address.sequence)+3) b2.append_payment_op(pi_pk, str(strike), UND, UND_pk) b2.append_set_options_op(master_weight=1, low_threshold=0, med_threshold=0, high_threshold=0) envelope2 = b2.gen_te() hashish2 = envelope2.hash_meta() xdr2 = b2.gen_xdr() systemdb.insert({ 'type': 'ptx', 'name': 'ptx2', 'xdr': xdr2 }) ####2 PREAUTH TX THREE ##### b3 = Builder( secret = a_sk, horizon_uri ='https://horizon.stellar.org', network = 'TESTNET', sequence = int(address.sequence)+4) b3.append_set_options_op(master_weight=1, low_threshold=0, med_threshold=0, high_threshold=0) envelope3 = b3.gen_te() hashish3 = envelope3.hash_meta() xdr3 = b3.gen_xdr() systemdb.insert({ 'type': 'ptx', 'name': 'ptx3', 'xdr': xdr3 }) bX = Builder(secret = a_sk, network='TESTNET') bX.append_pre_auth_tx_signer(hashish1, 1, source=None) bX.append_pre_auth_tx_signer(hashish2, 1, source=None) bX.append_pre_auth_tx_signer(hashish3, 1, source=None) bX.sign() print bX.submit()