Blockstack API (https://blockstack.io/)

Examples


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)


['currentHeight', 'netBalances', 'allBalances', 'auth', 'assetAddress', 'balances', 'assets', 'currentAddress', 'timeout', 'transactions', 'name', 'parent', 'id', 'base_uri']
n28GL4QGBnc7XGvAo3uVunqFAqdiYtEWSe
659

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


20

In [9]:
tx = alice_txs.get(committed.id)
print(tx.id)
print(tx.changes)


d73870a36b187db54128c5859b33ea10392c692eac64284e6f34795b90e3b56a
{'TRY': -10000, 'USD': 100, 'Tokens': -20287}

In [10]:
print([(a.name, a.amount) for a in alice.assets.list()])


[('CZK', 60000000000), ('RUB', 60000000000), ('UNKNOWN', 0), ('USD', 60000000000), ('Bitcoin', 0), ('CNH', 60000000000), ('GOOG', 60000000000), ('PLN', 60000000000), ('TRY', 60000000000), ('EUR', 60000000000), ('AAPL', 60000000000), ('HUF', 60000000000)]