This commit is contained in:
Ariel Gabizon 2017-07-14 15:53:47 -04:00
parent a6f89fe424
commit 3dcd20c767
2 changed files with 30 additions and 15 deletions

16
eth.py
View File

@ -1,12 +1,14 @@
import zXcat import zXcat
import bXcat import bXcat
from xcat import * from xcat import *
from zXcat import b2x,lx
print("Starting test of xcat...") print("Starting test of xcat...")
def Zcash_getaddr(): def Zcash_getaddr():
return zXcat.zcashd.getnewaddress() return zXcat.zcashd.getnewaddress()
def Zcash_generate(i):
zXcat.zcashd.generate(i)
def Zcash_fund(contract,amount): def Zcash_fund(contract,amount):
p2sh = contract['p2sh'] p2sh = contract['p2sh']
@ -24,13 +26,17 @@ def Zcash_make_contract(funder, redeemer, hash_of_secret, lock_increment):
''' '''
# finds seller's redeem tx and gets secret from it # finds seller's redeem tx and gets secret from it
def Zcash_get_secret(p2sh,fund_txid): def Zcash_get_secret(contract):
return zXcat.find_secret(p2sh,fund_tx) print("HERE", b2x(lx(b2x(contract['fund_tx']))))
return zXcat.find_secret(contract['p2sh'], b2x(lx(b2x(contract['fund_tx']))))
def Zcash_refund(contract): def Zcash_refund(contract):
contractobj = Contract(contract)
return zXcat.redeem_after_timelock(contract) return zXcat.redeem_after_timelock(contract)
# returns txid of redeem transaction with secret # returns txid of redeem transaction with secret
def Zcash_redeem(contract,secret): def Zcash_redeem(contract, secret):
txid = zXcat.redeem_with_secret(contract,secret) contractobj = Contract(contract)
txid = zXcat.redeem_with_secret(contractobj, secret)
return txid return txid

View File

@ -7,7 +7,7 @@ import sys
if sys.version_info.major < 3: if sys.version_info.major < 3:
sys.stderr.write('Sorry, Python 3.x required by this example.\n') sys.stderr.write('Sorry, Python 3.x required by this example.\n')
sys.exit(1) sys.exit(1)
import trades
import zcash import zcash
import zcash.rpc import zcash.rpc
from zcash import SelectParams from zcash import SelectParams
@ -60,7 +60,7 @@ def make_hashtimelockcontract(funder, redeemer, hash_of_secret, lock_increment):
blocknum = zcashd.getblockcount() blocknum = zcashd.getblockcount()
print("Current blocknum", blocknum) print("Current blocknum", blocknum)
redeemblocknum = blocknum + lock_increment redeemblocknum = blocknum + lock_increment
hash_of_secret = sha256("bla") # hash_of_secret = sha256("blaa")
print(type(hash_of_secret)) print(type(hash_of_secret))
print("REDEEMBLOCKNUM ZCASH", redeemblocknum) print("REDEEMBLOCKNUM ZCASH", redeemblocknum)
zec_redeemScript = CScript([OP_IF, OP_SHA256, hash_of_secret, OP_EQUALVERIFY,OP_DUP, OP_HASH160, zec_redeemScript = CScript([OP_IF, OP_SHA256, hash_of_secret, OP_EQUALVERIFY,OP_DUP, OP_HASH160,
@ -113,30 +113,36 @@ def find_transaction_to_address(p2sh):
def find_secret(p2sh,vinid): def find_secret(p2sh,vinid):
zcashd.importaddress(p2sh, "", True) zcashd.importaddress(p2sh, "", True)
# is this working? # is this working?
zcashd.listtransactions()
txs = zcashd.listtransactions() txs = zcashd.listtransactions()
# print("==========================================LISTTT============", txs) print("==========================================LISTTT============", len(txs))
# print() # print()
# print('LENNNNNNN:', len(txs)) # print('LENNNNNNN:', len(txs))
# print('LENNNNNNN2:', len(txs)) # print('LENNNNNNN2:', len(txs))
for tx in txs: for i in range(0,len(txs)):
print("blabla", len(txs))
tx = txs[i]
# print(tx)
# print("tx addr:", tx['address'], "tx id:", tx['txid']) # print("tx addr:", tx['address'], "tx id:", tx['txid'])
# print(type(tx['address'])) # print(type(tx['address']))
# print(type(p2sh)) # print(type(p2sh))
# print('type::',type(tx['txid'])) # print('type::',type(tx['txid']))
raw = zcashd.gettransaction(lx(tx['txid']))['hex'] raw = zcashd.gettransaction(lx(tx['txid']))['hex']
decoded = zcashd.decoderawtransaction(raw) decoded = zcashd.decoderawtransaction(raw)
print(decoded)
# print("fdsfdfds", decoded['vin'][0]) # print("fdsfdfds", decoded['vin'][0])
if('txid' in decoded['vin'][0]): if('txid' in decoded['vin'][0]):
sendid = decoded['vin'][0]['txid'] sendid = decoded['vin'][0]['txid']
# print("sendid:", sendid) print("sendid:", sendid)
if (sendid == vinid ): if (sendid == vinid ):
# print(type(tx['txid'])) # print(type(tx['txid']))
# print(str.encode(tx['txid'])) # print(str.encode(tx['txid']))
print("Here")
return parse_secret(lx(tx['txid'])) return parse_secret(lx(tx['txid']))
print("Redeem transaction with secret not found") print("Redeem transaction with secret not found")
return "" return ""
def parse_secret(txid): def parse_secret(txid):
@ -147,7 +153,10 @@ def parse_secret(txid):
print("Decoded", scriptSig) print("Decoded", scriptSig)
asm = scriptSig['asm'].split(" ") asm = scriptSig['asm'].split(" ")
pubkey = asm[1] pubkey = asm[1]
print("asm2", asm[2])
secret = hex2str(asm[2]) secret = hex2str(asm[2])
# secret = asm[2] # .strip().decode('hex')
redeemPubkey = P2PKHBitcoinAddress.from_pubkey(x(pubkey)) redeemPubkey = P2PKHBitcoinAddress.from_pubkey(x(pubkey))
print('redeemPubkey', redeemPubkey) print('redeemPubkey', redeemPubkey)
print(secret) print(secret)
@ -286,7 +295,7 @@ def redeem_with_secret(contract, secret):
amount = check_funds(p2sh) amount = check_funds(p2sh)
if(amount < minamount): if(amount < minamount):
print("address ", p2sh, " not sufficiently funded") print("address ", p2sh, " not sufficiently funded")
return false return False
fundtx = find_transaction_to_address(p2sh) fundtx = find_transaction_to_address(p2sh)
amount = fundtx['amount'] / COIN amount = fundtx['amount'] / COIN
p2sh = P2SHBitcoinAddress(p2sh) p2sh = P2SHBitcoinAddress(p2sh)