Skip to main content

Badger utils and shared code

Project description

badger-utils library

This is the library for all badger utils that were moved from badger-system repo.

Build Coverage PYPI
Tests codecov PyPI version

Features and Utils

Current state of library and components and what was moved from badger-system repo:

Systems:

  1. AaveSystem
  2. SushiSwapSystem
  3. CompoundSystem

Utils:

  1. Registry
  2. Proxy utils
  3. Coingecko utils
  4. Network manager
  5. Time utils
  6. Token utils
  7. Digg utils
  8. txTimer utility
  9. Full constants module
  10. Different misc functions

Testing Tools:

distribute_from_whales and some other balance calculation functions

Requirements

To make use of library you would need some interfaces and contracts to be compiled and injected by brownie into your brownie project. List of required interfaces can be found here

You also need some contracts to be compiled as well:

ForceEther, SafeMath, Token

Installing library

pip install badger-utils

To run tests:

$ virtualenv venv
$ source venv/bin/activate
$ make
$ brownie test

Using library

Giving some examples on library usage:

Using coingecko utils:

from badger_utils.coingecko_utils import fetch_usd_price
some_erc_token = interface.IERC20(Token)
usd_price = fetch_usd_price(some_erc_token.address)

Using network utils

from badger_utils.network_manager import network_manager
network = network_manager.get_active_network()
badger_deploy_file = network_manager.get_active_network_badger_deploy()

Using proxy utils

from badger_utils.proxy_utils import deploy_proxy_admin
from brownie import accounts

contract = deploy_proxy_admin(accounts[0])
assert contract.address is not None

Using token utils

import token  # some deployed token
from brownie import accounts
from badger_utils.token_utils import distribute_from_whales

token.transfer(
    "0x19d099670a21bC0a8211a89B84cEdF59AbB4377F", 100000, {'from': accounts[0]}
)
distribute_from_whales(accounts[1], percentage=0.8)

Using constants

from badger_utils.constants import AddressZero
from badger_utils.constants import TOKEN_LOCKER_ROLE
from badger_utils.constants import ContractSystems

Using tx timer

from badger_utils.tx_timer import tx_timer
from brownie import accounts

tx_timer.prepare_timer(accounts[0], "Harvest")
tx_timer.start_timer(accounts[0], 'Harvest')
tx_timer.end_timer()

Using artifacts

from badger_utils.registry.artifacts import artifacts

timelock_abi = artifacts.open_zeppelin["TokenTimelock"]["abi"]

Using registries

On chain registry:

from badger_utils.registry import chain_registries

chain_registries.initialize()
chain_registries.get("badgerTree")

Locally defined registry

NOTE: This is legacy way of working with registries

from brownie import web3
from badger_utils.registry import registry

checksummed = web3.toChecksumAddress(registry.tokens.wbtc)

Using systems

from badger_utils.systems import SushiswapSystem

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

badger-utils-0.1.2.tar.gz (789.3 kB view hashes)

Uploaded Source

Built Distribution

badger_utils-0.1.2-py2.py3-none-any.whl (829.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