Skip to main content

A tool for access to SKALE smart contracts

Project description

SKALE Contracts Python

Description

The library simplifies development of dApps that interact with smart contracts in SKALE infrastructure using python.

Features

  • Resolving of addresses of SKALE contracts on different networks
  • Providing up to date ABI for SKALE contracts (they may change over time due to upgradeable nature of some contracts)
  • Automatic creation of Contract objects using web3
  • Supports web3 library versions >= 7, < 8

Importing the library

pip install skale-contracts

Setup repo locally

  1. Clone the repo
git clone --recurse-submodules https://github.com/skalenetwork/skale-contracts.git && cd skale-contracts
  1. Install dependencies
cd python && pip install -e . && pip3 install -r scripts/requirements.txt && pip3 install -r tests/requirements.txt

Running tests (python)

  1. set ENDPOINT environment variable using either option:

    export ENDPOINT="http://my.mainnet.endpoint/my-api-key"
    

    or

    echo 'ENDPOINT="http://my.mainnet.endpoint/my-api-key"' > .env
    
  2. run tests

pytest -v
  1. run tests with coverage report (optional)
pytest --cov=./ --cov-report=xml -v

The tests require reliable network connection as they will fetch information like: - stable versions of skale projects - deployed versions of skale projects - ABIs of smart-contracts - perform read operations to some deployed smart-contracts on Mainnet and SKALE's Europa-chain

Glossary

Main abstractions used by the library are provided below:

Network

Represents the blockchain where smart contracts are deployed.

It could be Ethereum mainnet, goerli, SKALE chain or similar ethereum compatible chain.

Project

SKALE set of smart contracts grouped into a project to serve a particular purpose.

Examples of projects are IMA, skale-manager or etherbase.

Instance

An instance represents a particular project deployed to a particular network.

For example IMA on Ethereum mainnet or etherbase on some of SKALE chains.

Alias

An alias is a textual name of an instance.

Usage

The library provides a master object skale_contracts.

This object is used to provide the desired network, project and instance using it's alias or direct address.

By instantiating a particular instance, it can be queried for information (address, ABI or Contract object) about a particular contract by it's name.

Usage Example

from web3 import HTTPProvider, Web3
from skale_contracts import skale_contracts
from skale_contracts.project_factory import SkaleProject, create_project
from skale_contracts.projects.skale_manager import SkaleManagerContract

# Any provider type that inherits from web3 BaseProvider
provider = Web3.HTTPProvider(MAINNET_ENDPOINT)
network = skale_contracts.get_network_by_provider(provider)
project = create_project(network, SkaleProject.SKALE_MANAGER)

# loading production instance of skale-manager deployed on ethereum mainnet
instance = project.get_instance('production')

# returns all contract names that can be queried using this instance
all_contract_names = instance.get_contract_names()

# get specific contract object
skale_manager_contract = instance.getContract(SkaleManagerContract.SKALE_MANAGER)

# will query the smart-contract. In this case, queries the version set in SkaleManager.sol
version = skale_manager_contract.functions.version().call()

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skale_contracts-2.0.0a8.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skale_contracts-2.0.0a8-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file skale_contracts-2.0.0a8.tar.gz.

File metadata

  • Download URL: skale_contracts-2.0.0a8.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for skale_contracts-2.0.0a8.tar.gz
Algorithm Hash digest
SHA256 f59b368f77484e2b265369ed46048f9029c7cb3c5356647489e0ab4e52c46e03
MD5 c8ab37fe88bf3db11f20e46d11ebd0f0
BLAKE2b-256 98dbe344d061fdb45cf2a0b57c1f1b1b89552573a0bdb7313de2862262510b14

See more details on using hashes here.

File details

Details for the file skale_contracts-2.0.0a8-py3-none-any.whl.

File metadata

File hashes

Hashes for skale_contracts-2.0.0a8-py3-none-any.whl
Algorithm Hash digest
SHA256 f61aa80c5574e9b7b0033c712b2901e9b0b3d50b6b654601de1cf7b19dc7e9a9
MD5 f3a200f71e06fb90e93a204e80d2df32
BLAKE2b-256 8a80a73a1d52bfc35f4fed4e444c7317a26298426cf0e8dc40b3010a51318437

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page