Exemple #1
0
 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()
Exemple #2
0
 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()
Exemple #3
0
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
Exemple #4
0
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()