Skip to content

Commit f2f577b

Browse files
Refactoring: handle events in v4 (#419)
1 parent 1f19725 commit f2f577b

13 files changed

+1133
-142
lines changed

pkg/indexer/parser/events/cancel_unbonding.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ func handleCancelUnbonding(ctx *context.Context, events []storage.Event, msg *st
3030
}
3131

3232
func processCancelUnbonding(ctx *context.Context, events []storage.Event, msg *storage.Message, idx *int) error {
33+
var (
34+
msgIdx = decoder.StringFromMap(events[*idx].Data, "msg_index")
35+
newFormat = msgIdx != ""
36+
)
37+
3338
for i := *idx; i < len(events); i++ {
3439
switch events[i].Type {
3540
case storageTypes.EventTypeMessage:
@@ -88,7 +93,7 @@ func processCancelUnbonding(ctx *context.Context, events []storage.Event, msg *s
8893
ctx.AddCancelUndelegation(storage.Undelegation{
8994
Validator: &validator,
9095
Address: address,
91-
Height: types.Level(cancel.CreationHeight),
96+
Height: msg.Height,
9297
Time: msg.Time,
9398
Amount: amount,
9499
})
@@ -101,6 +106,11 @@ func processCancelUnbonding(ctx *context.Context, events []storage.Event, msg *s
101106
Change: amount.Copy(),
102107
Type: storageTypes.StakingLogTypeUnbonding,
103108
})
109+
110+
if newFormat {
111+
*idx = i + 1
112+
return nil
113+
}
104114
}
105115
}
106116

pkg/indexer/parser/events/cancel_unbonding_test.go

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,57 @@ package events
55

66
import (
77
"testing"
8+
"time"
89

10+
"github.com/celenium-io/celestia-indexer/internal/currency"
911
"github.com/celenium-io/celestia-indexer/internal/storage"
1012
"github.com/celenium-io/celestia-indexer/internal/storage/types"
1113
testsuite "github.com/celenium-io/celestia-indexer/internal/test_suite"
1214
"github.com/celenium-io/celestia-indexer/pkg/indexer/decode/context"
15+
"github.com/shopspring/decimal"
1316
"github.com/stretchr/testify/require"
1417
)
1518

1619
func Test_handleCancelUnbonding(t *testing.T) {
20+
ts := time.Now()
1721
tests := []struct {
1822
name string
1923
ctx *context.Context
2024
events []storage.Event
2125
msg *storage.Message
2226
idx *int
27+
cancel *storage.Undelegation
2328
}{
2429
{
2530
name: "test 1",
2631
ctx: context.NewContext(),
2732
events: []storage.Event{
2833
{
2934
Height: 844287,
35+
Time: ts,
3036
Type: "message",
3137
Data: map[string]any{
3238
"action": "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation",
3339
},
3440
}, {
3541
Height: 844287,
42+
Time: ts,
3643
Type: "coin_spent",
3744
Data: map[string]any{
3845
"amount": "1314utia",
3946
"spender": "celestia1jv65s3grqf6v6jl3dp4t6c9t9rk99cd8k44vnj",
4047
},
4148
}, {
4249
Height: 844287,
50+
Time: ts,
4351
Type: "coin_received",
4452
Data: map[string]any{
4553
"amount": "1314utia",
4654
"receiver": "celestia1lkrd86urrmhmsvgzfygjsguv3cgv0036hrj0m9",
4755
},
4856
}, {
4957
Height: 844287,
58+
Time: ts,
5059
Type: "transfer",
5160
Data: map[string]any{
5261
"amount": "1314utia",
@@ -55,12 +64,14 @@ func Test_handleCancelUnbonding(t *testing.T) {
5564
},
5665
}, {
5766
Height: 844287,
67+
Time: ts,
5868
Type: "message",
5969
Data: map[string]any{
6070
"sender": "celestia1jv65s3grqf6v6jl3dp4t6c9t9rk99cd8k44vnj",
6171
},
6272
}, {
6373
Height: 844287,
74+
Time: ts,
6475
Type: "withdraw_rewards",
6576
Data: map[string]any{
6677
"amount": "1314utia",
@@ -69,20 +80,23 @@ func Test_handleCancelUnbonding(t *testing.T) {
6980
},
7081
}, {
7182
Height: 844287,
83+
Time: ts,
7284
Type: "coin_spent",
7385
Data: map[string]any{
7486
"amount": "45000000utia",
7587
"spender": "celestia1tygms3xhhs3yv487phx3dw4a95jn7t7ls3yw4w",
7688
},
7789
}, {
7890
Height: 844287,
91+
Time: ts,
7992
Type: "coin_received",
8093
Data: map[string]any{
8194
"amount": "45000000utia",
8295
"receiver": "celestia1fl48vsnmsdzcv85q5d2q4z5ajdha8yu3y3clr6",
8396
},
8497
}, {
8598
Height: 844287,
99+
Time: ts,
86100
Type: "transfer",
87101
Data: map[string]any{
88102
"amount": "45000000utia",
@@ -91,12 +105,14 @@ func Test_handleCancelUnbonding(t *testing.T) {
91105
},
92106
}, {
93107
Height: 844287,
108+
Time: ts,
94109
Type: "message",
95110
Data: map[string]any{
96111
"sender": "celestia1tygms3xhhs3yv487phx3dw4a95jn7t7ls3yw4w",
97112
},
98113
}, {
99114
Height: 844287,
115+
Time: ts,
100116
Type: "cancel_unbonding_delegation",
101117
Data: map[string]any{
102118
"amount": "45000000utia",
@@ -107,16 +123,60 @@ func Test_handleCancelUnbonding(t *testing.T) {
107123
},
108124
},
109125
msg: &storage.Message{
110-
Type: types.MsgDelegate,
126+
Type: types.MsgCancelUnbondingDelegation,
111127
Height: 844287,
128+
Time: ts,
129+
Data: types.PackedBytes{
130+
131+
"Amount": map[string]any{
132+
"Amount": "45000000",
133+
"Denom": "utia",
134+
},
135+
"CreationHeight": 842069,
136+
"DelegatorAddress": "celestia1lkrd86urrmhmsvgzfygjsguv3cgv0036hrj0m9",
137+
"ValidatorAddress": "celestiavaloper1qe8uuf5x69c526h4nzxwv4ltftr73v7q5qhs58",
138+
},
112139
},
113140
idx: testsuite.Ptr(0),
141+
cancel: &storage.Undelegation{
142+
Height: 844287,
143+
Time: ts,
144+
Amount: decimal.RequireFromString("45000000"),
145+
Address: &storage.Address{
146+
Address: "celestia1lkrd86urrmhmsvgzfygjsguv3cgv0036hrj0m9",
147+
Height: 844287,
148+
LastHeight: 844287,
149+
Hash: []byte{0xfd, 0x86, 0xd3, 0xeb, 0x83, 0x1e, 0xef, 0xb8, 0x31, 0x02, 0x49, 0x11, 0x28, 0x23, 0x8c, 0x8e, 0x10, 0xc7, 0xbe, 0x3a},
150+
Balance: storage.Balance{
151+
Currency: currency.Utia,
152+
Delegated: decimal.RequireFromString("45000000"),
153+
Unbonding: decimal.RequireFromString("-45000000"),
154+
},
155+
},
156+
Validator: &storage.Validator{
157+
Address: "celestiavaloper1qe8uuf5x69c526h4nzxwv4ltftr73v7q5qhs58",
158+
Moniker: storage.DoNotModify,
159+
Website: storage.DoNotModify,
160+
Identity: storage.DoNotModify,
161+
Contacts: storage.DoNotModify,
162+
Details: storage.DoNotModify,
163+
Rate: decimal.Zero,
164+
MaxRate: decimal.Zero,
165+
MaxChangeRate: decimal.Zero,
166+
MinSelfDelegation: decimal.Zero,
167+
Rewards: decimal.Zero,
168+
Commissions: decimal.Zero,
169+
Stake: decimal.RequireFromString("45000000"),
170+
},
171+
},
114172
},
115173
}
116174
for _, tt := range tests {
117175
t.Run(tt.name, func(t *testing.T) {
118176
err := handleCancelUnbonding(tt.ctx, tt.events, tt.msg, tt.idx)
119177
require.NoError(t, err)
178+
require.Len(t, tt.ctx.CancelUnbonding, 1)
179+
require.Equal(t, *tt.cancel, tt.ctx.CancelUnbonding[0])
120180
})
121181
}
122182
}

pkg/indexer/parser/events/create_collateral_token.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/celenium-io/celestia-indexer/pkg/indexer/decode/context"
1212
"github.com/celenium-io/celestia-indexer/pkg/indexer/decode/decoder"
1313
"github.com/pkg/errors"
14+
"github.com/shopspring/decimal"
1415
)
1516

1617
func handleCreateCollateralToken(ctx *context.Context, events []storage.Event, msg *storage.Message, idx *int) error {
@@ -52,9 +53,13 @@ func processCreateCollateralToken(ctx *context.Context, events []storage.Event,
5253
Denom: createToken.Denom,
5354
Type: types.HLTokenTypeCollateral,
5455
Mailbox: &storage.HLMailbox{
56+
Height: ctx.Block.Height,
57+
Time: ctx.Block.Time,
5558
Mailbox: originMailboxId.Bytes(),
5659
},
57-
TokenId: tokenId.Bytes(),
60+
TokenId: tokenId.Bytes(),
61+
Received: decimal.Zero,
62+
Sent: decimal.Zero,
5863
}
5964

6065
if createToken.Owner != "" {

pkg/indexer/parser/events/create_collateral_token_test.go

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,59 +11,89 @@ import (
1111
"github.com/celenium-io/celestia-indexer/internal/storage/types"
1212
testsuite "github.com/celenium-io/celestia-indexer/internal/test_suite"
1313
"github.com/celenium-io/celestia-indexer/pkg/indexer/decode/context"
14+
"github.com/shopspring/decimal"
1415
"github.com/stretchr/testify/require"
1516
)
1617

1718
func Test_handleCreateCollateralToken(t *testing.T) {
19+
ts := time.Now()
1820
tests := []struct {
1921
name string
2022
ctx *context.Context
2123
events []storage.Event
22-
msg []*storage.Message
24+
msg *storage.Message
2325
idx *int
26+
token *storage.HLToken
2427
}{
2528
{
2629
name: "test 1",
2730
ctx: context.NewContext(),
2831
events: []storage.Event{
2932
{
3033
Height: 1036866,
34+
Time: ts,
3135
Type: "message",
3236
Data: map[string]any{
33-
"action": "/hyperlane.warp.v1.MsgCreateCollateralToken",
37+
"action": "/hyperlane.warp.v1.MsgCreateCollateralToken",
38+
"module": "warp",
39+
"msg_index": "0",
40+
"sender": "celestia1zvdlcmplx4gdh4hajwlsegnn2xzzfy470gjw4c",
3441
},
3542
}, {
3643
Height: 1036866,
44+
Time: ts,
3745
Type: "hyperlane.warp.v1.EventCreateCollateralToken",
3846
Data: map[string]any{
39-
"owner": "celestia1jv65s3grqf6v6jl3dp4t6c9t9rk99cd8k44vnj",
40-
"token_id": "0x726f757465725f61707000000000000000000000000000010000000000000000",
4147
"msg_index": "0",
42-
"origin_denom": "utia",
43-
"origin_mailbox": "0x68797065726c616e650000000000000000000000000000000000000000000000",
48+
"origin_denom": "\"utia\"",
49+
"origin_mailbox": "\"0x68797065726c616e650000000000000000000000000000000000000000000000\"",
50+
"owner": "\"celestia1zvdlcmplx4gdh4hajwlsegnn2xzzfy470gjw4c\"",
51+
"token_id": "\"0x726f757465725f61707000000000000000000000000000010000000000000000\"",
4452
},
4553
},
4654
},
47-
msg: []*storage.Message{
48-
{
49-
Type: types.MsgCreateCollateralToken,
50-
Height: 1036866,
55+
msg: &storage.Message{
56+
Time: ts,
57+
Type: types.MsgCreateCollateralToken,
58+
Height: 1036866,
59+
Data: types.PackedBytes{
60+
"OriginDenom": "utia",
61+
"OriginMailbox": "0x68797065726c616e650000000000000000000000000000000000000000000000",
62+
"Owner": "celestia1zvdlcmplx4gdh4hajwlsegnn2xzzfy470gjw4c",
5163
},
5264
},
5365
idx: testsuite.Ptr(0),
66+
token: &storage.HLToken{
67+
Height: 1036866,
68+
Time: ts,
69+
Type: types.HLTokenTypeCollateral,
70+
Denom: "utia",
71+
TokenId: []byte{0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
72+
SentTransfers: 0,
73+
ReceiveTransfers: 0,
74+
Received: decimal.Zero,
75+
Sent: decimal.Zero,
76+
Owner: &storage.Address{
77+
Address: "celestia1zvdlcmplx4gdh4hajwlsegnn2xzzfy470gjw4c",
78+
},
79+
Mailbox: &storage.HLMailbox{
80+
Height: 1036866,
81+
Time: ts,
82+
Mailbox: []byte{0x68, 0x79, 0x70, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
83+
},
84+
},
5485
},
5586
}
5687
for _, tt := range tests {
5788
t.Run(tt.name, func(t *testing.T) {
5889
tt.ctx.Block = &storage.Block{
5990
Height: 1036866,
60-
Time: time.Now(),
61-
}
62-
for i := range tt.msg {
63-
err := handleCreateCollateralToken(tt.ctx, tt.events, tt.msg[i], tt.idx)
64-
require.NoError(t, err)
65-
require.NotNil(t, tt.msg[i].HLToken)
91+
Time: ts,
6692
}
93+
err := handleCreateCollateralToken(tt.ctx, tt.events, tt.msg, tt.idx)
94+
require.NoError(t, err)
95+
require.NotNil(t, tt.msg.HLToken)
96+
require.Equal(t, tt.token, tt.msg.HLToken)
6797
})
6898
}
6999
}

pkg/indexer/parser/events/create_synthetic_token.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/celenium-io/celestia-indexer/pkg/indexer/decode/context"
1212
"github.com/celenium-io/celestia-indexer/pkg/indexer/decode/decoder"
1313
"github.com/pkg/errors"
14+
"github.com/shopspring/decimal"
1415
)
1516

1617
func handleCreateSyntheticToken(ctx *context.Context, events []storage.Event, msg *storage.Message, idx *int) error {
@@ -53,8 +54,12 @@ func processCreateSyntheticToken(ctx *context.Context, events []storage.Event, m
5354
Type: types.HLTokenTypeSynthetic,
5455
Mailbox: &storage.HLMailbox{
5556
Mailbox: originMailboxId.Bytes(),
57+
Height: ctx.Block.Height,
58+
Time: ctx.Block.Time,
5659
},
57-
TokenId: tokenId.Bytes(),
60+
TokenId: tokenId.Bytes(),
61+
Sent: decimal.Zero,
62+
Received: decimal.Zero,
5863
}
5964

6065
if createToken.Owner != "" {

0 commit comments

Comments
 (0)