Skip to content

Latest commit

 

History

History
97 lines (69 loc) · 2.53 KB

README.md

File metadata and controls

97 lines (69 loc) · 2.53 KB

Defi Graph

test GitHub repo size GitHub last commit PyPI - Version PyPI - Downloads GitHub top language

X (formerly Twitter) Follow

This is package for creating and visualizing graphs in DeFi protocols.

Token Graph

Install

Install using pip or uv

pip install defigraph

# or using uv

uv add defigraph

Modules

  • Edge - describes a path between tokens
  • Vertex - describes a token
  • Graph - describes a defi market
  • Pool - describes trading token pairs

Edge type

Edges store two main state:

  1. self.weight - a weight between two tokens
    • typeof float
    • {0,1} Depends on direction of edge
    • Calculated as -Math.log(self.pool.token_price_{0,1})
  2. self.pool - an instance of a token pool
    • typeof Pool
  3. self._tuple - Allows indexing/iteration of the edge object
    • typeof iter
    • Array of [Vertex1, Vertex2, (self.weight, Pool)]

Pool type

A pool object describing tokens:

  1. self.address - the address of the pool
    • typeof Hex checksum address
  2. self.token0 - a token described as a vertex
    • typeof Vertex
  3. self.token1 - a token described as a vertex
    • typeof Vertex
  4. self.token0_price - the price of token0
    • typeof float
  5. self.token1_price - the price of token1
    • typeof `float
  6. self.fee - describes the pool fee e.g Uniswap (100 | 500 | 1000 | 3000)
    • typeof int

Graph type

An adjacency list graph object desribing a defi market

  1. self.vertices - contains a list of all vertices
    • typeof List[Vertex]
  2. self.adjascency_list - a mapping describing edges in the graph
    • typeof Dict[Vertex, List[Edge]]
    • example: {Vertex: [Edge1, Edge2, Edge3, Edge4]}

Vertex type

A node on the graph describing a token

  1. self.name - name of the token
    • typeof string
  2. self.decimals - number of decimals for token
    • typeof int
  3. self.address - address of token
    • typeof Hex checksum address

Tests

Run tests:

pytest

Usage

See example in docs/notebooks/graph.ipynb