Skip to content

Commit 51820f2

Browse files
committed
fix: borrowed amount
1 parent d3aaebe commit 51820f2

File tree

1 file changed

+25
-33
lines changed

1 file changed

+25
-33
lines changed

scripts/18_fix_borrow/main.go

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@ package main
22

33
import (
44
"math/big"
5+
"os"
6+
"strconv"
57

8+
"github.com/Gearbox-protocol/sdk-go/artifacts/poolv3"
69
"github.com/Gearbox-protocol/sdk-go/core"
710
"github.com/Gearbox-protocol/sdk-go/log"
811
"github.com/Gearbox-protocol/sdk-go/utils"
912
"github.com/Gearbox-protocol/third-eye/config"
13+
"github.com/Gearbox-protocol/third-eye/ethclient"
1014
"github.com/Gearbox-protocol/third-eye/repository"
15+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
16+
"github.com/ethereum/go-ethereum/common"
1117
)
1218

1319
type Event struct {
@@ -23,52 +29,38 @@ type cMStats struct {
2329
BlockNum int64 `gorm:"column:block_num"`
2430
TotalBorrowed float64 `gorm:"column:total_borrowed"`
2531
TotalBorrowedBi *core.BigInt `gorm:"column:total_borrowed_bi"`
32+
Pool string `gorm:"column:pool_address"`
2633
}
2734

2835
func main() {
2936
cfg := config.NewConfig()
3037
// client := ethclient.NewEthClient(cfg)
3138
db := repository.NewDBClient(cfg)
3239
allstats := []*cMStats{}
33-
err := db.Raw(`select cms.credit_manager, cms.block_num, cms.total_borrowed, t.decimals, cms.total_borrowed_bi from credit_manager_stats cms join credit_managers cm on cm.address=cms.credit_manager join tokens t on t.address=cm.underlying_token where cms.credit_manager in ('0xec76E7652E1B94bd2A4E7A9372F8359Dd571eF4C','0x9A0fDF7CdAb4604FC27ebeab4b3D57BD825e8ebe','0x732F28d627f3F5cfb599A539F58Fa7CBA6698297','0x63Ae843b332DE97c55a007e27c5697c2B8B81627','0xfe83807DeC8C6a4f4D93b7DBD6340771753e2Cd8','0x0Fafa30Cd35bc6a48ff2B40694d4A73d4F4BcC92','0x0aF1324369e3fD78325Fab0CB62EeA19F3e4ebf0','0x79C6C1ce5B12abCC3E407ce8C160eE1160250921','0x8c118E8C20CEbbaa2467b735BBB8B13d614e6608','0xAf5A052BA444Ed90F887D40088548285df33A603','0xbCd2fFaC58189E57334Bb63253AcbF34D776DE53','0xb79d6544839d169869476589d2e54014A074317b') order by block_num`).Find(&allstats).Error
40+
blockNum, err := strconv.ParseInt(os.Args[1], 10, 64)
3441
log.CheckFatal(err)
35-
log.Info(len(allstats))
36-
37-
query := `select a.args, a.block_num, cs.credit_manager, a.action from (select args, session_id, block_num, action from account_operations where action like 'Increase%' or action like 'Decrease%') a join credit_sessions cs on cs.id=a.session_id where cs.credit_manager in ('0xec76E7652E1B94bd2A4E7A9372F8359Dd571eF4C','0x9A0fDF7CdAb4604FC27ebeab4b3D57BD825e8ebe','0x732F28d627f3F5cfb599A539F58Fa7CBA6698297','0x63Ae843b332DE97c55a007e27c5697c2B8B81627','0xfe83807DeC8C6a4f4D93b7DBD6340771753e2Cd8','0x0Fafa30Cd35bc6a48ff2B40694d4A73d4F4BcC92','0x0aF1324369e3fD78325Fab0CB62EeA19F3e4ebf0','0x79C6C1ce5B12abCC3E407ce8C160eE1160250921','0x8c118E8C20CEbbaa2467b735BBB8B13d614e6608','0xAf5A052BA444Ed90F887D40088548285df33A603','0xbCd2fFaC58189E57334Bb63253AcbF34D776DE53','0xb79d6544839d169869476589d2e54014A074317b') order by block_num ;`
3842

39-
events := []Event{}
40-
err = db.Raw(query).Find(&events).Error
43+
err = db.Raw(`select cms.credit_manager, cms.block_num, cms.total_borrowed, cm.pool_address, t.decimals, cms.total_borrowed_bi from credit_manager_stats cms join credit_managers cm on cm.address=cms.credit_manager join tokens t on t.address=cm.underlying_token where _version=300 and block_num > ? order by block_num`, blockNum).Find(&allstats).Error
4144
log.CheckFatal(err)
42-
eventsI := 0
43-
borrowed := map[string]*big.Int{}
44-
for _, cmstats := range allstats {
45-
if borrowed[cmstats.CreditManager] == nil {
46-
borrowed[cmstats.CreditManager] = new(big.Int)
47-
}
48-
for eventsI < len(events) && events[eventsI].BlockNum <= cmstats.BlockNum {
49-
data := (*events[eventsI].Args)["amount"]
50-
a := new(big.Float).SetFloat64(data.(float64))
51-
amount, _ := a.Int(nil)
52-
// amount, _ := new(big.Int).SetString(x, 10)
53-
if events[eventsI].Action[:8] == "Decrease" {
54-
amount = new(big.Int).Neg(amount)
55-
}
56-
borrowed[cmstats.CreditManager] = new(big.Int).Add(borrowed[cmstats.CreditManager], amount)
57-
eventsI++
58-
}
59-
cmstats.TotalBorrowedBi = (*core.BigInt)(borrowed[cmstats.CreditManager])
60-
cmstats.TotalBorrowed = utils.GetFloat64Decimal(borrowed[cmstats.CreditManager], cmstats.Decimals)
61-
}
45+
log.Info(len(allstats))
6246

63-
for ind, stats := range allstats {
64-
if ind%100 == 0 {
65-
log.Info(ind, len(allstats))
66-
}
67-
log.Info(stats.CreditManager, stats.BlockNum, stats.TotalBorrowed, stats.TotalBorrowedBi)
68-
err = db.Exec(`update credit_manager_stats set total_borrowed=?, total_borrowed_bi=? where credit_manager=? and block_num=?`, stats.TotalBorrowed, stats.TotalBorrowedBi, stats.CreditManager, stats.BlockNum).Error
47+
// query := `select a.args, a.block_num, cs.credit_manager, a.action from (select args, session_id, block_num, action from account_operations where action like 'Increase%' or action like 'Decrease%') a join credit_sessions cs on cs.id=a.session_id where cs.credit_manager in ('0xec76E7652E1B94bd2A4E7A9372F8359Dd571eF4C','0x9A0fDF7CdAb4604FC27ebeab4b3D57BD825e8ebe','0x732F28d627f3F5cfb599A539F58Fa7CBA6698297','0x63Ae843b332DE97c55a007e27c5697c2B8B81627','0xfe83807DeC8C6a4f4D93b7DBD6340771753e2Cd8','0x0Fafa30Cd35bc6a48ff2B40694d4A73d4F4BcC92','0x0aF1324369e3fD78325Fab0CB62EeA19F3e4ebf0','0x79C6C1ce5B12abCC3E407ce8C160eE1160250921','0x8c118E8C20CEbbaa2467b735BBB8B13d614e6608','0xAf5A052BA444Ed90F887D40088548285df33A603','0xbCd2fFaC58189E57334Bb63253AcbF34D776DE53','0xb79d6544839d169869476589d2e54014A074317b') order by block_num ;`
48+
49+
borrowedMap := map[string]*big.Int{}
50+
client := ethclient.NewEthClient(cfg)
51+
for ind, stat := range allstats {
52+
pool, err := poolv3.NewPoolv3(common.HexToAddress(stat.Pool), client)
53+
log.CheckFatal(err)
54+
data, err := pool.CreditManagerBorrowed(&bind.CallOpts{BlockNumber: big.NewInt(stat.BlockNum)}, common.HexToAddress(stat.CreditManager))
6955
log.CheckFatal(err)
56+
borrowedBI := (*core.BigInt)(data)
57+
borrowedMap[stat.CreditManager] = data
58+
err = db.Exec(`update credit_manager_stats set total_borrowed=?, total_borrowed_bi=? where credit_manager=? and block_num=?`, utils.GetFloat64Decimal(borrowedBI, stat.Decimals), borrowedBI, stat.CreditManager, stat.BlockNum).Error
59+
log.CheckFatal(err)
60+
log.Info(stat.BlockNum, ind, ":", len(allstats))
7061
}
71-
for cm, amount := range borrowed {
62+
63+
for cm, amount := range borrowedMap {
7264
decimals := &cMStats{}
7365
err = db.Raw(`select t.decimals from credit_managers cm join tokens t on t.address=cm.underlying_token where cm.address=?`, cm).Find(decimals).Error
7466
log.CheckFatal(err)

0 commit comments

Comments
 (0)