@@ -518,20 +518,16 @@ func signedTxnWithAdToTransaction(stxn *sdk.SignedTxnWithAD, extra rowData) (gen
518
518
}
519
519
if len (stxn .ApplyData .EvalDelta .LocalDeltas ) > 0 {
520
520
keys := make ([]tuple , 0 )
521
+
521
522
for k := range stxn .ApplyData .EvalDelta .LocalDeltas {
522
- if k == 0 {
523
- keys = append (keys , tuple {
524
- key : 0 ,
525
- address : stxn .Txn .Sender ,
526
- })
527
- } else {
528
- addr := sdk.Address {}
529
- copy (addr [:], stxn .Txn .Accounts [k - 1 ][:])
530
- keys = append (keys , tuple {
531
- key : k ,
532
- address : addr ,
533
- })
523
+ addr , err := edIndexToAddress (k , stxn .Txn , stxn .ApplyData .EvalDelta .SharedAccounts )
524
+ if err != nil {
525
+ return generated.Transaction {}, err
534
526
}
527
+ keys = append (keys , tuple {
528
+ key : k ,
529
+ address : addr ,
530
+ })
535
531
}
536
532
sort .Slice (keys , func (i , j int ) bool { return keys [i ].key < keys [j ].key })
537
533
d := make ([]generated.AccountStateDelta , 0 )
@@ -629,6 +625,20 @@ func signedTxnWithAdToTransaction(stxn *sdk.SignedTxnWithAD, extra rowData) (gen
629
625
return txn , nil
630
626
}
631
627
628
+ func edIndexToAddress (index uint64 , txn sdk.Transaction , shared []sdk.Address ) (sdk.Address , error ) {
629
+ // index into [Sender, txn.Accounts[0], txn.Accounts[1], ..., shared[0], shared[1], ...]
630
+ switch {
631
+ case index == 0 :
632
+ return txn .Sender , nil
633
+ case int (index - 1 ) < len (txn .Accounts ):
634
+ return txn .Accounts [index - 1 ], nil
635
+ case int (index - 1 )- len (txn .Accounts ) < len (shared ):
636
+ return shared [int (index - 1 )- len (txn .Accounts )], nil
637
+ default :
638
+ return sdk.Address {}, fmt .Errorf ("invalid Account Index %d in LocalDelta" , index )
639
+ }
640
+ }
641
+
632
642
func (si * ServerImplementation ) assetParamsToAssetQuery (params generated.SearchForAssetsParams ) (idb.AssetsQuery , error ) {
633
643
creator , errorArr := decodeAddress (params .Creator , "creator" , make ([]string , 0 ))
634
644
if len (errorArr ) != 0 {
0 commit comments