Updated version of aioeos to no longer rely on API calls to serialize data. Integrates https://github.com/stuckatsixpm/antelopy to serialize instead. Should be usable as a drop-in replacement for the original aioeos.
For Documentation: See the original aioeos Docs. Only difference is that sign_and_push_transaction
now lets you specify if you want to use a stored ABI or fetch a new one. Also two new helper functions.
-
smart_sign_and_push_transaction: Signs and pushes a transaction using the cached ABI, refetching the ABI if the first try fails.
-
push_actions: Pushed out a transaction, trying out various endpoints until one succeeds.
Async Python library for interacting with EOS.io blockchain.
- Async JSON-RPC client.
- Signing and verifying transactions using private and public keys.
- Serializer for basic EOS.io blockchain ABI types.
- Helpers which provide an easy way to generate common actions, such as token transfer.
Library is available on PyPi, you can simply install it using pip
.
$ pip install aioeosabi
from aioeosabi import EosAccount
account = EosAccount(private_key='your key')
from aioeosabi import EosJsonRpc, EosTransaction
from aioeosabi.contracts import eosio_token
rpc = EosJsonRpc(url='http://127.0.0.1:8888')
block = await rpc.get_head_block()
transaction = EosTransaction(
ref_block_num=block['block_num'] & 65535,
ref_block_prefix=block['ref_block_prefix'],
actions=[
eosio_token.transfer(
from_addr=account.name,
to_addr='mysecondacc1',
quantity='1.0000 EOS',
authorization=[account.authorization('active')]
)
]
)
await rpc.sign_and_push_transaction(transaction, keys=[account.key])
from aioeosabi import EosJsonRpc, EosTransaction, EosAuthority
from aioeosabi.contracts import eosio
main_account = EosAccount(name='mainaccount1', private_key='private key')
new_account = EosAccount(name='mysecondacc1')
owner = EosAuthority(
threshold=1,
keys=[new_account.key.to_key_weight(1)]
)
rpc = EosJsonRpc(url='http://127.0.0.1:8888')
block = await rpc.get_head_block()
await rpc.sign_and_push_transaction(
EosTransaction(
ref_block_num=block['block_num'] & 65535,
ref_block_prefix=block['ref_block_prefix'],
actions=[
eosio.newaccount(
main_account.name,
new_account.name,
owner=owner,
authorization=[main_account.authorization('active')]
),
eosio.buyrambytes(
main_account.name,
new_account.name,
2048,
authorization=[main_account.authorization('active')]
)
],
),
keys=[main_account.key]
)
Docs and usage examples are available here.
To run unit tests, you need to bootstrap an EOS testnet node first. Use the provided ensure_eosio.sh
script.
$ ./ensure_eosio.sh