In [7]:
from blockstack.client import BlockstackClient
# Substitute your API token
token = 'eyJraWQiOm51bGwsImFsZyI6IkhTMjU2In0.eyJpc3MiOiJibG9ja3N0YWNrIiwiYXVkIjoiYmxvY2tzdGFjayIsImV4cCI6MTc0ODI4MzUzMSwianRpIjoiZUNJTzZRdHhiclI1UFdOdmV3YXZjdyIsImlhdCI6MTQzMjkyMzUzMSwibmJmIjoxNDMyOTIzNDExLCJzdWIiOiJtaXJvbiIsImFwaSI6InRydWUifQ.o_IuoWQbD7x49MXyN-OqeApg1OK8MftFJy1JJpiOAtI'
# Substitute https://XXX.blockstack.io/api
endpoint = 'http://localhost:8080/api'
client = BlockstackClient(base_uri=endpoint, token=token)
alice = client.wallets.get('Blue')
bob = client.wallets.get('Pink')
oracle_a = client.oracles.get('Blue')
oracle_b = client.oracles.get('Pink')
print([k for k in alice.__dict__.keys()])
print(alice.currentAddress)
print(alice.currentHeight)
In [8]:
from codecs import encode
alice_txs = alice.transactions
bob_txs = bob.transactions
print(len([t.id for t in alice_txs.list()]))
partial = alice_txs.propose(atomic=True, asset='TRY', address=bob.assetAddress, amount=10000)
complete = bob_txs.create(atomic=True, asset='USD', address=alice.assetAddress, amount=100,
metadata=encode(b'foobar', 'hex').decode('utf8'), # Note: best practice is to use a hash
transaction=partial['transaction'])
signed1 = oracle_a.transactions.sign(complete.id, complete.transaction)
committed = oracle_b.transactions.broadcast(complete.id, signed1.transaction) # sign and broadcast
In [9]:
tx = alice_txs.get(committed.id)
print(tx.id)
print(tx.changes)
In [10]:
print([(a.name, a.amount) for a in alice.assets.list()])