@@ -36,6 +36,8 @@ type txBatchIndexer struct {
3636 inOutIndexer * shared.InputOutputIndexer
3737 newTxs []* database.PChainTx
3838 dataTransformer * PChainDataTransformer
39+
40+ durangoTime time.Time
3941}
4042
4143func NewPChainDataTransformer (txTransformer func (tx * database.PChainTx ) * database.PChainTx ) * PChainDataTransformer {
@@ -50,6 +52,11 @@ func NewPChainBatchIndexer(
5052 rpcClient chain.RPCClient ,
5153 dataTransformer * PChainDataTransformer ,
5254) * txBatchIndexer {
55+ var durangoTime time.Time
56+ if time , ok := shared .DurangoTimes [ctx .Config ().Chain .ChainAddressHRP ]; ok {
57+ durangoTime = time
58+ }
59+
5360 updater := newPChainInputUpdater (ctx , rpcClient )
5461 return & txBatchIndexer {
5562 db : ctx .DB (),
@@ -59,6 +66,8 @@ func NewPChainBatchIndexer(
5966 inOutIndexer : shared .NewInputOutputIndexer (updater ),
6067 newTxs : make ([]* database.PChainTx , 0 ),
6168 dataTransformer : dataTransformer ,
69+
70+ durangoTime : durangoTime ,
6271 }
6372}
6473
@@ -296,12 +305,18 @@ func (xi *txBatchIndexer) updateDelegatorTx(
296305}
297306
298307// Common code for Add[Permissionless]DelegatorTx and Add[Permissionless]ValidatorTx
308+ // We assume that dbTx.blockTime is set to the block time before calling this function
299309func (xi * txBatchIndexer ) updateAddStakerTx (
300310 dbTx * database.PChainTx ,
301311 tx StakerTx ,
302312 txIns []* avax.TransferableInput ,
303313) error {
304- startTime := tx .StartTime ()
314+ var startTime time.Time
315+ if xi .isDurango (dbTx .BlockTime ) {
316+ startTime = * dbTx .BlockTime
317+ } else {
318+ startTime = tx .StartTime ()
319+ }
305320 endTime := tx .EndTime ()
306321 dbTx .NodeID = tx .NodeID ().String ()
307322 dbTx .StartTime = & startTime
@@ -329,7 +344,11 @@ func (xi *txBatchIndexer) updateAddStakerTx(
329344 return nil
330345}
331346
332- func getAddStakerTxOutputs (txID string , tx StakerTx ) ([]shared.Output , error ) {
347+ func (xi * txBatchIndexer ) isDurango (blockTime * time.Time ) bool {
348+ return blockTime != nil && ! blockTime .Before (xi .durangoTime )
349+ }
350+
351+ func getAddStakerTxOutputs (txID string , tx PermissionlessStakerTx ) ([]shared.Output , error ) {
333352 outs , err := shared .OutputsFromTxOuts (txID , tx .Outputs (), 0 , PChainDefaultInputOutputCreator )
334353 if err != nil {
335354 return nil , err
0 commit comments