Skip to content

Instantly share code, notes, and snippets.

@johhonn
Created November 17, 2020 03:52
Show Gist options
  • Select an option

  • Save johhonn/ff3e8fb62a8aff6100f7fcbac6a802cd to your computer and use it in GitHub Desktop.

Select an option

Save johhonn/ff3e8fb62a8aff6100f7fcbac6a802cd to your computer and use it in GitHub Desktop.
uniswap-oracle-sdk example
// happy coding 👻
import * as OracleSdk from '@keydonix/uniswap-oracle-sdk'
import * as OracleSdkAdapter from '@keydonix/uniswap-oracle-sdk-adapter'
import Web3 from 'web3'
require('dotenv').config()
type JsonRpcObject = { jsonrpc: '2.0', id: number | string | null, method: string, params?: unknown[] | object }
type SendAsyncProvider = { sendAsync: (request: JsonRpcObject, callback: (error: unknown, result: unknown) => void) => Promise<unknown> }
type RequestProvider = { request: (method: string, params?: unknown[] | object) => Promise<unknown> }
type Provider = SendAsyncProvider | RequestProvider
let URL=process.env.INFURA as string
Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send
const web3Provider = new Web3(new Web3.providers.HttpProvider(URL))
const getStorageAt = OracleSdkAdapter.getStorageAtFactory( web3Provider.currentProvider as Provider )
const getProof = OracleSdkAdapter.getProofFactory(web3Provider.currentProvider as Provider)
const getBlockByNumber = OracleSdkAdapter.getBlockByNumberFactory(web3Provider.currentProvider as Provider )
console.log(Web3.providers.HttpProvider.prototype.sendAsync)
// estimate the moving average price off-chain for presentation in your UI
const uniswapExchangeAddress=0x514906fc121c7878424a5c928cad1852cc545892n
const denominationTokenAddress=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48n
let blockNumber;
web3Provider.eth.getBlockNumber().then((blockNumber:number)=>{
console.log(blockNumber)
OracleSdk.getProof(getStorageAt, getProof, getBlockByNumber, uniswapExchangeAddress, denominationTokenAddress, BigInt(blockNumber)).then((r)=>{
console.log(r)
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment