open-dollar / od-sdk

MIT License
2 stars 1 forks source link

@opendollar/sdk

npm package License: MIT Twitter: open_dollar

Library to interact with the Open Dollar smart contracts. Manage your vaults, mint OD, inspect the system state, and much more.

The library is written in Typescript with full typing support. It allows access to the low level API to directly interact with the contracts.

Usage πŸ“–

yarn add @opendollar/sdk
import { ethers, utils as ethersUtils } from 'ethers'
import { Geb, utils } from '@opendollar/sdk'
import { fetchUserSafes } from '@opendollar/sdk/lib/virtual/virtualUserSafes.js'

// Setup Ether.js
const provider = new ethers.providers.JsonRpcProvider(
    'http://kovan.infura.io/<API KEY>'
)
const wallet = new ethers.Wallet('0xdefiisawesome...', provider)

// Create the main GEB object
const geb = new Geb('arbitrum', provider)

// Get a Vault by ID
let safe = await geb.getSafe(4)

// Get a Vault by user address
safes = await fetchUserSafes(geb, wallet.address)

// Create a proxy 
const txData = await geb.deployProxy()
const tx = await wallet.sendTransaction(txData)
console.log(`Transaction ${tx.hash} waiting to be mined...`)
await tx.wait()

// Open a vault
// TODO

How Information is Fetched with Subgraphs πŸ“Š

Our SDK uses subgraphs to fetch indexed information about auctions (collateral, surplus, and debt) from the blockchain. The subgraphs are hosted on The Graph, and we also have our own Render-hosted subgraph. For more information about how to deploy your own subgraph check out our od-subgraph repo.

The main way we fetch auction information is through the querySubgraph function. This function take in a subgraph URL and a GraphQL query corresponding to the auction type (for example, fetchSurplusAuctionEvents will fetch the surplus auctions). The function will return a promise that resolves to an array of auction events. The auction events will be persisted in od-app through the Redux store in auctionModel.ts.

Subgraph Redundancy

When a request fails to our hosted subgraph in The Graph, we will automatically retry the request to our Render-hosted subgraph in the querySubgraph function. Make sure in od-app you've set REACT_APP_FALLBACK_SUBGRAPH_URL as a .env variable to ensure there's a fallback subgraph to query.

Resources πŸ§‘β€πŸ’»

Documentation

Contributing πŸ’‘

Running prebuild is required to generate the solidity artifacts files

yarn
yarn prebuild