Skip to content

Commit 8608677

Browse files
committed
feat: script to add expected liq
1 parent 5913948 commit 8608677

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

scripts/16_fix/main.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package main
2+
3+
import (
4+
"github.com/Gearbox-protocol/sdk-go/core/schemas"
5+
"github.com/Gearbox-protocol/sdk-go/log"
6+
"github.com/Gearbox-protocol/sdk-go/utils"
7+
"github.com/Gearbox-protocol/third-eye/config"
8+
"github.com/Gearbox-protocol/third-eye/repository"
9+
"gorm.io/gorm/clause"
10+
)
11+
12+
func main() {
13+
cfg := config.NewConfig()
14+
// client := ethclient.NewEthClient(cfg)
15+
db := repository.NewDBClient(cfg)
16+
data := schemas.LastSync{}
17+
err := db.Raw(`select * from debt_sync`).Find(&data).Error
18+
log.CheckFatal(err)
19+
data.Tvl = utils.Max(15818887+10_000, data.Tvl)
20+
//
21+
type Entry = struct {
22+
Pool string `gorm:"column:pool"`
23+
ExpectedLiq float64 `gorm:"column:expected_liquidity"`
24+
Price float64 `gorm:"column:price"`
25+
BlockNum int64 `gorm:"column:block_num"`
26+
}
27+
entries := []Entry{}
28+
qyery := `select pool, ps.block_num, expected_liquidity, underlying_token,
29+
(select price from price_feeds where
30+
token=underlying_token and
31+
block_num<=ps.block_num and
32+
merged_pf_version>=2
33+
order by block_num desc limit 1) price from
34+
(select distinct on (pool) pool, expected_liquidity, block_num from pool_stats where block_num < ? order by pool, block_num desc) ps join pools p on p.address= ps.pool `
35+
err = db.Raw(qyery, data.Tvl).Find(&entries).Error
36+
log.CheckFatal(err)
37+
expected := map[string]float64{}
38+
for _, v := range entries {
39+
expected[v.Pool] = v.ExpectedLiq * v.Price
40+
}
41+
log.Info(utils.ToJson(entries))
42+
43+
for start := data.Tvl; data.Tvl < data.Debt; {
44+
end := start + 100_000
45+
entries = entries[:0]
46+
query := `select pool, ps.block_num, expected_liquidity, underlying_token,
47+
(select price from price_feeds where
48+
token=underlying_token and
49+
block_num<=ps.block_num and
50+
merged_pf_version>=2
51+
order by block_num desc limit 1) price
52+
from pool_stats ps join pools p on p.address= ps.pool where ps.block_num > ? and ps.block_num <= ? order by block_num`
53+
err = db.Raw(query, start, end).Find(&entries).Error
54+
log.CheckFatal(err)
55+
56+
snaps := []schemas.TvlSnapshots{}
57+
err = db.Raw(`select * from tvl_snapshots where block_num > ? and block_num <= ? order by block_num`, start, end).Find(&snaps).Error
58+
log.CheckFatal(err)
59+
var ind = 0
60+
var ans []schemas.TvlSnapshots
61+
for _, snap := range snaps {
62+
for ind < len(entries) && entries[ind].BlockNum <= snap.BlockNum {
63+
neww := entries[ind]
64+
expected[neww.Pool] = neww.ExpectedLiq * neww.Price
65+
ind++
66+
}
67+
snap.ExpectedLiq = summ(expected)
68+
if snap.ExpectedLiq < snap.AvailableLiquidity {
69+
log.Fatal("Expected liquidity is less than available liquidity", utils.ToJson(snap))
70+
}
71+
ans = append(ans, snap)
72+
}
73+
for _, neww := range entries[ind:] {
74+
expected[neww.Pool] = neww.ExpectedLiq * neww.Price
75+
}
76+
77+
tx := db.Begin()
78+
err = tx.Clauses(clause.OnConflict{UpdateAll: true}).CreateInBatches(ans, 50).Error
79+
log.CheckFatal(err)
80+
tx.Exec(`UPDATE debt_sync set tvl_block=?, field_set='t'`, end)
81+
err := tx.Commit().Error
82+
log.CheckFatal(err)
83+
log.Infof("synced till %d: %d", end, len(ans))
84+
// log.Fatal(end, utils.ToJson(ans))
85+
//
86+
data.Tvl = end
87+
}
88+
}
89+
90+
func summ(expected map[string]float64) float64 {
91+
var sum float64
92+
for pool, v := range expected {
93+
// log.Info(pool, v)
94+
_ = pool
95+
sum += v
96+
}
97+
return sum
98+
}

0 commit comments

Comments
 (0)