From a6f89fe4241088f7bab6a0a73f43dbf92112201f Mon Sep 17 00:00:00 2001 From: Ariel Gabizon Date: Fri, 14 Jul 2017 11:56:06 -0400 Subject: [PATCH] wip --- eth.py | 50 +++++++++++--------------------------------------- secret.json | 2 +- xcat.json | 2 +- zXcat.py | 2 ++ 4 files changed, 15 insertions(+), 41 deletions(-) diff --git a/eth.py b/eth.py index 3239cf3..3ed7afc 100644 --- a/eth.py +++ b/eth.py @@ -8,12 +8,20 @@ def Zcash_getaddr(): return zXcat.zcashd.getnewaddress() -def Zcash_fund(p2sh,amount): +def Zcash_fund(contract,amount): + p2sh = contract['p2sh'] fund_txid = zXcat.zcashd.sendtoaddress(p2sh,amount) - return fund_txid + contract['fund_tx'] = fund_txid + return contract def Zcash_make_contract(funder, redeemer, hash_of_secret, lock_increment): - return zXcat.make_hashtimelockcontract(funder, redeemer, hash_of_secret, lock_increment) + contract = zXcat.make_hashtimelockcontract(funder, redeemer, hash_of_secret, lock_increment) + return contract + +'''def Zcash_make_contract_random(funder, redeemer, hash_of_secret, lock_increment): + contract = zXcat.make_hashtimelockcontract(funder, redeemer, hash_of_secret, lock_increment) + return contract +''' # finds seller's redeem tx and gets secret from it def Zcash_get_secret(p2sh,fund_txid): @@ -26,39 +34,3 @@ def Zcash_refund(contract): def Zcash_redeem(contract,secret): txid = zXcat.redeem_with_secret(contract,secret) return txid - -def redeem_buyer(): - print("BUYER REDEEMING SELL CONTRACT") - print("=============================") - trade = get_trade() - buyContract = trade.buyContract - sellContract = trade.sellContract - secret = "" - # if sellContract.get_status() == 'redeemed': - # raise RuntimeError("Sell contract was redeemed before buyer could retrieve funds") - # elif buyContract.get_status() == 'refunded': - # print("buyContract was refunded to buyer") - # else: - # Buy contract is where seller disclosed secret in redeeming - if buyContract.currency == 'bitcoin': - if (bXcat.still_locked(buyContract)): - if(not hasattr(buyContract,'fund_tx')): - print("Seems address has not been funded yet. Aborting.") - quit() - secret = bXcat.find_secret(buyContract.p2sh,buyContract.fund_tx) - if(secret != ""): - print("Found secret in seller's redeem tx on bitcoin chain:", secret) - else: - if zXcat.still_locked(buyContract): - secret = zXcat.find_secret(buyContract.p2sh,buyContract.fund_tx) - if(secret != ""): - print("Found secret in seller's redeem tx on zcash chain:", secret) - redeem_tx = redeem_p2sh(sellContract, secret, buyContract) - setattr(trade.sellContract, 'redeem_tx', redeem_tx) - save(trade) - - -def generate_blocks(num): - bXcat.generate(num) - zXcat.generate(num) - diff --git a/secret.json b/secret.json index e508d60..f1fd27d 100644 --- a/secret.json +++ b/secret.json @@ -1 +1 @@ -4tqcS72n \ No newline at end of file +5Afk90Vi \ No newline at end of file diff --git a/xcat.json b/xcat.json index 46ea62d..e740e3b 100644 --- a/xcat.json +++ b/xcat.json @@ -1 +1 @@ -{"sell": {"fulfiller": "tmP3jJoyhBzAxeqpTYW9HrAt1XvJFg9gttc", "amount": "0.01", "redeemScript": "63a82044ddae444a583f19d0ebdd539cc7abb7e1aa4e54fac042486a5c1b935c4a0bf88876a9149243e230812261371e6743055ee8c6ea4181f80567024608b17576a9148e4144cee39078239a6dcd026ac65043a76254486888ac", "initiator": "tmNgXUNBTfH9TD4TwgEKK8K6Aytjph3QGtZ", "fund_tx": "9bb403ad881781818ea193f2c23eeafd02190b9aac8944b22650ffc6faff2736", "redeemblocknum": 2118, "currency": "zcash", "p2sh": "t2NPhNuYvwXVpiFA3QiZjgaeSDZwQVVKmUT"}, "buy": {"fulfiller": "mj12n62KmrWLCsjrpG1PN8iQnLy4J518s7", "amount": "1.12", "redeemScript": "63a82044ddae444a583f19d0ebdd539cc7abb7e1aa4e54fac042486a5c1b935c4a0bf88876a9141991d55a642946f5a8def2d69116619f659b89626702151fb17576a9142637c44bba94afbe236eb7587cc67e0682cd3d186888ac", "initiator": "mhr9tXrXmCXipK1ogWkhbESAmaYN1DfCQG", "fund_tx": "9c3bc5dc1aca5e722aa43f632fd7b130d9c5f972cad0f75236a210e80b1a466f", "redeemblocknum": 7957, "redeem_tx": "18ae4ff1a30111154ea40f265a47e5f18fc8b2cb785c9de80f71ad4b577d2f46", "currency": "bitcoin", "p2sh": "2N8Ru77EQ1qZtzBieZ17Q8wdEZA9SjiTJmj"}} \ No newline at end of file +{"buy": {"redeemScript": "63a8202be8f9ff8ba049cbf3ef98d4e1f61b975cda1f33bd2050cd6b382ce3e91bd01d8876a914cf37e9d86857e5dfe09dfba3ddefcbeb0e4ca6776702141fb17576a9140ee96e91d594cec695e9c792150eab63015e30816888ac", "redeemblocknum": 7956, "fulfiller": "mgsoPsbzAY3LCgNweUFoLMGKxi5EFCagBM", "initiator": "mzQd9hShqi2s7QgGsduwePN5FDU3Yj8yup", "currency": "bitcoin", "amount": "1.12", "p2sh": "2N1U3R7joYwmdYSSK19D2LHNEcKemvw3w4n"}, "sell": {"redeemScript": "63a8202be8f9ff8ba049cbf3ef98d4e1f61b975cda1f33bd2050cd6b382ce3e91bd01d8876a9145e11f686898f4e9b77c4669a5b02678daf65f7f667024608b17576a91407c64692f3e8de565e5e991f4575b5b494a605306888ac", "redeemblocknum": 2118, "fulfiller": "tmJHkNJ1fnyPsyhCR1EgwfwU2Eikzg9Cgda", "initiator": "tmARTax4dZ9A6QjF2AC5RmGhRXotf5zgfyM", "currency": "zcash", "amount": "0.01", "fund_tx": "9afb0f4d1de568b928c9d51eddba65f284bc6cea566b54192298193ad7649027", "p2sh": "t26vHfsTqZbjk5Jko8qHsrA2EJHhQns9SRo"}} \ No newline at end of file diff --git a/zXcat.py b/zXcat.py index c9f774d..a6de52e 100644 --- a/zXcat.py +++ b/zXcat.py @@ -60,6 +60,8 @@ def make_hashtimelockcontract(funder, redeemer, hash_of_secret, lock_increment): blocknum = zcashd.getblockcount() print("Current blocknum", blocknum) redeemblocknum = blocknum + lock_increment + hash_of_secret = sha256("bla") + print(type(hash_of_secret)) print("REDEEMBLOCKNUM ZCASH", redeemblocknum) zec_redeemScript = CScript([OP_IF, OP_SHA256, hash_of_secret, OP_EQUALVERIFY,OP_DUP, OP_HASH160, redeemerAddr, OP_ELSE, redeemblocknum, OP_CHECKLOCKTIMEVERIFY, OP_DROP, OP_DUP, OP_HASH160,