From a3d1a7c9bd763a3e26447748f8b8ee1a0b5f31d6 Mon Sep 17 00:00:00 2001 From: cwang25 Date: Thu, 11 Nov 2021 10:19:10 -0800 Subject: [PATCH 1/2] fix #15. Changes the uses of getUnderlyingPrice, name, symbol to try_getUnderlyingPrice, try_name, try_symbol...etc --- src/mappings/markets.ts | 48 ++++++++++++++++++++++++----------------- subgraph.yaml | 2 +- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/mappings/markets.ts b/src/mappings/markets.ts index 6d3dfdb..4cbf996 100644 --- a/src/mappings/markets.ts +++ b/src/mappings/markets.ts @@ -53,10 +53,11 @@ function getTokenPrice( let mantissaDecimalFactor = 18 - underlyingDecimals + 18 let bdFactor = exponentToBigDecimal(mantissaDecimalFactor) let oracle2 = PriceOracle2.bind(oracleAddress) - underlyingPrice = oracle2 - .getUnderlyingPrice(eventAddress) - .toBigDecimal() - .div(bdFactor) + let tryPrice = oracle2.try_getUnderlyingPrice(eventAddress) + + underlyingPrice = tryPrice.reverted + ? zeroBD + : tryPrice.value.toBigDecimal().div(bdFactor) /* PriceOracle(1) is used (only for the first ~100 blocks of Comptroller. Annoying but we must * handle this. We use it for more than 100 blocks, see reason at top of if statement @@ -89,16 +90,18 @@ function getUSDCpriceETH(blockNumber: i32): BigDecimal { let oracle2 = PriceOracle2.bind(oracleAddress) let mantissaDecimalFactorUSDC = 18 - 6 + 18 let bdFactorUSDC = exponentToBigDecimal(mantissaDecimalFactorUSDC) - usdPrice = oracle2 - .getUnderlyingPrice(Address.fromString(cUSDCAddress)) - .toBigDecimal() - .div(bdFactorUSDC) + let tryPrice = oracle2.try_getUnderlyingPrice(Address.fromString(cUSDCAddress)) + + usdPrice = tryPrice.reverted + ? zeroBD + : tryPrice.value.toBigDecimal().div(bdFactorUSDC) } else { let oracle1 = PriceOracle.bind(priceOracle1Address) - usdPrice = oracle1 - .getPrice(Address.fromString(USDCAddress)) - .toBigDecimal() - .div(mantissaFactorBD) + let tryPrice = oracle1.try_getPrice(Address.fromString(USDCAddress)) + + usdPrice = tryPrice.reverted + ? zeroBD + : tryPrice.value.toBigDecimal().div(mantissaFactorBD) } return usdPrice } @@ -125,8 +128,10 @@ export function createMarket(marketAddress: string): Market { let underlyingContract = ERC20.bind(market.underlyingAddress as Address) market.underlyingDecimals = underlyingContract.decimals() if (market.underlyingAddress.toHexString() != daiAddress) { - market.underlyingName = underlyingContract.name() - market.underlyingSymbol = underlyingContract.symbol() + let tryname = underlyingContract.try_name() + let trysymbol = underlyingContract.try_symbol() + market.underlyingName = tryname.reverted ? '' : tryname.value + market.underlyingSymbol = trysymbol.reverted ? '' : trysymbol.value } else { market.underlyingName = 'Dai Stablecoin v1.0 (DAI)' market.underlyingSymbol = 'DAI' @@ -148,10 +153,12 @@ export function createMarket(marketAddress: string): Market { market.interestRateModelAddress = interestRateModelAddress.reverted ? Address.fromString('0x0000000000000000000000000000000000000000') : interestRateModelAddress.value - market.name = contract.name() + let tryMarketName = contract.try_name() + market.name = tryMarketName.reverted ? '' : tryMarketName.value market.reserves = zeroBD market.supplyRate = zeroBD - market.symbol = contract.symbol() + let tryMarketSymbol = contract.try_symbol() + market.symbol = tryMarketSymbol.reverted ? '' : tryMarketSymbol.value market.totalBorrows = zeroBD market.totalSupply = zeroBD @@ -168,10 +175,11 @@ function getETHinUSD(blockNumber: i32): BigDecimal { let comptroller = Comptroller.load('1') let oracleAddress = comptroller.priceOracle as Address let oracle = PriceOracle2.bind(oracleAddress) - let ethPriceInUSD = oracle - .getUnderlyingPrice(Address.fromString(cETHAddress)) - .toBigDecimal() - .div(mantissaFactorBD) + let tryPrice = oracle.try_getUnderlyingPrice(Address.fromString(cETHAddress)) + + let ethPriceInUSD = tryPrice.reverted + ? zeroBD + : tryPrice.value.toBigDecimal().div(mantissaFactorBD) return ethPriceInUSD } diff --git a/subgraph.yaml b/subgraph.yaml index 01a6086..ef00e72 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -10,7 +10,7 @@ dataSources: source: address: "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B" abi: Comptroller - startBlock: 7700000 + startBlock: 10000000 mapping: kind: ethereum/events apiVersion: 0.0.4 From 26be8550851853764bd6a968dfb84ed79b94f5f7 Mon Sep 17 00:00:00 2001 From: cwang25 Date: Thu, 11 Nov 2021 10:24:37 -0800 Subject: [PATCH 2/2] revert starting block back to old value --- subgraph.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subgraph.yaml b/subgraph.yaml index ef00e72..01a6086 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -10,7 +10,7 @@ dataSources: source: address: "0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B" abi: Comptroller - startBlock: 10000000 + startBlock: 7700000 mapping: kind: ethereum/events apiVersion: 0.0.4