Skip to content

Commit

Permalink
Faster indexing
Browse files Browse the repository at this point in the history
  • Loading branch information
prevostc committed May 21, 2024
1 parent 3dc5df4 commit d68cd35
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
6 changes: 1 addition & 5 deletions src/platform/mendi.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { BeefyVault } from "../../generated/schema"
import { TokenBalance } from "./common"
import { Multicall3Params, multicall } from "../utils/multicall"

export function getVaultTokenBreakdownMendiLending(vault: BeefyVault): Array<TokenBalance> {
let balances = new Array<TokenBalance>()

const signatures = [new Multicall3Params(vault.id, "balance()", "uint256")]
const results = multicall(signatures)
const wantTotalBalance = results[0].value.toBigInt()

const wantTotalBalance = vault.rawUnderlyingBalance
balances.push(new TokenBalance(vault.underlyingToken, wantTotalBalance))

return balances
Expand Down
18 changes: 12 additions & 6 deletions src/vault-interaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { getClockTick } from "./entity/clock"
import { HOUR } from "./utils/time"
import { ADDRESS_ZERO } from "./utils/address"
import { TokenBalance } from "./platform/common"
import { Multicall3Params, multicall } from "./utils/multicall"

export function handleVaultTransfer(event: TransferEvent): void {
// transfer to self
Expand Down Expand Up @@ -125,15 +126,20 @@ function updateVaultData(vault: BeefyVault): BeefyVault {

///////
// fetch data on chain
// TODO: use multicall3 to fetch all data in one call
const vaultContract = BeefyVaultV7Contract.bind(Address.fromBytes(vault.id))
const ppfs = vaultContract.getPricePerFullShare()
const vaultBalancesRaw = vaultContract.balance()
const vaultSharesTotalSupplyRaw = vaultContract.totalSupply()
const vaultUnderlyingBalance = tokenAmountToDecimal(vaultBalancesRaw, underlyingToken.decimals)
const signatures = [
new Multicall3Params(vault.id, "getPricePerFullShare()", "uint256"),
new Multicall3Params(vault.id, "balance()", "uint256"),
new Multicall3Params(vault.id, "totalSupply()", "uint256"),
]
const results = multicall(signatures)

const ppfs = results[0].value.toBigInt()
const vaultBalancesRaw = results[1].value.toBigInt()
const vaultSharesTotalSupplyRaw = results[2].value.toBigInt()

///////
// compute derived values
const vaultUnderlyingBalance = tokenAmountToDecimal(vaultBalancesRaw, underlyingToken.decimals)
const vaultShareToUnderlyingRate = ppfsToShareRate(ppfs, underlyingToken)
const vaultSharesTotalSupply = tokenAmountToDecimal(vaultSharesTotalSupplyRaw, sharesToken.decimals)

Expand Down

0 comments on commit d68cd35

Please sign in to comment.