Go to file
Jay Graber c3cca59243 Add .gitignore 2017-05-12 16:11:43 -07:00
__pycache__ Add scripts and daemon code 2017-05-09 16:19:03 -07:00
.gitignore Add .gitignore 2017-05-12 16:11:43 -07:00
README.md Edit README 2017-05-12 16:10:06 -07:00
btc-p2sh-htlc.py Edit README 2017-05-12 16:10:06 -07:00
protocol-pseudocode.py Refactor to use python-bitcoinlib rpc proxy 2017-05-12 15:59:37 -07:00
requirements.txt Edit README 2017-05-12 16:10:06 -07:00

README.md

ZBXCAT

A work-in-progress for Zcash Bitcoin Cross-Chain Atomic Transactions

Contains basic scripts we're still testing in regtest mode on both networks. This may all be refactored as we go.

Bitcoin scripts use the rpc proxy code in python-bitcoinlib, and Zcash script will use python-zcashlib (a Zcash fork of python-bitcoinlib).

Current status of scripts

The script btc-p2sh-htlc.py creates and redeems a p2sh transaction on Bitcoin regtest using a preimage. Locktime scripting still needs work.

To successfully run it, you'll need python3, the dependencies installed, and a bitcoin daemon running in regtest mode.

To install python3 in a virtualenv, run this command from the top level of the directory:

virtualenv -p python3 venv
source venv/bin/activate

To install dependencies, run:

pip install -r requirements.txt

To run a bitcoin daemon in regtest mode, with the ability to inspect transactions outside your wallet (useful for testing purposes), use the command

bitcoind -regtest -txindex=1 --daemon

Installing python-zcashlib for testing and editing

The Zcash fork of python-bitcoinlib is currently in progress:

git clone https://github.com/arcalinea/python-bitcoinlib/tree/zcashlib

You can install this module locally through pip, in editable mode, so that changes you make are applied immediately. To install from local filesystem path:

pip install --editable (-e) <path-to-zcashlib>

Misc

protocol-pseudocode.py is guaranteed to not run. It was written as a brainstorm/sketch of a hypothetical xcat protocol using @ebfull's fork of Zcash/Bitcoin that supports createhtlc as an rpc command. Including here in case it's useful in any way.

I used the module future to make existing python2 code for the rpc interface compatible with python3.