code.vegaprotocol.io/vega@v0.79.0/core/integration/features/verified/0061-REWP-delegation_rewards_genesis.feature (about)

     1  Feature: Staking & Delegation - scenarios focusing on initial epoch
     2  
     3    Background:
     4      Given the following network parameters are set:
     5        | name                                              |  value  |
     6        | reward.asset                                      |  VEGA   |
     7        | validators.epoch.length                           |  24h    |
     8        | validators.delegation.minAmount                   |  10     |
     9        | reward.staking.delegation.delegatorShare          |  0.883  |
    10        | reward.staking.delegation.minimumValidatorStake   |  100    |
    11        | reward.staking.delegation.maxPayoutPerParticipant |  100000 |
    12        | reward.staking.delegation.competitionLevel        |  1.1    |
    13        | reward.staking.delegation.minValidators           |  5      |
    14        | reward.staking.delegation.optimalStakeMultiplier  |  5.0    |
    15    
    16      And the average block duration is "1"
    17      And time is updated to "2021-09-10T00:00:00Z"
    18   
    19      And the validators:
    20        | id     | staking account balance |
    21        | node1  |         1000000         |
    22        | node2  |         1000000         |
    23        | node3  |         1000000         |
    24        | node4  |         1000000         |
    25        | node5  |         1000000         |
    26        | node6  |         1000000         |
    27        | node7  |         1000000         |
    28        | node8  |         1000000         |
    29        | node9  |         1000000         |
    30        | node10 |         1000000         |
    31        | node11 |         1000000         |
    32        | node12 |         1000000         |
    33        | node13 |         1000000         |
    34  
    35    Scenario: No delegation in the first epoch (0061-REWP-additional-tests)
    36  
    37      
    38      Then the network moves ahead "172804" blocks
    39  
    40      And the parties receive the following reward for epoch 1:
    41        | party  | asset | amount |
    42        | node1  | VEGA  |     0  | 
    43        | node2  | VEGA  |     0  | 
    44        | node3  | VEGA  |     0  | 
    45        | node4  | VEGA  |     0  | 
    46        | node5  | VEGA  |     0  | 
    47        | node6  | VEGA  |     0  | 
    48        | node8  | VEGA  |     0  | 
    49        | node10 | VEGA  |     0  | 
    50        | node11 | VEGA  |     0  | 
    51        | node12 | VEGA  |     0  | 
    52        | node13 | VEGA  |     0  | 
    53  
    54      Then the network moves ahead "86403" blocks
    55  
    56      And the parties receive the following reward for epoch 2:
    57        | party  | asset | amount |
    58        | node1  | VEGA  |     0  | 
    59        | node2  | VEGA  |     0  | 
    60        | node3  | VEGA  |     0  | 
    61        | node4  | VEGA  |     0  | 
    62        | node5  | VEGA  |     0  | 
    63        | node6  | VEGA  |     0  | 
    64        | node8  | VEGA  |     0  | 
    65        | node10 | VEGA  |     0  | 
    66        | node11 | VEGA  |     0  | 
    67        | node12 | VEGA  |     0  | 
    68        | node13 | VEGA  |     0  | 
    69  
    70      And the parties deposit on asset's general account the following amount:
    71        | party  | asset  | amount |
    72        | party1 | VEGA   | 111000 |
    73  
    74      And the parties deposit on staking account the following amount:
    75        | party  | asset  | amount |
    76        | party1 | VEGA   | 111000 |  
    77  
    78      #set up the self delegation of the validators (number of validators < min. validators parameter)
    79      Then the parties submit the following delegations:
    80        | party  | node id  | amount |
    81        | node1  |  node1   |  11000 | 
    82        | node2  |  node2   |  12000 | 
    83        | node3  |  node3   |  13000 | 
    84        | node4  |  node4   |     99 | 
    85        | party1 |  node4   | 111000 | 
    86  
    87      And the parties should have the following delegation balances for epoch 4:
    88        | party  | node id  | amount |
    89        | node1  |  node1   |  11000 | 
    90        | node2  |  node2   |  12000 |       
    91        | node3  |  node3   |  13000 |  
    92        | node4  |  node4   |     99 |  
    93        | party1 |  node4   | 111000 |  
    94  
    95      And the parties deposit on asset's general account the following amount:
    96        | party                                                            | asset | amount |
    97        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
    98      And the parties submit the following one off transfers:
    99        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   100        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 50000  | 2021-09-10T00:00:01Z |
   101      Then the network moves ahead "172804" blocks
   102  
   103      And the parties should have the following delegation balances for epoch 4:
   104        | party  | node id  | amount  |
   105        | node1  |  node1   |  11000  | 
   106        | node2  |  node2   |  12000  |       
   107        | node3  |  node3   |  13000  |  
   108        | node4  |  node4   |     99  |  
   109        | party1 |  node4   |  111000 |  
   110      
   111      # val score = max(0, (valStake - penaltyFlatAmt - penaltyDownAmt) / totalStake)
   112      # node1 score = (11000 - 0 - 0)/ 147099 = 0.07478 
   113      # node2 score = (12000 - 0 - 0)/ 147099 = 0.08158   
   114      # node3 score = (13000 - 0 - 0)/ 147099 = 0.08462 
   115      # node4 score = max(0, (111099 - 98652.16154 - 48,864.80769) / 147099) = 0
   116      Then the validators should have the following val scores for epoch 4:
   117        | node id | validator score  | normalised score |
   118        |  node1  |      0.07478     |     0.31032      |    
   119        |  node2  |      0.08158     |     0.33854      |
   120        |  node3  |      0.08462     |     0.35114      | 
   121        |  node4  |      0.00000     |     0.00000      | 
   122        |  node5  |      0.00000     |     0.00000      | 
   123        |  node6  |      0.00000     |     0.00000      | 
   124        |  node7  |      0.00000     |     0.00000      | 
   125        |  node8  |      0.00000     |     0.00000      | 
   126        |  node9  |      0.00000     |     0.00000      | 
   127        |  node10 |      0.00000     |     0.00000      | 
   128        |  node11 |      0.00000     |     0.00000      | 
   129        |  node12 |      0.00000     |     0.00000      | 
   130        |  node13 |      0.00000     |     0.00000      |
   131  
   132      # party1 is delegating to node 4 which has a 0 valScore so they get nothing 
   133      # node1 gets 0.31032 of the reward 
   134      # node2 gets 0.33854  of the reward 
   135      # node3 gets 0.35114 of the reward 
   136      And the parties receive the following reward for epoch 4:
   137        | party  | asset | amount  |
   138        | party1 | VEGA  | 0       | 
   139        | node1  | VEGA  | 15516   | 
   140        | node2  | VEGA  | 16926   | 
   141        | node3  | VEGA  | 17557   | 
   142        | node4  | VEGA  |     0   | 
   143        | node5  | VEGA  |     0   | 
   144        | node6  | VEGA  |     0   | 
   145        | node8  | VEGA  |     0   | 
   146        | node10 | VEGA  |     0   | 
   147        | node11 | VEGA  |     0   | 
   148        | node12 | VEGA  |     0   | 
   149        | node13 | VEGA  |     0   | 
   150  
   151    Scenario: Only a few validators self-delegate, no delegation (0061-REWP-additional-tests)
   152  
   153      #set up the self delegation of the validators (number of validators = min. validators parameter)
   154      Then the parties submit the following delegations:
   155        | party  | node id  | amount |
   156        | node1  |  node1   | 11000  | 
   157        | node2  |  node2   | 12000  |       
   158        | node3  |  node3   | 13000  | 
   159        | node4  |  node4   | 14000  | 
   160        | node5  |  node5   | 15000  | 
   161  
   162      And the parties deposit on asset's general account the following amount:
   163        | party                                                            | asset | amount |
   164        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
   165      And the parties submit the following one off transfers:
   166        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   167        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 50000  | 2021-09-10T00:00:01Z |
   168      
   169      #complete the initial epoch for delegation to take effect
   170      Then the network moves ahead "172804" blocks
   171  
   172      # optStake = 65000/(max(5, 13/1.1)) = 5500
   173      # val score = max(0, (valStake - penaltyFlatAmt - penaltyDownAmt) / totalStake)
   174      # node1 score = (11000 - 5500 - 0)/ 65000 = 0.08462 
   175      # node2 score = (12000 - 6500 - 0)/ 65000 = 0.08462   
   176      # node3 score = (13000 - 7500 - 0)/ 65000 = 0.08462
   177      # node4 score = (14000 - 8500 - 0)/ 65000 = 0.08462 
   178      # node5 score = (15000 - 9500 - 0)/ 65000 = 0.08462
   179      Then the validators should have the following val scores for epoch 1:
   180        | node id | validator score  | normalised score |
   181        |  node1  |      0.08462     |     0.20000      |    
   182        |  node2  |      0.08462     |     0.20000      |
   183        |  node3  |      0.08462     |     0.20000      | 
   184        |  node4  |      0.08462     |     0.20000      | 
   185        |  node5  |      0.08462     |     0.20000      | 
   186        |  node6  |      0.00000     |     0.00000      | 
   187        |  node7  |      0.00000     |     0.00000      | 
   188        |  node8  |      0.00000     |     0.00000      | 
   189        |  node9  |      0.00000     |     0.00000      | 
   190        |  node10 |      0.00000     |     0.00000      | 
   191        |  node11 |      0.00000     |     0.00000      | 
   192        |  node12 |      0.00000     |     0.00000      | 
   193        |  node13 |      0.00000     |     0.00000      | 
   194  
   195      #each node gets 0.2 of the reward, only self delegation in place
   196      And the parties receive the following reward for epoch 1:
   197        | party  | asset | amount |
   198        | node1  | VEGA  | 10000  | 
   199        | node2  | VEGA  | 10000  | 
   200        | node3  | VEGA  | 10000  | 
   201        | node4  | VEGA  | 10000  | 
   202        | node5  | VEGA  | 10000  | 
   203        | node6  | VEGA  |     0  | 
   204        | node8  | VEGA  |     0  | 
   205        | node10 | VEGA  |     0  | 
   206        | node11 | VEGA  |     0  | 
   207        | node12 | VEGA  |     0  | 
   208        | node13 | VEGA  |     0  | 
   209  
   210    Scenario: Only a few validators self-delegate, small delegation to a single validator (with own stake). Some validators delegate over max delegatable amount (0061-REWP-additional-tests)
   211  
   212      And the parties deposit on asset's general account the following amount:
   213        | party  | asset  | amount |
   214        | party1 | VEGA   |     10 |
   215        | party2 | VEGA   |     50 |
   216        | party3 | VEGA   |    200 |
   217  
   218      And the parties deposit on staking account the following amount:
   219        | party  | asset  | amount |
   220        | party1 | VEGA   |     10 |  
   221        | party2 | VEGA   |     50 |  
   222        | party3 | VEGA   |    200 |  
   223  
   224      Then the parties submit the following delegations:
   225        | party  | node id  |  amount |
   226        | party1 |  node1   |      10 | 
   227        | party2 |  node1   |      50 | 
   228        | party3 |  node1   |     200 | 
   229  
   230      #set up the self delegation of the validators (number of validators = min. validators parameter)
   231      Then the parties submit the following delegations:
   232        | party  | node id  | amount |
   233        | node1  |  node1   |   100  | 
   234        | node2  |  node2   |   200  |       
   235        | node3  |  node3   |   300  | 
   236        | node4  |  node4   |   400  | 
   237        | node5  |  node5   |   500  | 
   238  
   239      And the parties deposit on asset's general account the following amount:
   240        | party                                                            | asset | amount |
   241        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
   242      And the parties submit the following one off transfers:
   243        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   244        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 50000  | 2021-09-10T00:00:01Z |
   245      
   246      #complete the initial epoch for delegation to take effect
   247      Then the network moves ahead "172804" blocks
   248  
   249      And the parties should have the following delegation balances for epoch 1:
   250        | party  | node id  |  amount |
   251        | node1  |  node1   |     100 | 
   252        | node2  |  node2   |     200 |       
   253        | node3  |  node3   |     300 |  
   254        | node4  |  node4   |     400 | 
   255        | node5  |  node5   |     500 | 
   256        | party1 |  node1   |      10 |  
   257        | party2 |  node1   |      50 |  
   258        | party3 |  node1   |     200 |  
   259  
   260      # totalStale = 1760
   261      # optStake = 1760/(max(5, 13/1.1)) = 148.9230769231
   262      # val score = max(0, (valStake - penaltyFlatAmt - penaltyDownAmt) / totalStake)
   263      # node1 score = (360 - 211.0769230769 - 0)/ 1760 = 0.08462 
   264      # node2 score = (200 - 51.0769230769 - 0)/ 1760 = 0.08462   
   265      # node3 score = (300 - 151.0769230769 - 0)/ 1760 = 0.08462
   266      # node4 score = (400 - 251.0769230769 - 0)/ 1760 = 0.08462 
   267      # node5 score = (500 - 351.0769230769 - 0)/ 1760 = 0.08462
   268      Then the validators should have the following val scores for epoch 1:
   269        | node id | validator score  | normalised score |
   270        |  node1  |      0.08462     |     0.20000      |    
   271        |  node2  |      0.08462     |     0.20000      |
   272        |  node3  |      0.08462     |     0.20000      | 
   273        |  node4  |      0.08462     |     0.20000      | 
   274        |  node5  |      0.08462     |     0.20000      | 
   275        |  node6  |      0.00000     |     0.00000      | 
   276        |  node7  |      0.00000     |     0.00000      | 
   277        |  node8  |      0.00000     |     0.00000      | 
   278        |  node9  |      0.00000     |     0.00000      | 
   279        |  node10 |      0.00000     |     0.00000      | 
   280        |  node11 |      0.00000     |     0.00000      | 
   281        |  node12 |      0.00000     |     0.00000      | 
   282        |  node13 |      0.00000     |     0.00000      | 
   283  
   284      # node 1 and its delegators receive 10k
   285      # delegators to node1 receive 0.883 * 260 / 360 * 10000 = 6377
   286      # party1 gets 10/260 * 6377 = 245
   287      # party1 gets 50/260 * 6377 = 1126
   288      # party1 gets 200/260 * 6377 = 4905 
   289      # node1 takes the rest = 3622 
   290      # node 2, 3, 4, 5 receive 0.2 of the reward each - only self delegation
   291      And the parties receive the following reward for epoch 1:
   292        | party  | asset | amount |
   293        | party1 | VEGA  | 245    | 
   294        | party2 | VEGA  | 1226   | 
   295        | party3 | VEGA  | 4905   | 
   296        | node1  | VEGA  | 3622   | 
   297        | node2  | VEGA  | 10000  | 
   298        | node3  | VEGA  | 10000  |  
   299        | node4  | VEGA  | 10000  | 
   300        | node5  | VEGA  | 10000  | 
   301        | node6  | VEGA  | 0      | 
   302        | node7  | VEGA  | 0      | 
   303        | node8  | VEGA  | 0      | 
   304        | node10 | VEGA  | 0      | 
   305        | node11 | VEGA  | 0      | 
   306        | node12 | VEGA  | 0      | 
   307        | node13 | VEGA  | 0      | 
   308  
   309    Scenario: Only a few validators self-delegate, significant delegation to a three validators only (one w/o own stake) (0061-REWP-additional-tests)
   310  
   311      And the parties deposit on asset's general account the following amount:
   312        | party  | asset  | amount |
   313        | party1 | VEGA   | 111000 |
   314        | party2 | VEGA   | 222000 |
   315        | party3 | VEGA   | 333000 |
   316        | party4 | VEGA   | 444000 |
   317        | party5 | VEGA   | 555000 |
   318    
   319      And the parties deposit on staking account the following amount:
   320        | party  | asset  | amount |
   321        | party1 | VEGA   | 111000 |  
   322        | party2 | VEGA   | 222000 |  
   323        | party3 | VEGA   | 333000 |  
   324        | party4 | VEGA   | 444000 |  
   325        | party5 | VEGA   | 555000 |  
   326    
   327      Then the parties submit the following delegations:
   328        | party  | node id  | amount |
   329        | node1  |  node1   | 11000  | 
   330        | node2  |  node2   | 12000  |       
   331        | node3  |  node3   | 13000  | 
   332        | node4  |  node4   | 14000  | 
   333        | node5  |  node5   | 15000  | 
   334        | node6  |  node6   | 16000  | 
   335    
   336      Then the parties submit the following delegations:
   337        | party  | node id  | amount  |
   338        | party1 |  node1   |  111000 | 
   339        | party2 |  node2   |  111000 | 
   340        | party2 |  node7   |  111000 | 
   341        | party3 |  node1   |  111000 | 
   342        | party3 |  node2   |  111000 | 
   343        | party3 |  node7   |  111000 | 
   344        | party4 |  node1   |  222000 | 
   345        | party4 |  node7   |  222000 | 
   346        | party5 |  node2   |  555000 | 
   347    
   348      #set up the self delegation of the validators (number of validators > min. validators parameter)
   349      And the parties should have the following delegation balances for epoch 1:
   350        | party  | node id  | amount  |
   351        | node1  |  node1   |   11000 | 
   352        | node2  |  node2   |   12000 |       
   353        | node3  |  node3   |   13000 |  
   354        | node4  |  node4   |   14000 |  
   355        | node5  |  node5   |   15000 |  
   356        | node6  |  node6   |   16000 |  
   357        | node7  |  node7   |       0 |  
   358        | party1 |  node1   |  111000 | 
   359        | party2 |  node2   |  111000 | 
   360        | party2 |  node7   |  111000 | 
   361        | party3 |  node1   |  111000 | 
   362        | party3 |  node2   |  111000 | 
   363        | party3 |  node7   |  111000 | 
   364        | party4 |  node1   |  222000 | 
   365        | party4 |  node7   |  222000 | 
   366        | party5 |  node2   |  555000 | 
   367    
   368      And the parties deposit on asset's general account the following amount:
   369        | party                                                            | asset | amount |
   370        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
   371      And the parties submit the following one off transfers:
   372        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   373        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 50000  | 2021-09-10T00:00:01Z |
   374      
   375      #complete the initial epoch for delegation to take effect
   376      Then the network moves ahead "172804" blocks
   377    
   378      And the parties should have the following delegation balances for epoch 1:
   379        | party  | node id  |  amount |
   380        | node1  |  node1   |   11000 | 
   381        | node2  |  node2   |   12000 |       
   382        | node3  |  node3   |   13000 |  
   383        | node4  |  node4   |   14000 |  
   384        | node5  |  node5   |   15000 |  
   385        | node6  |  node6   |   16000 |  
   386        | node7  |  node7   |       0 |  
   387        | party1 |  node1   |  111000 | 
   388        | party2 |  node2   |  111000 | 
   389        | party2 |  node7   |  111000 | 
   390        | party3 |  node1   |  111000 | 
   391        | party3 |  node2   |  111000 | 
   392        | party3 |  node7   |  111000 | 
   393        | party4 |  node1   |  222000 | 
   394        | party4 |  node7   |  222000 | 
   395        | party5 |  node2   |  555000 | 
   396    
   397      # totalStale = 1,746,000
   398      # optStake = 1,746,000/(max(5, 13/1.1)) = 147,738.4615384615
   399      # val score = max(0, (valStake - penaltyFlatAmt - penaltyDownAmt) / totalStake)
   400      # node1 score = (455000 - 307,261.5384615385 - 0)/ 1746000 = 0.08462 
   401      # node2 score = (789000 - 641,261.5384615385 - 50,307.6923076925)/ 1746000 = 0.05580   
   402      # node3 score = (13000 - 0 - 0)/ 1746000 = 0.00745 
   403      # node4 score = (14000 - 0 - 0)/ 1746000 = 0.00802 
   404      # node5 score = (15000 - 0 - 0)/ 1746000 = 0.00859
   405      # node6 score = (16000 - 0 - 0)/ 1746000 = 0.00916
   406      # node7 score = 0 (self stake less than min stake)
   407      Then the validators should have the following val scores for epoch 1:
   408        | node id | validator score  | normalised score |
   409        |  node1  |      0.08462     |     0.48731      |    
   410        |  node2  |      0.05580     |     0.32137      |
   411        |  node3  |      0.00745     |     0.04288      | 
   412        |  node4  |      0.00802     |     0.04618      | 
   413        |  node5  |      0.00859     |     0.04948      | 
   414        |  node6  |      0.00916     |     0.05278      | 
   415        |  node7  |      0.00000     |     0.00000      | 
   416        |  node8  |      0.00000     |     0.00000      | 
   417        |  node9  |      0.00000     |     0.00000      | 
   418        |  node10 |      0.00000     |     0.00000      | 
   419        |  node11 |      0.00000     |     0.00000      | 
   420        |  node12 |      0.00000     |     0.00000      | 
   421        |  node13 |      0.00000     |     0.00000      | 
   422    
   423      And the parties receive the following reward for epoch 1:
   424        | party  | asset | amount |
   425        | party1 | VEGA  | 5248   | 
   426        | party2 | VEGA  | 1996   | 
   427        | party3 | VEGA  | 7244   | 
   428        | node1  | VEGA  | 3370   | 
   429        | node2  | VEGA  | 2095   | 
   430        | node3  | VEGA  | 2144   |  
   431        | node4  | VEGA  | 2308   | 
   432        | node5  | VEGA  | 2473   | 
   433        | node6  | VEGA  | 2638   | 
   434        | node7  | VEGA  | 0      | 
   435        | node8  | VEGA  | 0      | 
   436        | node10 | VEGA  | 0      | 
   437        | node11 | VEGA  | 0      | 
   438        | node12 | VEGA  | 0      | 
   439        | node13 | VEGA  | 0      | 
   440  
   441    Scenario: Validator owns more tokens than the minimumValidatorStake, but most of them are delegated to a different validator, then withdraws so that he owns less than minimumValidatorStake (0061-REWP-additional-tests)
   442  
   443      And the parties deposit on asset's general account the following amount:
   444        | party  | asset  | amount |
   445        | party1 | VEGA   | 111000 |
   446        | party2 | VEGA   | 222000 |
   447  
   448      And the parties deposit on staking account the following amount:
   449        | party  | asset  | amount |
   450        | party1 | VEGA   | 111000 |  
   451        | party2 | VEGA   | 222000 |   
   452  
   453      Then the parties submit the following delegations:
   454        | party  | node id  | amount |
   455        | node1  |  node1   |  11000 | 
   456        | node2  |  node2   |     20 |       
   457        | node3  |  node3   |     30 | 
   458        | node4  |  node4   |  14000 | 
   459        | node5  |  node5   |  15000 | 
   460        | node6  |  node6   |  16000 | 
   461        | node8  |  node8   |    110 |       
   462        | node2  |  node7   |    180 |       
   463        | node3  |  node7   |   3000 | 
   464  
   465      Then the parties submit the following delegations:
   466        | party  | node id  | amount  |
   467        | party1 |  node1   |  111000 | 
   468        | party2 |  node2   |  222000 | 
   469  
   470      #set up the self delegation of the validators (number of validators > min. validators parameter)
   471      And the parties should have the following delegation balances for epoch 1:
   472        | party  | node id  | amount |
   473        | node1  |  node1   |  11000 | 
   474        | node2  |  node2   |     20 |       
   475        | node3  |  node3   |     30 | 
   476        | node4  |  node4   |  14000 | 
   477        | node5  |  node5   |  15000 | 
   478        | node6  |  node6   |  16000 | 
   479        | node8  |  node8   |    110 |  
   480        | node2  |  node7   |    180 |       
   481        | node3  |  node7   |   3000 | 
   482        | party1 |  node1   | 111000 | 
   483        | party2 |  node2   | 222000 | 
   484  
   485      And the parties deposit on asset's general account the following amount:
   486        | party                                                            | asset | amount |
   487        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
   488      And the parties submit the following one off transfers:
   489        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   490        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 50000  | 2021-09-10T00:00:01Z |
   491  
   492        #complete the initial epoch for delegation to take effect
   493        Then the network moves ahead "172804" blocks
   494  
   495        And the parties should have the following delegation balances for epoch 1:
   496          | party  | node id  | amount  |
   497          | node1  |  node1   |  11000  | 
   498          | node2  |  node2   |     20  |       
   499          | node3  |  node3   |     30  | 
   500          | node4  |  node4   |  14000  | 
   501          | node5  |  node5   |  15000  | 
   502          | node6  |  node6   |  16000  |  
   503          | node8  |  node8   |    110  |       
   504          | node2  |  node7   |    180  |       
   505          | node3  |  node7   |   3000  | 
   506          | party1 |  node1   |  111000 | 
   507          | party2 |  node2   |  222000 | 
   508  
   509      # totalStale = 392,340
   510      # optStake = 392,340/(max(5, 13/1.1)) = 33,198
   511      # val score = max(0, (valStake - penaltyFlatAmt - penaltyDownAmt) / totalStake)
   512      # node1 score = (122000 - 88802 - 0)/ 392340 = 0.08462 
   513      # node2 score = max(0, (222020 - 188,822 - 56,030)/ 392340) = 0
   514      # node3 score = (30 - 0 - 0)/ 392340 = 0.00008
   515      # node4 score = (14000 - 0 - 0)/ 392340 = 0.03568 
   516      # node5 score = (15000 - 0 - 0)/ 392340 = 0.03823
   517      # node6 score = (16000 - 0 - 0)/ 392340 = 0.04078
   518      # node7 score = (3180 - 0 - 0)/ 392340 = 0.00811 
   519      # node8 score = (110 - 0 - 0)/ 392340 = 0.00028
   520        Then the validators should have the following val scores for epoch 1:
   521          | node id | validator score  | normalised score |
   522          |  node1  |      0.08462     |     0.42394      |    
   523          |  node2  |      0.00000     |     0.00000      | #no self stake
   524          |  node3  |      0.00000     |     0.00000      | #no self stake
   525          |  node4  |      0.03568     |     0.17878      | 
   526          |  node5  |      0.03823     |     0.19155      | 
   527          |  node6  |      0.04078     |     0.20432      | 
   528          |  node7  |      0.00000     |     0.00000      | ֱֱ#no self stake
   529          |  node8  |      0.00028     |     0.00140      | 
   530          |  node9  |      0.00000     |     0.00000      | 
   531          |  node10 |      0.00000     |     0.00000      | 
   532          |  node11 |      0.00000     |     0.00000      | 
   533          |  node12 |      0.00000     |     0.00000      | 
   534          |  node13 |      0.00000     |     0.00000      |
   535  
   536        And the parties receive the following reward for epoch 1:
   537          | party  | asset | amount |
   538          | party1 | VEGA  | 17029  | 
   539          | party2 | VEGA  | 0      | 
   540          | node1  | VEGA  | 4167   | 
   541          | node2  | VEGA  | 0      | 
   542          | node3  | VEGA  | 0      |  
   543          | node4  | VEGA  | 8939   | 
   544          | node5  | VEGA  | 9577   | 
   545          | node6  | VEGA  | 10216  | 
   546          | node7  | VEGA  | 0      | 
   547          | node8  | VEGA  | 70     | 
   548          | node10 | VEGA  | 0      | 
   549          | node11 | VEGA  | 0      | 
   550          | node12 | VEGA  | 0      | 
   551          | node13 | VEGA  | 0      | 
   552  
   553      # Leave 20 in the account
   554      Given the parties withdraw from staking account the following amount:  
   555        | party  | asset  | amount |
   556        | node2  | VEGA   | 999980 | 
   557  
   558      And the parties submit the following undelegations:
   559        | party | node id | amount | when |
   560        | node3 |  node7  |   2900 | now  |
   561        | node8 |  node8  |     60 | now  |
   562  
   563      Then the network moves ahead "1" blocks
   564  
   565      # Delegation changes due to undelegation are immediate, need to complete the epoch for withdrawal to get registered
   566      And the parties should have the following delegation balances for epoch 2:
   567        | party  | node id  | amount  |
   568        | node1  |  node1   |  11000  | 
   569        | node2  |  node2   |     20  |       
   570        | node3  |  node3   |     30  | 
   571        | node4  |  node4   |  14000  | 
   572        | node5  |  node5   |  15000  | 
   573        | node6  |  node6   |  16000  | 
   574        | node8  |  node8   |     50  |       
   575        | node2  |  node7   |    180  |       
   576        | node3  |  node7   |    100  | 
   577        | party1 |  node1   |  111000 | 
   578        | party2 |  node2   |  222000 | 
   579  
   580      Then the network moves ahead "86401" blocks
   581  
   582      And the parties should have the following delegation balances for epoch 2:
   583        | party  | node id  | amount  |
   584        | node1  |  node1   |  11000  | 
   585        | node2  |  node2   |      2  |       
   586        | node3  |  node3   |     30  | 
   587        | node4  |  node4   |  14000  | 
   588        | node5  |  node5   |  15000  | 
   589        | node6  |  node6   |  16000  | 
   590        | node8  |  node8   |     50  |       
   591        | node2  |  node7   |     18  |       
   592        | node3  |  node7   |    100  | 
   593        | party1 |  node1   |  111000 | 
   594        | party2 |  node2   |  222000 | 
   595  
   596    Scenario: In presence of max delegation cap self-delegation gets priorities even if submitted later (0061-REWP-additional-tests)
   597  
   598      Given the parties deposit on asset's general account the following amount:
   599        | party  | asset  | amount |
   600        | party1 | VEGA   | 111000 |
   601        | party2 | VEGA   | 222000 |
   602  
   603      And the parties deposit on staking account the following amount:
   604        | party  | asset  | amount |
   605        | party1 | VEGA   | 111000 |  
   606        | party2 | VEGA   | 222000 |   
   607  
   608      Then the parties submit the following delegations:
   609        | party  | node id  | amount  |
   610        | party1 |  node1   |  111000 | 
   611        | party2 |  node2   |  222000 | 
   612  
   613      Then the network moves ahead "1" blocks
   614  
   615      Then the parties submit the following delegations:
   616        | party  | node id  | amount |
   617        | node1  |  node1   | 100000 | 
   618        | node2  |  node2   |  12000 |       
   619        | node3  |  node3   |  13000 | 
   620        | node4  |  node4   |  14000 | 
   621        | node5  |  node5   |  15000 | 
   622        | node6  |  node6   |  16000 | 
   623  
   624      Then the network moves ahead "1" blocks
   625  
   626      And the parties should have the following delegation balances for epoch 1:
   627        | party  | node id  | amount |
   628        | node1  |  node1   | 100000 | 
   629        | node2  |  node2   |  12000 |       
   630        | node3  |  node3   |  13000 | 
   631        | node4  |  node4   |  14000 | 
   632        | node5  |  node5   |  15000 | 
   633        | node6  |  node6   |  16000 | 
   634        | party1 |  node1   | 111000 | 
   635        | party2 |  node2   | 222000 | 
   636  
   637      And the parties deposit on asset's general account the following amount:
   638        | party                                                            | asset | amount |
   639        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
   640      And the parties submit the following one off transfers:
   641        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   642        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 50000  | 2021-09-10T00:00:01Z |
   643        
   644        #complete the initial epoch for delegation to take effect
   645        Then the network moves ahead "172802" blocks
   646  
   647        And the parties should have the following delegation balances for epoch 1:
   648          | party  | node id  | amount  |
   649          | node1  |  node1   |  100000 | 
   650          | node2  |  node2   |  12000  |       
   651          | node3  |  node3   |  13000  | 
   652          | node4  |  node4   |  14000  | 
   653          | node5  |  node5   |  15000  | 
   654          | node6  |  node6   |  16000  | 
   655          | party1 |  node1   |  111000 | 
   656          | party2 |  node2   |  222000 | 
   657  
   658        # totalStale = 503000
   659        # optStake = 503000/(max(5, 13/1.1)) = 42,561.5384615385
   660        # val score = max(0, (valStake - penaltyFlatAmt - penaltyDownAmt) / totalStake)
   661        # node1 score = (211000 - 168,438.4615384615 - 0)/ 503000 = 0.08462 
   662        # node2 score = (234000 - 191,438.4615384615 - 21,192.3076923075)/ 503000 = 0.04248
   663        # node3 score = (13000 - 0 - 0)/ 503000 = 0.02584  
   664        # node4 score = (14000 - 0 - 0)/ 503000 = 0.02783 
   665        # node5 score = (15000 - 0 - 0)/ 503000 = 0.02982
   666        # node6 score = (16000 - 0 - 0)/ 503000 = 0.03181
   667        Then the validators should have the following val scores for epoch 1:
   668          | node id | validator score  | normalised score |
   669          |  node1  |      0.08462     |     0.34906      |    
   670          |  node2  |      0.04248     |     0.17526      |
   671          |  node3  |      0.02584     |     0.10662      | 
   672          |  node4  |      0.02783     |     0.11482      | 
   673          |  node5  |      0.02982     |     0.12302      | 
   674          |  node6  |      0.03181     |     0.13122      | 
   675          |  node7  |      0.00000     |     0.00000      | 
   676          |  node8  |      0.00000     |     0.00000      | 
   677          |  node9  |      0.00000     |     0.00000      | 
   678          |  node10 |      0.00000     |     0.00000      | 
   679          |  node11 |      0.00000     |     0.00000      | 
   680          |  node12 |      0.00000     |     0.00000      | 
   681          |  node13 |      0.00000     |     0.00000      | 
   682  
   683        And the parties receive the following reward for epoch 1:
   684          | party  | asset | amount |
   685          | party1 | VEGA  | 8107   | 
   686          | party2 | VEGA  | 7340   | 
   687          | node1  | VEGA  | 9345   | 
   688          | node2  | VEGA  | 1422   | 
   689          | node3  | VEGA  | 5330   |  
   690          | node4  | VEGA  | 5740   | 
   691          | node5  | VEGA  | 6151   | 
   692          | node6  | VEGA  | 6561   | 
   693          | node7  | VEGA  | 0      | 
   694          | node8  | VEGA  | 0      | 
   695          | node10 | VEGA  | 0      | 
   696          | node11 | VEGA  | 0      | 
   697          | node12 | VEGA  | 0      | 
   698          | node13 | VEGA  | 0      | 
   699  
   700    Scenario: Validator subset can self-delegate as to push themselves below min validator stake due to max delegatable amount cap (0061-REWP-additional-tests)
   701  
   702      Then the parties submit the following delegations:
   703        | party  | node id  | amount |
   704        | node1  |  node1   |    100 | 
   705        | node2  |  node2   |    200 |       
   706        | node3  |  node3   |    300 | 
   707  
   708      Then the network moves ahead "1" blocks
   709  
   710      And the parties should have the following delegation balances for epoch 1:
   711        | party  | node id  | amount |
   712        | node1  |  node1   |    100 | 
   713        | node2  |  node2   |    200 |       
   714        | node3  |  node3   |    300 | 
   715        | node4  |  node4   |      0 | 
   716  
   717      And the parties deposit on asset's general account the following amount:
   718        | party                                                            | asset | amount |
   719        | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | VEGA  | 100000 |
   720      And the parties submit the following one off transfers:
   721        | id | from                                                             | from_account_type    | to                                                               |  to_account_type           | asset | amount | delivery_time        |
   722        | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_GLOBAL_REWARD | VEGA  | 100000 | 2021-08-26T00:00:01Z |
   723  
   724        #complete the initial epoch for delegation to take effect
   725        Then the network moves ahead "172802" blocks
   726  
   727        And the parties should have the following delegation balances for epoch 1:
   728          | party  | node id  | amount |
   729          | node1  |  node1   |   100  | 
   730          | node2  |  node2   |   200  |       
   731          | node3  |  node3   |   300  | 
   732          | node4  |  node4   |     0  | 
   733  
   734        And the parties receive the following reward for epoch 1:
   735          | party  | asset | amount |
   736          | node1  | VEGA  | 0      | 
   737          | node2  | VEGA  | 0      | 
   738          | node3  | VEGA  | 0      |  
   739          | node4  | VEGA  | 0      | 
   740          | node5  | VEGA  | 0      | 
   741          | node6  | VEGA  | 0      | 
   742          | node7  | VEGA  | 0      | 
   743          | node8  | VEGA  | 0      | 
   744          | node10 | VEGA  | 0      | 
   745          | node11 | VEGA  | 0      | 
   746          | node12 | VEGA  | 0      | 
   747          | node13 | VEGA  | 0      |