Merge branch 'master' of github.com:zcash/ZBXCAT

This commit is contained in:
Jay Graber 2017-08-25 09:12:07 -07:00
commit f05a566348
4 changed files with 75 additions and 41 deletions

View File

@ -155,9 +155,12 @@ def checktrade(tradeid):
def newtrade(tradeid, **kwargs):
print("Creating new XCAT trade...")
erase_trade()
trade = seller_init(tradeid, **kwargs)
tradeid, trade= initialize_trade(tradeid, conf=kwargs['conf'])
print("Trade", trade)
trade = seller_init(tradeid, trade)
print("\nUse 'xcat exporttrade [tradeid]' to export the trade and sent to the buyer.\n")
save_state(trade, tradeid)
return trade
def listtrades():
print("Trades")
@ -213,7 +216,11 @@ def main():
elif command == 'newtrade':
if len(args.arguments) < 1: throw("Usage: newtrade [tradeid]")
tradeid = args.arguments[0]
newtrade(tradeid, network=args.network, conf=args.conf)
print("Args.conf", args.conf)
if args.conf == None:
newtrade(tradeid, network=args.network, conf='cli')
else:
newtrade(tradeid, network=args.network, conf=args.conf)
elif command == "daemon":
#TODO: not implemented
print("Run as daemon process")

View File

@ -162,21 +162,19 @@ def buyer_fulfill(trade):
print("Please wait for the seller to remove your funds from escrow to complete the trade.")
print_trade('buyer')
def seller_init(tradeid, **kwargs):
if kwargs['conf']:
conf = kwargs['conf'].upper()
if conf.upper() == 'REGTEST':
init_addrs = REGTEST['initiator']
fulfill_addrs = REGTEST['fulfiller']
elif conf.upper() == 'TESTNET':
init_addrs = TESTNET['initiator']
fulfill_addrs = TESTNET['fulfiller']
else:
def initialize_trade(tradeid, **kwargs):
trade = Trade()
print("kwargs", kwargs)
conf = kwargs['conf']
if conf == 'cli':
init_addrs = userInput.get_initiator_addresses()
fulfill_addrs = userInput.get_fulfiller_addresses()
trade = Trade()
amounts = userInput.get_trade_amounts()
amounts = userInput.get_trade_amounts()
print("AMOUNTS", amounts)
else:
init_addrs = ADDRS[conf]['initiator']
fulfill_addrs = ADDRS[conf]['fulfiller']
amounts = ADDRS[conf]['amounts']
sell = amounts['sell']
buy = amounts['buy']
@ -192,7 +190,10 @@ def seller_init(tradeid, **kwargs):
trade.buy = Contract(buy)
print(trade.sell.__dict__)
print(trade.buy.__dict__)
return tradeid, trade
def seller_init(tradeid, trade):
secret = generate_password()
db.save_secret(tradeid, secret)
print("\nGenerated a secret preimage to lock funds. This will only be stored locally: ", secret)
@ -202,8 +203,9 @@ def seller_init(tradeid, **kwargs):
sell_locktime = 20
buy_locktime = 10 # Must be more than first tx
print("Creating pay-to-script-hash for sell contract...")
create_sell_p2sh(trade, hash_of_secret, sell_locktime)
# create the p2sh addrs
create_sell_p2sh(trade, hash_of_secret, sell_locktime)
create_buy_p2sh(trade, hash_of_secret, buy_locktime)
trade.commitment = b2x(hash_of_secret)

View File

@ -1,6 +1,8 @@
import unittest
import xcat.cli as cli
import xcat.db as db
from xcat.tests.utils import mktrade
from xcat.trades import Trade, Contract
class SimpleTestCase(unittest.TestCase):
def setUp(self):
@ -11,18 +13,39 @@ class SimpleTestCase(unittest.TestCase):
self.assertTrue(int(self.hexstr, 16))
def test_importtrade(self):
trade = cli.importtrade(self.__class__.hexstr, 'test')
trade = cli.importtrade('test', self.__class__.hexstr)
class CliTest(SimpleTestCase):
def test_findtrade(self):
trade = cli.findtrade('test')
def test_newtrade(self):
cli.newtrade('test2')
cli.newtrade('test2')
cli.checkBuyStatus('test2')
cli.checkSellStatus('test2')
cli.checkBuyStatus('test2')
trade = cli.newtrade('new', conf='regtest')
self.assertTrue(isinstance(trade, Trade))
def test_fundsell(self):
trade = db.get('new')
status = cli.seller_check_status(trade)
print("Trade status: {0}\n".format(status))
self.assertEqual(status, 'init')
fund_tx = cli.fund_sell_contract(trade)
print("Sent fund_tx", fund_tx)
# def test_fundbuy(self):
# trade = db.get('new')
# status = cli.buyer_check_status(trade)
# self.assertEqual(status, 'sellerFunded')
# fund_tx = cli.fund_contract(trade.buy)
#
# def test_seller_redeem(self):
# trade = db.get('new')
# status = cli.seller_check_status(trade)
# self.assertEqual(status, 'buyerFunded')
#
# def test_buyer_redeem(self):
# trade = db.get('new')
# status = cli.buyer_check_status(trade)
# self.assertEqual(status, 'sellerFunded')
if __name__ == '__main__':
unittest.main()

View File

@ -1,22 +1,24 @@
# Replace with your own addresses
REGTEST = {
"initiator": {
"bitcoin": "mvc56qCEVj6p57xZ5URNC3v7qbatudHQ9b",
"zcash": "tmTF7LMLjvEsGdcepWPUsh4vgJNrKMWwEyc"
# Replace these with your own addresses
ADDRS = {
'regtest': {
"initiator": {
"bitcoin": "mvc56qCEVj6p57xZ5URNC3v7qbatudHQ9b",
"zcash": "tmTF7LMLjvEsGdcepWPUsh4vgJNrKMWwEyc"
},
"fulfiller": {
"bitcoin": "moRt56gJQGDNK46Y6fYy2HbooKnQXrTGDN",
"zcash": "tmK3rGzHDqa78MCwEicx9VcY9ZWX9gCF2nd"
},
"amounts": {'buy': {'currency': 'zcash', 'amount': 0.02}, 'sell': {'currency': 'bitcoin', 'amount': 0.01}}
},
"fulfiller": {
"bitcoin": "moRt56gJQGDNK46Y6fYy2HbooKnQXrTGDN",
"zcash": "tmK3rGzHDqa78MCwEicx9VcY9ZWX9gCF2nd"
}
}
TESTNET = {
"initiator": {
"bitcoin": "mvc56qCEVj6p57xZ5URNC3v7qbatudHQ9b",
"zcash": "tmTF7LMLjvEsGdcepWPUsh4vgJNrKMWwEyc"
},
"fulfiller": {
"bitcoin": "mgRG44X4PQC1ZCA4V654UZjJGJ3pxbApj2",
"zcash": "tmLZu7MdjNdA6vbPTNTwdsZo91LnnrVTYB5"
'testnet': {
"initiator": {
"bitcoin": "mvc56qCEVj6p57xZ5URNC3v7qbatudHQ9b",
"zcash": "tmTF7LMLjvEsGdcepWPUsh4vgJNrKMWwEyc"
},
"fulfiller": {
"bitcoin": "mgRG44X4PQC1ZCA4V654UZjJGJ3pxbApj2",
"zcash": "tmLZu7MdjNdA6vbPTNTwdsZo91LnnrVTYB5"
}
}
}