Skip to main content

Gnosis libraries for Python Projects

Project description

Github Actions CI build Coveralls Python 3.9 Django 2.2 Pypi package Documentation Status Black

Safe-eth-py includes a set of libraries to work with Ethereum and relevant Ethereum projects:
  • EthereumClient, a wrapper over Web3.py Web3 client including utilities to deal with ERC20/721 tokens and tracing.

  • Gnosis Safe classes and utilities.

  • Price oracles for Uniswap, Kyber

  • Django serializers, models and utils.

Quick start

Just run pip install safe-eth-py or add it to your requirements.txt

If you want django ethereum utils (models, serializers, filters…) you need to run pip install safe-eth-py[django]

If you have issues building coincurve maybe you are missing some libraries

Contributing to safe-eth-py

Clone the repo, then to set it up:

python -m venv venv
source venv/bin/activate
pip install -r requirements-dev.txt
pre-commit install -f

Ethereum utils

gnosis.eth

  • class EthereumClient (ethereum_node_url: str): Class to connect and do operations with a ethereum node. Uses web3 and raw rpc calls for things not supported in web3. Only http/https urls are suppored for the node url.

EthereumClient has some utils that improve a lot performance using Ethereum nodes, like the possibility of doing batch_calls (a single request making read-only calls to multiple contracts):

from gnosis.eth import EthereumClient
from gnosis.eth.contracts import get_erc721_contract
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
erc721_contract = get_erc721_contract(self.w3, token_address)
name, symbol = ethereum_client.batch_call([
                    erc721_contract.functions.name(),
                    erc721_contract.functions.symbol(),
                ])

If you want to use the underlying web3.py library:

from gnosis.eth import EthereumClient
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
ethereum_client.w3.eth.get_block(57)

gnosis.eth.constants

  • NULL_ADDRESS (0x000...0): Solidity address(0).

  • SENTINEL_ADDRESS (0x000...1): Used for Gnosis Safe’s linked lists (modules, owners…).

  • Maximum an minimum values for R, S and V in ethereum signatures.

gnosis.eth.oracles

Price oracles for Uniswap, UniswapV2, Kyber, SushiSwap, Aave, Balancer, Curve, Mooniswap, Yearn… Example:

from gnosis.eth import EthereumClient
from gnosis.eth.oracles import UniswapV2Oracle
ethereum_client = EthereumClient(ETHEREUM_NODE_URL)
uniswap_oracle = UniswapV2Oracle(ethereum_client)
gno_token_mainnet_address = '0x6810e776880C02933D47DB1b9fc05908e5386b96'
weth_token_mainnet_address = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
price = uniswap_oracle.get_price(gno_token_mainnet_address, uniswap_oracle.weth_address)

gnosis.eth.utils

Contains utils for ethereum operations:

  • get_eth_address_with_key() -> Tuple[str, bytes]: Returns a tuple of a valid public ethereum checksumed address with the private key.

  • generate_address_2(from_: Union[str, bytes], salt: Union[str, bytes], init_code: [str, bytes]) -> str: Calculates the address of a new contract created using the new CREATE2 opcode.

Ethereum django (REST) utils

Django utils are available under gnosis.eth.django. You can find a set of helpers for working with Ethereum using Django and Django Rest framework.

It includes:

  • gnosis.eth.django.filters: EthereumAddressFilter.

  • gnosis.eth.django.models: Model fields (Ethereum address, Ethereum big integer field).

  • gnosis.eth.django.serializers: Serializer fields (Ethereum address field, hexadecimal field).

  • gnosis.eth.django.validators: Ethereum related validators.

  • gnosis.safe.serializers: Serializers for Gnosis Safe (signature, transaction…).

  • All the tests are written using Django Test suite.

Contributors

See contributors

Project details


Download files

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

Source Distribution

rangers-safe-eth-py-0.0.1.tar.gz (621.2 kB view details)

Uploaded Source

Built Distributions

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

rangers_safe_eth_py-0.0.1-py3.8.egg (676.5 kB view details)

Uploaded Egg

rangers_safe_eth_py-0.0.1-py3-none-any.whl (681.4 kB view details)

Uploaded Python 3

File details

Details for the file rangers-safe-eth-py-0.0.1.tar.gz.

File metadata

  • Download URL: rangers-safe-eth-py-0.0.1.tar.gz
  • Upload date:
  • Size: 621.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.2

File hashes

Hashes for rangers-safe-eth-py-0.0.1.tar.gz
Algorithm Hash digest
SHA256 607ea26e334f93facd361c31cec530c478cb290909e16bf22540585884bb0cef
MD5 eac9f8ebb43b00135f2a69d5b64650fd
BLAKE2b-256 e301b71dd5f46c227e65545d6da20ea591ac8e228c3540df597bbf84d5725d98

See more details on using hashes here.

File details

Details for the file rangers_safe_eth_py-0.0.1-py3.8.egg.

File metadata

  • Download URL: rangers_safe_eth_py-0.0.1-py3.8.egg
  • Upload date:
  • Size: 676.5 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.8.2

File hashes

Hashes for rangers_safe_eth_py-0.0.1-py3.8.egg
Algorithm Hash digest
SHA256 265b44e4de22aaab01e9440f6cd03356a2fe3c9771a0b03eef07c1d83197221f
MD5 411f74ef6a3d735343048bf91b6a35f6
BLAKE2b-256 4a608fd3eae474672c85119d371414dc008ee6c7195c1b05b3ad197370ffe520

See more details on using hashes here.

File details

Details for the file rangers_safe_eth_py-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for rangers_safe_eth_py-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d467c9e9933b79ec509f01406c9921845b01f1d60b1f049ab491248b29162ab
MD5 99bf2d3fa95ae78d1dae9b9433aa3cdc
BLAKE2b-256 764a42501ad497745714f3e6a1a41314de222cc1f480cb7befc79fcea3bca5c1

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