diff --git a/README.md b/README.md index 9d220d16..baedc2e9 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ The edits are found under interledger/core.py and interledger/tests/test_connect To run the interledger test, [install bigchaindb](#gettingstarted) ``` $0> rethinkdb & -$1> bigchaindb -c interledger/tests/bigchain.json start -$2> bigchaindb -c interledger/tests/megachain.json start -$3> python3 interledger/tests/test_connector.py +$1> bigchaindb -c examples/interledger/tests/bigchain.json start +$2> bigchaindb -c examples/interledger/tests/megachain.json start +$3> python3 examples/interledger/tests/test_connector.py ``` - [x] multisig diff --git a/interledger/__init__.py b/examples/__init__.py similarity index 100% rename from interledger/__init__.py rename to examples/__init__.py diff --git a/examples/accounts.py b/examples/accounts.py new file mode 100644 index 00000000..daebb006 --- /dev/null +++ b/examples/accounts.py @@ -0,0 +1,45 @@ + + +class User: + def __init__(self, ledger): + self.ledger = ledger + self.private, self.public = ledger.generate_keys() + self.assets = [] + + def create_asset(self): + tx = self.ledger.create_transaction(self.ledger.me, self.public, None, 'CREATE') + tx_signed = self.ledger.sign_transaction(tx, self.ledger.me_private) + self.ledger.validate_transaction(tx_signed) + self.ledger.write_transaction(tx_signed) + self.assets.append(tx_signed) + + def create_assets(self, amount=1): + for i in range(amount): + self.create_asset() + + +class Escrow(User): + def __init__(self, ledger=None, current_owner=None, new_owner=None, + asset_id=None, condition_func=None, payload=None): + User.__init__(self, ledger) + self.condition_func = condition_func if condition_func else lambda proof: True + self.new_owner = new_owner + tx = self.ledger.create_transaction(current_owner, + [current_owner, self.public], + asset_id, + 'TRANSFER', + payload) + self.assets = tx + + def release(self, receipt=None): + if not self.validate(receipt): + raise Exception + tx = self.ledger.create_transaction(self.assets['transaction']['new_owners'], + self.new_owner, + self.assets['id'], + 'TRANSFER', + self.assets['transaction']['data']['payload']) + return self.ledger.sign_transaction(tx, self.private, self.public) + + def validate(self, receipt): + return self.condition_func(receipt) diff --git a/interledger/tests/__init__.py b/examples/interledger/__init__.py similarity index 100% rename from interledger/tests/__init__.py rename to examples/interledger/__init__.py diff --git a/interledger/core.py b/examples/interledger/connector.py similarity index 63% rename from interledger/core.py rename to examples/interledger/connector.py index 598038d2..5d26a6b6 100644 --- a/interledger/core.py +++ b/examples/interledger/connector.py @@ -1,48 +1,4 @@ - - -class User: - def __init__(self, ledger): - self.ledger = ledger - self.private, self.public = ledger.generate_keys() - self.assets = [] - - def create_asset(self): - tx = self.ledger.create_transaction(self.ledger.me, self.public, None, 'CREATE') - tx_signed = self.ledger.sign_transaction(tx, self.ledger.me_private) - self.ledger.validate_transaction(tx_signed) - self.ledger.write_transaction(tx_signed) - self.assets.append(tx_signed) - - def create_assets(self, amount=1): - for i in range(amount): - self.create_asset() - - -class Escrow(User): - def __init__(self, ledger=None, current_owner=None, new_owner=None, - asset_id=None, condition_func=None, payload=None): - User.__init__(self, ledger) - self.condition_func = condition_func if condition_func else lambda proof: True - self.new_owner = new_owner - tx = self.ledger.create_transaction(current_owner, - [current_owner, self.public], - asset_id, - 'TRANSFER', - payload) - self.assets = tx - - def release(self, receipt=None): - if not self.validate(receipt): - raise Exception - tx = self.ledger.create_transaction(self.assets['transaction']['new_owners'], - self.new_owner, - self.assets['id'], - 'TRANSFER', - self.assets['transaction']['data']['payload']) - return self.ledger.sign_transaction(tx, self.private, self.public) - - def validate(self, receipt): - return self.condition_func(receipt) +from examples.accounts import User, Escrow class LedgerConnection(User): diff --git a/examples/interledger/tests/__init__.py b/examples/interledger/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/interledger/tests/bigchain.json b/examples/interledger/tests/bigchain.json similarity index 100% rename from interledger/tests/bigchain.json rename to examples/interledger/tests/bigchain.json diff --git a/interledger/tests/megachain.json b/examples/interledger/tests/megachain.json similarity index 100% rename from interledger/tests/megachain.json rename to examples/interledger/tests/megachain.json diff --git a/interledger/tests/test_connector.py b/examples/interledger/tests/test_connector.py similarity index 90% rename from interledger/tests/test_connector.py rename to examples/interledger/tests/test_connector.py index 79b21750..701f8b8b 100644 --- a/interledger/tests/test_connector.py +++ b/examples/interledger/tests/test_connector.py @@ -2,10 +2,11 @@ import json from time import sleep from bigchaindb import Bigchain -from interledger.core import User, Connector +from examples.accounts import User +from examples.interledger.connector import Connector -config_bigchain = json.load(open('interledger/tests/bigchain.json', 'r')) -config_megachain = json.load(open('interledger/tests/megachain.json', 'r')) +config_bigchain = json.load(open('bigchain.json', 'r')) +config_megachain = json.load(open('megachain.json', 'r')) bigchain = Bigchain(dbname=config_bigchain['database']['name'], public_key=config_bigchain['keypair']['public'],