Getting Started¶
Let’s find out how to use HeraPy quickly with a few examples.
Installation¶
- Python3 (>= 3.7)
Setup your environment and install aergo-herapy
$ cd my_new_project
$ virtualenv -p python3 venv
$ source venv/bin/activate
$ pip install aergo-herapy
Connecting to Aergo¶
Connecting to Aergo can be done with a public api like ‘testnet-api.aergo.io:7845’ or by running your own Aergo node.
1 2 3 4 5 6 7 8 | import aergo.herapy as herapy
aergo = herapy.Aergo()
aergo.connect('testnet-api.aergo.io:7845')
print(aergo.get_chain_info())
aergo.disconnect()
|
Creating a new Account¶
Connecting to Aergo is optional when creating new accounts with the parameter skip_state=True.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import aergo.herapy as herapy
aergo = herapy.Aergo()
# connect to a node to retrieve the account state (nonce, balance...)
# aergo.connect('testnet-api.aergo.io:7845')
# aergo.new_account()
# create a new account offline
aergo.new_account(skip_state=True)
# print the address
print(aergo.get_address())
# print the address as bytes
print(bytes(aergo.get_address()))
|
Exporting/Importing an Account¶
For using an account created in various other SDKs and Aergocli, the prefered method is to import an Aergo encrypted keystore file.
Connecting to a node is optional.
1 2 3 4 5 6 7 8 | import aergo.herapy as herapy
aergo = herapy.Aergo()
aergo.new_account(skip_state=True)
exp_account = aergo.export_account_to_keystore("keep-safe")
aergo2 = herapy.Aergo()
aergo2.import_account_from_keystore(exp_account, "keep-safe", skip_state=True)
|
Creating a Transaction¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import aergo.herapy as herapy
# connect to a node
aergo = herapy.Aergo()
aergo.connect('testnet-api.aergo.io:7845')
keystore_file_path = "./my/keystore.json"
# import account from keystore file and get current nonce
aergo.import_account_from_keystore_file(keystore_file_path, "keep-safe")
# transfer 1 aergo
tx, status = aergo.transfer(to_address, 1 * 10**18)
assert result.status == herapy.CommitStatus.TX_OK
receipt = aergo.wait_tx_result(tx.tx_hash)
assert receipt.status == herapy.TxResultStatus.SUCCESS:
|
Deploying and calling smart contracts¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import aergo.herapy as herapy
# connect to a node
aergo = herapy.Aergo()
aergo.connect('testnet-api.aergo.io:7845')
keystore_file_path = "./my/keystore.json"
# import account from keystore file and get current nonce
aergo.import_account_from_keystore_file(keystore_file_path, "keep-safe")
# deploy a new contract
payload = "Compiled contract string"
tx, result = aergo.deploy_sc(amount=0, payload=payload, args=1234)
assert result.status == herapy.CommitStatus.TX_OK
receipt = aergo.wait_tx_result(tx.tx_hash)
assert receipt.status == herapy.TxResultStatus.CREATED:
# get address of newly deployed contract
sc_address = receipt.contract_address
# send a transaction to a contract (write)
tx, result = aergo.call_sc(sc_address, "lua function name")
assert result.status == herapy.CommitStatus.TX_OK
assert receipt.status == herapy.TxResultStatus.SUCCESS:
receipt = aergo.wait_tx_result(tx.tx_hash)
# query a contract function (read-only)
return_value = aergo.query_sc(sc_address, "lua function name")
|