Python client library used in SKALE network components.
- Python 3.7+ support
- Compatibility with
web3.py
v6
pip install skale.py
- Ledger Wallet (works with Ledger Nano S and other models)
- RPC Wallet (works with SKALE Transactions Manager)
- SGX Wallet (works with SKALE SGX Wallet)
- Web3 Wallet (works with
web3.py
embeded functions)
With embeded Web3Wallet
from skale import SkaleManager
from skale.wallets import Web3Wallet
from skale.utils.web3_utils import init_web3
web3 = init_web3(ENDPOINT)
wallet = Web3Wallet(private_key, web3)
skale = Skale(ENDPOINT, ABI_FILEPATH, wallet)
With external transactions manager:
from skale import SkaleManager
from skale.wallets import RPCWallet
web3 = init_web3(ENDPOINT)
wallet = RPCWallet(TM_URL)
skale = Skale(ENDPOINT, ABI_FILEPATH, wallet)
Interactions with SKALE contracts
active_nodes = skale.nodes.get_active_node_ips()
schains = skale.schains.get_schains_for_owner('0x...')
Due to the web3.py v5 limitations you have to create separate instances of the skale.py for the each thread.
Take a look on the tests/multithreading_test.py
for the reference.
You can find usage examples here.
virtualenv venv
. venv/bin/activate
pip install -e .[dev]
bash build_and_publish.sh major/minor/patch
export $(cat .env | xargs) && bash build_and_publish.sh major/minor/patch
Show flake8 errors on file change:
# Test flake8
WHEN_CHANGED_EVENT=file_modified when-changed -v -s -r -1 skale/ tests/ examples/ -c "clear; flake8 web3 tests ens && echo 'flake8 success' || echo 'error'"
Install when-changed
:
pip install https://github.com/joh/when-changed/archive/master.zip
The version scheme for this repo is {major}.{minor}.{patch}
For more details see: https://semver.org/
Run local ganache and deploy SKALE Manager:
MANAGER_TAG=... ETH_PRIVATE_KEY=... bash scripts/deploy_manager.sh
Running full test suite:
bash scripts/run_tests.sh
Running test suite manually:
See tests/README.md
All contributions are made under the GNU Affero General Public License v3. See LICENSE.