@@ -629,12 +629,52 @@ export class PgStoreV2 extends BasePgStoreModule {
629
629
if ( cycleCheck . count === 0 )
630
630
throw new InvalidRequestError ( `PoX cycle not found` , InvalidRequestErrorType . invalid_param ) ;
631
631
const results = await sql < ( DbPoxCycleSigner & { total : number } ) [ ] > `
632
- SELECT
633
- signing_key, weight, stacked_amount, weight_percent, stacked_amount_percent,
634
- COUNT(*) OVER()::int AS total
635
- FROM pox_sets
636
- WHERE canonical = TRUE AND cycle_number = ${ args . cycle_number }
637
- ORDER BY weight DESC, stacked_amount DESC, signing_key
632
+ WITH signer_keys AS (
633
+ SELECT DISTINCT ON (stacker) stacker, signer_key
634
+ FROM pox4_events
635
+ WHERE canonical = true AND microblock_canonical = true
636
+ AND name in ('stack-aggregation-commit-indexed', 'stack-aggregation-commit')
637
+ AND start_cycle_id = ${ args . cycle_number }
638
+ AND end_cycle_id = ${ args . cycle_number + 1 }
639
+ ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
640
+ ), delegated_stackers AS (
641
+ SELECT DISTINCT ON (main.stacker)
642
+ main.stacker,
643
+ sk.signer_key
644
+ FROM pox4_events main
645
+ LEFT JOIN signer_keys sk ON main.delegator = sk.stacker
646
+ WHERE main.canonical = true
647
+ AND main.microblock_canonical = true
648
+ AND main.name IN ('delegate-stack-stx', 'delegate-stack-increase', 'delegate-stack-extend')
649
+ AND main.start_cycle_id <= ${ args . cycle_number }
650
+ AND main.end_cycle_id > ${ args . cycle_number }
651
+ ORDER BY main.stacker, main.block_height DESC, main.microblock_sequence DESC, main.tx_index DESC, main.event_index DESC
652
+ ), solo_stackers AS (
653
+ SELECT DISTINCT ON (stacker)
654
+ stacker,
655
+ signer_key
656
+ FROM pox4_events
657
+ WHERE canonical = true AND microblock_canonical = true
658
+ AND name in ('stack-stx', 'stacks-increase', 'stack-extend')
659
+ AND start_cycle_id <= ${ args . cycle_number }
660
+ AND end_cycle_id > ${ args . cycle_number }
661
+ ORDER BY stacker, block_height DESC, microblock_sequence DESC, tx_index DESC, event_index DESC
662
+ )
663
+ SELECT
664
+ ps.signing_key,
665
+ ps.weight,
666
+ ps.stacked_amount,
667
+ ps.weight_percent,
668
+ ps.stacked_amount_percent,
669
+ COUNT(DISTINCT ds.stacker)::int AS pooled_stacker_count,
670
+ COUNT(DISTINCT ss.stacker)::int AS solo_stacker_count,
671
+ COUNT(*) OVER()::int AS total
672
+ FROM pox_sets ps
673
+ LEFT JOIN delegated_stackers ds ON ps.signing_key = ds.signer_key
674
+ LEFT JOIN solo_stackers ss ON ps.signing_key = ss.signer_key
675
+ WHERE ps.canonical = TRUE AND ps.cycle_number = ${ args . cycle_number }
676
+ GROUP BY ps.signing_key, ps.weight, ps.stacked_amount, ps.weight_percent, ps.stacked_amount_percent
677
+ ORDER BY ps.weight DESC, ps.stacked_amount DESC, ps.signing_key
638
678
OFFSET ${ offset }
639
679
LIMIT ${ limit }
640
680
` ;
@@ -654,10 +694,52 @@ export class PgStoreV2 extends BasePgStoreModule {
654
694
if ( cycleCheck . count === 0 )
655
695
throw new InvalidRequestError ( `PoX cycle not found` , InvalidRequestErrorType . invalid_param ) ;
656
696
const results = await sql < DbPoxCycleSigner [ ] > `
657
- SELECT
658
- signing_key, weight, stacked_amount, weight_percent, stacked_amount_percent
659
- FROM pox_sets
660
- WHERE canonical = TRUE AND cycle_number = ${ args . cycle_number } AND signing_key = ${ args . signer_key }
697
+ WITH signer_keys AS (
698
+ SELECT DISTINCT ON (stacker) stacker, signer_key
699
+ FROM pox4_events
700
+ WHERE canonical = true AND microblock_canonical = true
701
+ AND name in ('stack-aggregation-commit-indexed', 'stack-aggregation-commit')
702
+ AND start_cycle_id = ${ args . cycle_number }
703
+ AND end_cycle_id = ${ args . cycle_number + 1 }
704
+ ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
705
+ ), delegated_stackers AS (
706
+ SELECT DISTINCT ON (main.stacker)
707
+ main.stacker,
708
+ sk.signer_key
709
+ FROM pox4_events main
710
+ LEFT JOIN signer_keys sk ON main.delegator = sk.stacker
711
+ WHERE main.canonical = true
712
+ AND main.microblock_canonical = true
713
+ AND main.name IN ('delegate-stack-stx', 'delegate-stack-increase', 'delegate-stack-extend')
714
+ AND main.start_cycle_id <= ${ args . cycle_number }
715
+ AND main.end_cycle_id > ${ args . cycle_number }
716
+ ORDER BY main.stacker, main.block_height DESC, main.microblock_sequence DESC, main.tx_index DESC, main.event_index DESC
717
+ ), solo_stackers AS (
718
+ SELECT DISTINCT ON (stacker)
719
+ stacker,
720
+ signer_key
721
+ FROM pox4_events
722
+ WHERE canonical = true AND microblock_canonical = true
723
+ AND name in ('stack-stx', 'stacks-increase', 'stack-extend')
724
+ AND start_cycle_id <= ${ args . cycle_number }
725
+ AND end_cycle_id > ${ args . cycle_number }
726
+ ORDER BY stacker, block_height DESC, microblock_sequence DESC, tx_index DESC, event_index DESC
727
+ )
728
+ SELECT
729
+ ps.signing_key,
730
+ ps.weight,
731
+ ps.stacked_amount,
732
+ ps.weight_percent,
733
+ ps.stacked_amount_percent,
734
+ COUNT(DISTINCT ds.stacker)::int AS pooled_stacker_count,
735
+ COUNT(DISTINCT ss.stacker)::int AS solo_stacker_count
736
+ FROM pox_sets ps
737
+ LEFT JOIN delegated_stackers ds ON ps.signing_key = ds.signer_key
738
+ LEFT JOIN solo_stackers ss ON ps.signing_key = ss.signer_key
739
+ WHERE ps.canonical = TRUE
740
+ AND ps.cycle_number = ${ args . cycle_number }
741
+ AND ps.signing_key = ${ args . signer_key }
742
+ GROUP BY ps.signing_key, ps.weight, ps.stacked_amount, ps.weight_percent, ps.stacked_amount_percent
661
743
LIMIT 1
662
744
` ;
663
745
if ( results . count > 0 ) return results [ 0 ] ;
@@ -687,19 +769,68 @@ export class PgStoreV2 extends BasePgStoreModule {
687
769
InvalidRequestErrorType . invalid_param
688
770
) ;
689
771
const results = await sql < ( DbPoxCycleSignerStacker & { total : number } ) [ ] > `
690
- WITH stackers AS (
691
- SELECT DISTINCT ON (stacker) stacker, locked, pox_addr, amount_ustx, name
692
- FROM pox4_events
693
- WHERE canonical = true
694
- AND microblock_canonical = true
695
- AND start_cycle_id <= ${ args . cycle_number }
696
- AND (end_cycle_id >= ${ args . cycle_number } OR end_cycle_id IS NULL)
697
- AND signer_key = ${ args . signer_key }
698
- ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
772
+ WITH signer_keys AS (
773
+ SELECT DISTINCT ON (stacker) stacker, signer_key
774
+ FROM pox4_events
775
+ WHERE canonical = true AND microblock_canonical = true
776
+ AND name in ('stack-aggregation-commit-indexed', 'stack-aggregation-commit')
777
+ AND start_cycle_id = ${ args . cycle_number }
778
+ AND end_cycle_id = ${ args . cycle_number + 1 }
779
+ ORDER BY stacker, block_height DESC, tx_index DESC, event_index DESC
780
+ ), delegated_stackers AS (
781
+ SELECT DISTINCT ON (main.stacker)
782
+ main.stacker,
783
+ sk.signer_key,
784
+ main.locked,
785
+ main.pox_addr,
786
+ main.name,
787
+ main.amount_ustx,
788
+ 'pooled' as stacker_type
789
+ FROM pox4_events main
790
+ LEFT JOIN signer_keys sk ON main.delegator = sk.stacker
791
+ WHERE main.canonical = true
792
+ AND main.microblock_canonical = true
793
+ AND main.name IN ('delegate-stack-stx', 'delegate-stack-increase', 'delegate-stack-extend')
794
+ AND main.start_cycle_id <= ${ args . cycle_number }
795
+ AND main.end_cycle_id > ${ args . cycle_number }
796
+ ORDER BY main.stacker, main.block_height DESC, main.microblock_sequence DESC, main.tx_index DESC, main.event_index DESC
797
+ ), solo_stackers AS (
798
+ SELECT DISTINCT ON (stacker)
799
+ stacker,
800
+ signer_key,
801
+ locked,
802
+ pox_addr,
803
+ name,
804
+ amount_ustx,
805
+ 'solo' as stacker_type
806
+ FROM pox4_events
807
+ WHERE canonical = true AND microblock_canonical = true
808
+ AND name in ('stack-stx', 'stacks-increase', 'stack-extend')
809
+ AND start_cycle_id <= ${ args . cycle_number }
810
+ AND end_cycle_id > ${ args . cycle_number }
811
+ ORDER BY stacker, block_height DESC, microblock_sequence DESC, tx_index DESC, event_index DESC
812
+ ), combined_stackers AS (
813
+ SELECT * FROM delegated_stackers
814
+ UNION ALL
815
+ SELECT * FROM solo_stackers
699
816
)
700
- SELECT *, COUNT(*) OVER()::int AS total FROM stackers
701
- OFFSET ${ offset }
817
+ SELECT
818
+ ps.signing_key,
819
+ cs.stacker,
820
+ cs.locked,
821
+ cs.pox_addr,
822
+ cs.name,
823
+ cs.amount_ustx,
824
+ cs.stacker_type,
825
+ COUNT(*) OVER()::int AS total
826
+ FROM pox_sets ps
827
+ LEFT JOIN combined_stackers cs ON ps.signing_key = cs.signer_key
828
+ WHERE ps.canonical = TRUE
829
+ AND ps.cycle_number = ${ args . cycle_number }
830
+ AND ps.signing_key = ${ args . signer_key }
831
+ ORDER BY locked DESC
702
832
LIMIT ${ limit }
833
+ OFFSET ${ offset }
703
834
` ;
704
835
return {
705
836
limit,
0 commit comments