Skip to main content

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.

  • mk_contract_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

Metadata

Release files for gnosis-neon-safe-eth-py 5.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gnosis-neon-safe-eth-py 5.4.3
File Size Uploaded
gnosis-neon-safe-eth-py-5.4.3.tar.gz 698.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gnosis-neon-safe-eth-py 5.4.3
File Interpreter ABI Platform
gnosis_neon_safe_eth_py-5.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / gnosis-neon-safe-eth-py-5.4.3.tar.gz

Download URL gnosis-neon-safe-eth-py-5.4.3.tar.gz
Size 698.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bcfbbbcbd44053ce87d31bd40a2e43f8031f5d097b7955dd060416918194679c
BLAKE2b-256 checksum
How to use checksums
eddf1730a3fac99d1b7f6764ce22547721c18a24ca7e0974ba39cf8de68546b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / gnosis_neon_safe_eth_py-5.4.3-py3-none-any.whl

Download URL gnosis_neon_safe_eth_py-5.4.3-py3-none-any.whl
Size 771.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9d6b5d63f4b27330a80a77bec8016e9fff4f89b81e4680d1bb495b05a3f70a63
BLAKE2b-256 checksum
How to use checksums
a2d995c0f48ac1d9edc9406c40d77393a79227946e5e80544b9d486c62b9282c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

5.4.3 This release

2 release files

5.3.1

2 release files

5.1.3

2 release files

5.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page