@@ -124,15 +124,6 @@ processor.run(db, async ctx => {
124
124
let { blsPubKey, atFutureBlock } = depositAbi . events . StakerRemoved . decode ( log )
125
125
ctx . log . info ( `StakerRemoved: ${ blsPubKey } ${ atFutureBlock } ` )
126
126
let staker = await ctx . store . findOneByOrFail ( Staker , { id : blsPubKey } )
127
- let stakerWithHighestIndex = await ctx . store . find ( Staker , {
128
- where : { balance : MoreThan ( BigInt ( 0 ) ) } ,
129
- order : { index : 'DESC' }
130
- } ) [ 0 ]
131
- if ( staker . id !== stakerWithHighestIndex . id ) {
132
- stakerWithHighestIndex . index = staker . index
133
- stakerWithHighestIndex . updatedAt = new Date ( )
134
- keyToStaker . set ( stakerWithHighestIndex . id , stakerWithHighestIndex )
135
- }
136
127
staker . stakeUpdatedAtBlockNumber = Number ( atFutureBlock )
137
128
staker . balance = BigInt ( 0 )
138
129
staker . updatedAt = new Date ( )
@@ -152,7 +143,30 @@ processor.run(db, async ctx => {
152
143
}
153
144
break
154
145
case depositAbi . events . StakerUpdated . topic :
155
- // This event is not emitted by the contract, but is present in the ABI
146
+ {
147
+ let { blsPubKey } = depositAbi . events . StakerUpdated . decode ( log )
148
+ ctx . log . info ( `StakerUpdated: ${ blsPubKey } ` )
149
+ let staker = await ctx . store . findOneByOrFail ( Staker , { id : blsPubKey } )
150
+ let contract = new depositAbi . Contract ( ctx , block . header , CONTRACT_ADDRESS )
151
+ let { index, stakerData } = await contract . getStakerData ( staker . id )
152
+ ctx . log . info ( `Retrieved staker data: ${ index } ${ stakerData . peerId } ${ stakerData . controlAddress } ${ stakerData . rewardAddress } ${ stakerData . signingAddress } ` )
153
+ staker . index = Number ( index ) - 1
154
+ staker . peerId = hexToBytes ( stakerData . peerId )
155
+ staker . controlAddressHash = hexToBytes ( stakerData . controlAddress )
156
+ staker . rewardAddressHash = hexToBytes ( stakerData . rewardAddress )
157
+ staker . signingAddressHash = hexToBytes ( stakerData . signingAddress )
158
+ staker . updatedAt = new Date ( )
159
+ keyToStaker . set ( staker . id , staker )
160
+ }
161
+ break
162
+ case depositAbi . events . StakerMoved . topic :
163
+ {
164
+ let { blsPubKey, newPosition, atFutureBlock } = depositAbi . events . StakerMoved . decode ( log )
165
+ ctx . log . info ( `StakerMoved: ${ blsPubKey } to position ${ newPosition } at block ${ atFutureBlock } ` )
166
+ let staker = await ctx . store . findOneByOrFail ( Staker , { id : blsPubKey } )
167
+ staker . index = Number ( newPosition ) - 1
168
+ keyToStaker . set ( staker . id , staker )
169
+ }
156
170
break
157
171
default :
158
172
break
0 commit comments