Skip to content

Commit afcf7ab

Browse files
committed
fix: store mainAgg and phaseAgg for target and base on composite oracle
1 parent 8132eac commit afcf7ab

File tree

3 files changed

+38
-26
lines changed

3 files changed

+38
-26
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package composite_chainlink
2+
3+
import "testing"
4+
5+
func TestCompositeChainlink(t *testing.T) {
6+
7+
}

models/composite_chainlink/model.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ func NewCompositeChainlinkPF(token, oracle string, discoveredAt int64, client co
3232
baseTokenMainAgg := cpf.NewMainAgg(client, ethUSDPF)
3333
//
3434
identifier := common.BytesToAddress(append(oracleAddr.Bytes(), big.NewInt(discoveredAt).Bytes()...))
35+
36+
//
37+
mainPhaseAgg, _ := mainAgg.GetPriceFeedAddr(discoveredAt)
38+
basePhaseAgg, _ := baseTokenMainAgg.GetPriceFeedAddr(discoveredAt)
3539
compositeMdl := &CompositeChainlinkPF{
3640
BaseTokenMainAgg: baseTokenMainAgg,
3741
MainAgg: mainAgg,
@@ -49,8 +53,10 @@ func NewCompositeChainlinkPF(token, oracle string, discoveredAt int64, client co
4953
"oracle": oracle,
5054
"token": token,
5155
"secAddrs": map[string]interface{}{
52-
"target": tokenETHPF.Hex(),
53-
"base": ethUSDPF.Hex(),
56+
"target": tokenETHPF.Hex(),
57+
"base": ethUSDPF.Hex(),
58+
"targetPhase": mainPhaseAgg.Hex(),
59+
"basePhase": basePhaseAgg.Hex(),
5460
}},
5561
LastSync: discoveredAt,
5662
V: version,

models/composite_chainlink/on_log.go

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,34 @@ import (
1313
"github.com/ethereum/go-ethereum/core/types"
1414
)
1515

16-
func (mdl *CompositeChainlinkPF) breakPoint(tokenType string, mainAgg *cpf.ChainlinkMainAgg) (int64, bool) {
17-
newPriceFeed, newPhaseId := mainAgg.GetPriceFeedAddr(mdl.WillSyncTill)
18-
previousPF := mdl.getAddrFromDetails(tokenType)
19-
if newPriceFeed != previousPF && newPriceFeed != core.NULL_ADDR {
16+
func (mdl *CompositeChainlinkPF) breakPoint(tokenType string, mainAgg *cpf.ChainlinkMainAgg) (common.Address, int64) {
17+
newPhaseAgg, newPhaseId := mainAgg.GetPriceFeedAddr(mdl.WillSyncTill)
18+
previousPhaseAgg := mdl.getAddrFromDetails(tokenType)
19+
if previousPhaseAgg != newPhaseAgg && newPhaseAgg != core.NULL_ADDR {
2020
var discoveredAt int64
2121
if newPhaseId != -1 {
2222
discoveredAt = mainAgg.GetFeedUpdateBlockUsingPhaseId(uint16(newPhaseId), mdl.LastSync+1, mdl.WillSyncTill)
2323
} else {
24-
discoveredAt = mainAgg.GetFeedUpdateBlockAggregator(newPriceFeed, mdl.LastSync+1, mdl.WillSyncTill)
24+
discoveredAt = mainAgg.GetFeedUpdateBlockAggregator(newPhaseAgg, mdl.LastSync+1, mdl.WillSyncTill)
2525
}
26-
return discoveredAt, true
26+
return newPhaseAgg, discoveredAt
2727
}
28-
return 0, false
28+
return newPhaseAgg, math.MaxInt64
2929
}
3030

3131
func (mdl *CompositeChainlinkPF) OnLogs(txLogs []types.Log) {
3232
var breakPoint int64 = math.MaxInt64
33-
if bp, valid := mdl.breakPoint("target", mdl.MainAgg); valid {
34-
if bp < breakPoint {
35-
breakPoint = bp
36-
}
33+
//
34+
newMainPhaseAgg, bpOne := mdl.breakPoint("targetPhase", mdl.MainAgg)
35+
if bpOne < breakPoint {
36+
breakPoint = bpOne
3737
}
38-
if bp, valid := mdl.breakPoint("base", mdl.BaseTokenMainAgg); valid {
39-
if bp < breakPoint {
40-
breakPoint = bp
41-
}
38+
newBasePhaseAgg, bpTwo := mdl.breakPoint("basePhase", mdl.BaseTokenMainAgg)
39+
if bpTwo < breakPoint {
40+
breakPoint = bpTwo
4241
}
43-
targetETHPF := mdl.getAddrFromDetails("target")
42+
//
43+
targetETHPF := mdl.getAddrFromDetails("targetPhase")
4444
for txLogInd, txLog := range txLogs {
4545
blockNum := int64(txLog.BlockNumber)
4646
if breakPoint <= blockNum {
@@ -77,20 +77,19 @@ func (mdl *CompositeChainlinkPF) OnLogs(txLogs []types.Log) {
7777
}
7878
}
7979
if breakPoint != math.MaxInt64 {
80-
oracleAddr := common.HexToAddress(mdl.GetDetailsByKey("oracle"))
81-
targetPF := getAddrFromRPC(mdl.Client, "targetETH", oracleAddr, breakPoint)
82-
basePF := getAddrFromRPC(mdl.Client, "ETHUSD", oracleAddr, breakPoint)
8380
mdl.Details["secAddrs"] = map[string]interface{}{
84-
"target": targetPF,
85-
"base": basePF,
81+
"target": mdl.getAddrFromDetails("target"),
82+
"base": mdl.getAddrFromDetails("base"),
83+
"targetPhase": newMainPhaseAgg,
84+
"basePhase": newBasePhaseAgg,
8685
}
8786
mdl.setPrices(breakPoint)
88-
mdl.addPriceToDB(breakPoint)
87+
mdl.addPriceToDB(breakPoint) // H1
8988
//
9089
txLogs, err := core.Node{Client: mdl.Client}.GetLogs(
91-
breakPoint,
90+
breakPoint+1, // bcz price for breakPoint already added at H1
9291
mdl.WillSyncTill,
93-
[]common.Address{targetPF, basePF},
92+
[]common.Address{newMainPhaseAgg, newBasePhaseAgg},
9493
[][]common.Hash{
9594
{core.Topic("AnswerUpdated(int256,uint256,uint256)")},
9695
},

0 commit comments

Comments
 (0)