avax-python is a Python library and set of utils for the exploration of the Avalanche AVAX cryptocurrency and its network.
The crypto.bi avax-python project began as a thin wrapper around AvalancheGo node API, but it now supports several other functionalities such as wallet address and secret phrase generation, network traffic capture, customizable protocol handlers and a lot more.
In this section we document the basics of the library. We’ll publish tutorials and use cases as we go.
avax-python is released under the MIT license.
It’s free, and will always be, to use and modify for your own projects, commercial or otherwise.
If you find
avax-python useful, please consider sending a tip to :
crypto.bi is 100% ad and tracker free, so your support is very much appreciated!
sudo pip3 install numpy
sudo pip3 install pyopenssl
sudo pip3 install cryptography
If you plan on generating the python files from
sudo pip install TatSu
Other required libraries are embedded in this project, under the
3rdparty subdirectory. You can also install these using pip, if you wish to run online:
sudo pip install mnemonic
sudo pip install py-crypto-hd-wallet
sudo pip install bip-utils
sudo pip install pysha3
We’ve embedded some of the security-related libs so that the project can run offline as much as possible, if you choose to.
Specifically, this project includes code from the following libraries under the
avax-python runs from its downloaded location.
git client is not available, then you may download a ZIP archive instead.
For the online functions, Avalanchego must be running and listening on
To use the library and utils, just :
git clone https://github.com/cryptobi/avax-python.git
For this step you’ll need the Python development headers to be installed.
E.g. on Ubuntu do :
sudo apt-get install python3-dev
python3 setup.py build
sudo python3 setup.py install
Scripts under the
offline/ directory at the project root do not make use of the network.
If you want to be extra safe and perform some actions in an air-gapped environment, then we’ve grouped the offline scripts inside this directory.
There shouldn’t be any network activity coming from any of the scripts in the
gas ecology detail erase mandate legend fever chicken rule crop detect length shoot tattoo ozone elder present attend seven tonight wild spell dash hedgehog
You can generate several wallets at once by passing a number argument:
python3 offline/wallet/generate_wallets.py 3
orphan decline express slogan hub oven frequent must approve kitchen clarify cargo journey pony armor potato chase during uphold critic cover ankle club media
clinic supply vault slice style news front casual predict vital depth among wolf diagram gas used dolphin peasant pact wrong chaos science mixture crowd
drill abstract solar magic crash derive chief fish mention sausage tenant drum violin enroll excess wife capable special tent venue predict captain museum question
Given a mnemonic phrase, list AVAX addresses:
python3 offline/wallet/addresses_from_mnemonic.py drill abstract solar magic crash derive chief fish mention sausage tenant drum violin enroll excess wife capable special tent venue predict captain museum question
First, generate user/password credentials for your node.
Then, enter your username and password on
python3 send-x-p.py <dest_P_addr> <amount_nAVA>
to send funds from X-Chain to P-Chain, then
If you update the
api.specification file, then you must regenerate the API metainformation file
To recreate it, run generate_api.py:
spec2py.py script reads the API specification in
api.specification, the grammar in
api.tatsu and generates an AST which can be used to implement the API in any language.
If you need to customize the API, the
api.specification file format is very simple.
api.specification file and follow the same syntax for function definitions.
To customize the generator grammar, see the Tatsu documentation
Note that changing the grammar will require changes to
spec2py.py. The generator uses hard coded offsets which will break if the grammar is modified.
Where possible, the python sources follow the same directory structure as the reference Go implementation.
It isn’t always possible to keep the code exactly the same, because Go and Python differ in many ways. For example, Go names which are defined in one file and are automatically available across a package in multiple sources, must be explicitly part of some Python module. This leads to some apparent namespace redundancy, like
genesis.genesis.FromConfig(...). You can often mitigate this by working the import statement in Python, e.g.
from genesis import genesis.
We’ve tried to make the code as intuitive as possible for those familiar with the Go implementation. Just keep in mind it isn’t always possible.
This software released under the MIT license.
See the LICENSE file in this distribution for details.
Avalanche and AVAX are registered trademarks of Ava Labs Inc.
This is not an official Ava Labs project. We are in no way affiliated with Ava Labs.
This free open source software provided for Avalanche AVAX learning and exploration purposes.