All Projects → gnosis → gnosis-py

gnosis / gnosis-py

Licence: MIT license
Gnosis-py includes a set of libraries to work with Ethereum and Gnosis projects

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to gnosis-py

safe-transaction-service
Keeps track of transactions sent via Gnosis Safe contacts and confirmed transactions. It also keeps track of Ether and ERC20 token transfers to Safe contracts.
Stars: ✭ 72 (+5.88%)
Mutual labels:  multisig, gnosis, gnosis-safe
safe-relay-service
Relay Tx Service for Gnosis Safe
Stars: ✭ 48 (-29.41%)
Mutual labels:  gnosis, gnosis-safe
bitcoincashjs
WARNING: This project is no longer maintained. Please, use bitcore-lib-cash instead.
Stars: ✭ 80 (+17.65%)
Mutual labels:  multisig
django-eth-events
No description or website provided.
Stars: ✭ 43 (-36.76%)
Mutual labels:  gnosis
ape-safe
gnosis safe tx builder
Stars: ✭ 211 (+210.29%)
Mutual labels:  gnosis-safe
pm-trading-db
Gnosis Core Database Layer
Stars: ✭ 16 (-76.47%)
Mutual labels:  gnosis
safe-core-sdk
Software developer tools that facilitate the interaction with the Safe contracts and services.
Stars: ✭ 93 (+36.76%)
Mutual labels:  gnosis-safe
cosign
Cooperative RSA signing
Stars: ✭ 25 (-63.24%)
Mutual labels:  multisig
Learning Bitcoin From The Command Line
A complete course for learning Bitcoin programming and usage from the command
Stars: ✭ 2,010 (+2855.88%)
Mutual labels:  multisig
crowdsale-smart-contract
No description or website provided.
Stars: ✭ 39 (-42.65%)
Mutual labels:  multisig
nthkey-ios
Your iOs device in a Bitcoin multi-sig
Stars: ✭ 15 (-77.94%)
Mutual labels:  multisig
safe-android
🔐 App to manage and interact with the Gnosis Safe
Stars: ✭ 60 (-11.76%)
Mutual labels:  multisig
safe-airdrop
A Gnosis Safe app for distributing tokens from CSV transfer files.
Stars: ✭ 32 (-52.94%)
Mutual labels:  gnosis-safe

Safe-eth-py (previosly known as Gnosis-py)

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].