Skip to main content

An extension of the legendary Ape Safe web3 package. Adding extra functions and making it protocol aware, saving time getting familiar with the source code of every individual smart contract.

Project description

brownie test

GreatApeSafe

This is an extension of the legendary Ape Safe, inheriting all the good stuff from ApeSafe, while adding some extra functions and making it protocol aware.

Instead of (re)writing protocol specific logic for every script, GreatApeSafe contains wrappers for each protocol's specific on-chain API. On top of that, all necessary addresses are hard-coded and loaded.

This prevents having to dive into documentation every time, either for figuring out the exact way to call the on-chain functions or finding deployed addresses.

For example, calling the AAVE lending pool's contract doesn't require any searching or address copypasting:

>>> safe.aave.pool.paused()
False

And making a deposit becomes as simple as:

safe.aave.deposit(usdc, usdc.balanceOf(safe))

Under the hood, the protocol class Aave solves what exact aToken we are dealing with, makes the necessary approval, calls the right functions and makes an on-fork assertion of successful execution:

class Aave():
    ...
    def deposit(self, underlying, mantissa, destination=None):
        # deposit `mantissa` amount of `underlying` into aave pool
        # https://docs.aave.com/developers/the-core-protocol/lendingpool#deposit
        destination = self.safe.address if not destination else destination
        atoken_addr = self.data.getReserveTokensAddresses(underlying)[0]
        atoken = self.safe.contract(atoken_addr)
        bal_before = atoken.balanceOf(destination)
        underlying.approve(self.pool, mantissa)
        self.pool.deposit(underlying, mantissa, destination, 0)
        assert atoken.balanceOf(destination) > bal_before

By no means complete, but included platforms currently are:

  • Aave
  • Compound
  • Convex
  • Curve

Installation

git clone git@github.com:gosuto-ai/great-ape-safe.git
pip install -r requirements-core.txt

And copy .env.example to .env and add your API keys to it if needed.

Running

brownie run example

Testing

brownie test

pngwing com

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

great_ape_safe-0.0.1.tar.gz (26.6 kB view hashes)

Uploaded Source

Built Distribution

great_ape_safe-0.0.1-py2.py3-none-any.whl (22.8 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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