LogoLogo
Dev docs
  • Docs
  • Dev docs
Dev docs
  • Welcome
  • Guides
    • Integrate WOOFi as a liquidity source on EVM
    • Integrate WOOFi as a liquidity source on Solana
      • Rust SDK
      • TypeScript SDK
      • Architecture
    • Become a WOOFi broker
  • Resources
    • Product Docs
    • The math behind sPMM
    • Smart contract architecture
    • On-chain price feeds
  • References
    • Contract Addresses
      • Solana
      • Arbitrum one
      • Avalanche c-chain
      • Base
      • BNB smart chain
      • Ethereum
      • Linea
      • Mantle
      • OP mainnet
      • Polygon PoS
      • zkSync Era
      • Sonic
    • Data APIs
      • Swap
      • Earn & Stake
    • Audits and bounties
    • GitHub
  • Deprecated docs
    • [v1] sPMM liquidity integration
    • [v1] On-chain price feeds
    • Legacy contracts
Powered by GitBook
On this page
  • Intro
  • Code Example

Was this helpful?

Edit on GitHub
  1. Deprecated docs

[v1] On-chain price feeds

Previous[v1] sPMM liquidity integrationNextLegacy contracts

Last updated 2 years ago

Was this helpful?

Intro

In order to simulate the order book from centralized exchanges without sacrificing capital efficiency, WOOFi created a custom on-chain price fee which works along side with the sPMM algorithm. This price feed considers multiple parameters including mid-price ppp, spread sss, and liquidity coefficient kkk.

WOOFi's on-chain price feeds are deployed on multiple blockchains. Users can call price to get priceNow and feasible of token. If feasible is false, do not use priceNow value. All prices are USDT/USDC-based, and the decimal of priceNow is 18 - base_decimal + quote_decimal.

  • BNB Chain Contract address:

  • Avalanche C-Chain Contract address:

  • Fantom Contract address:

  • Polygon Contract address:

While the price feed is on-chain and permissionless, and tradeable by any user on WOOFi, we DO NOT garanutee the availability or accuracy of it. The price feed may become unavailable when the centralized liquidity source is in maintenance or any time the operator deems necessary. In no case, WOOFi is liable for any loss that might be caused by using the price feed by any third party.

Code Example

Contract ABI

[
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "base",
                "type": "address"
            }
        ],
        "name": "price",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "priceNow",
                "type": "uint256"
            },
            {
                "internalType": "bool",
                "name": "feasible",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    }
]

Python Example (python 3.8)

  • Query price

import web3
import json

web3_provider = f'your-web3-provider'

w3 = web3.Web3(web3.Web3.HTTPProvider(web3_provider))
abi_str = '[{"inputs": [{"internalType": "address","name": "base","type": "address"}],"name": "price","outputs": [{"internalType": "uint256","name": "priceNow","type": "uint256"},{"internalType": "bool","name": "feasible","type": "bool"}],"stateMutability": "view","type": "function"}]'
abi = json.loads(abi_str)
oracle_addr = '0x6b6fBEc7934b104e81b2046D24A990e03e17afDC'
contract = w3.eth.contract(address=oracle_addr, abi=abi)

# query WOO/USDT pair quoting price 
woo_addr = '0x4691937a7508860F876c9c0a2a617E7d9E945D4B'
contract.functions.price(woo_addr).call()
  • Response

# return [priceNow, feasible]
>> [841915000000000000, True]
0x6b6fBEc7934b104e81b2046D24A990e03e17afDC
0x25a4d4a094A084c7ad45Ac273cF7D6B6bfae7D4E
0x209102c0D2E34282494114ea76D5251c8e7Ea7ab
0x2Fe5E5D341cFFa606a5d9DA1B6B646a381B0f7ec