@@ -2987,6 +2987,151 @@ describe("BondingManager", () => {
29872987 assert . equal ( pool . totalStake . toString ( ) , lastActiveStake . toString ( ) )
29882988 } )
29892989
2990+ describe ( "should update next earningsPool totalStake" , ( ) => {
2991+ beforeEach ( async ( ) => {
2992+ // initialize next round earnings pool
2993+ await bondingManager . connect ( transcoder ) . reward ( )
2994+ } )
2995+
2996+ it ( "for active transcoder" , async ( ) => {
2997+ const startActiveStake = (
2998+ await bondingManager . getTranscoderEarningsPoolForRound (
2999+ transcoder . address ,
3000+ currentRound + 2
3001+ )
3002+ ) . totalStake
3003+
3004+ await bondingManager . connect ( delegator ) . unbond ( 1000 )
3005+
3006+ const endActiveStake = (
3007+ await bondingManager . getTranscoderEarningsPoolForRound (
3008+ transcoder . address ,
3009+ currentRound + 2
3010+ )
3011+ ) . totalStake
3012+ assert . equal (
3013+ startActiveStake . sub ( endActiveStake ) ,
3014+ 1000 ,
3015+ "wrong change in next round earnings pool totalStake"
3016+ )
3017+ } )
3018+
3019+ it ( "for deactivating transcoder" , async ( ) => {
3020+ // add 2 transcoders with much higher stake to kick the existing transcoder out of the active pool
3021+ for ( let i = 0 ; i < NUM_ACTIVE_TRANSCODERS ; i ++ ) {
3022+ const newTranscoder = signers [ 10 + i ]
3023+ await bondingManager
3024+ . connect ( newTranscoder )
3025+ . bond ( 10000 , newTranscoder . address )
3026+ await bondingManager
3027+ . connect ( newTranscoder )
3028+ . transcoder ( 50 * PERC_MULTIPLIER , 10 )
3029+ }
3030+ const { deactivationRound} =
3031+ await bondingManager . getTranscoder ( transcoder . address )
3032+ assert . equal (
3033+ deactivationRound . toNumber ( ) ,
3034+ currentRound + 2 ,
3035+ "transcoder should be deactivating"
3036+ )
3037+
3038+ const startActiveStake = (
3039+ await bondingManager . getTranscoderEarningsPoolForRound (
3040+ transcoder . address ,
3041+ currentRound + 2
3042+ )
3043+ ) . totalStake
3044+
3045+ await bondingManager . connect ( delegator ) . unbond ( 1000 )
3046+
3047+ const endActiveStake = (
3048+ await bondingManager . getTranscoderEarningsPoolForRound (
3049+ transcoder . address ,
3050+ currentRound + 2
3051+ )
3052+ ) . totalStake
3053+ assert . equal (
3054+ startActiveStake . sub ( endActiveStake ) ,
3055+ 1000 ,
3056+ "wrong change in next round earnings pool totalStake"
3057+ )
3058+ } )
3059+
3060+ it ( "for deactivating and unregistered transcoder" , async ( ) => {
3061+ // full unbond to resign transcoder from active pool
3062+ await bondingManager . connect ( transcoder ) . unbond ( 1000 ) // rewards are 0 so its still 1000 stake
3063+ assert . isTrue (
3064+ await bondingManager . isActiveTranscoder ( transcoder . address )
3065+ )
3066+ assert . isFalse (
3067+ await bondingManager . isRegisteredTranscoder (
3068+ transcoder . address
3069+ )
3070+ )
3071+
3072+ const startActiveStake = (
3073+ await bondingManager . getTranscoderEarningsPoolForRound (
3074+ transcoder . address ,
3075+ currentRound + 2
3076+ )
3077+ ) . totalStake
3078+
3079+ await bondingManager . connect ( delegator ) . unbond ( 1000 )
3080+
3081+ const endActiveStake = (
3082+ await bondingManager . getTranscoderEarningsPoolForRound (
3083+ transcoder . address ,
3084+ currentRound + 2
3085+ )
3086+ ) . totalStake
3087+ assert . equal (
3088+ startActiveStake . sub ( endActiveStake ) ,
3089+ 1000 ,
3090+ "wrong change in next round earnings pool totalStake"
3091+ )
3092+ } )
3093+
3094+ it ( "for activating transcoder" , async ( ) => {
3095+ // full unbond to resign transcoder from active pool
3096+ await bondingManager . connect ( transcoder ) . unbond ( 1000 ) // rewards are 0 so its still 1000 stake
3097+ await fixture . roundsManager . setMockUint256 (
3098+ functionSig ( "currentRound()" ) ,
3099+ currentRound + 2
3100+ )
3101+ // rebond so transcoder becomes registered but not active yet
3102+ await bondingManager
3103+ . connect ( transcoder )
3104+ . bond ( 1000 , transcoder . address )
3105+ assert . isFalse (
3106+ await bondingManager . isActiveTranscoder ( transcoder . address )
3107+ )
3108+ assert . isTrue (
3109+ await bondingManager . isRegisteredTranscoder (
3110+ transcoder . address
3111+ )
3112+ )
3113+
3114+ const { totalStake : startActiveStake } =
3115+ await bondingManager . getTranscoderEarningsPoolForRound (
3116+ transcoder . address ,
3117+ currentRound + 3
3118+ )
3119+
3120+ await bondingManager . connect ( delegator ) . unbond ( 1000 )
3121+
3122+ const { totalStake : endActiveStake } =
3123+ await bondingManager . getTranscoderEarningsPoolForRound (
3124+ transcoder . address ,
3125+ currentRound + 3
3126+ )
3127+ assert . equal (
3128+ startActiveStake . sub ( endActiveStake ) ,
3129+ 1000 ,
3130+ "wrong change in next round earnings pool totalStake"
3131+ )
3132+ } )
3133+ } )
3134+
29903135 it ( "should not update current earningsPool totalStake when lastActiveStakeUpdateRound = currentRound" , async ( ) => {
29913136 assert . equal (
29923137 (
@@ -5419,7 +5564,7 @@ describe("BondingManager", () => {
54195564
54205565 it ( "when caller is deactivating on the next round" , async ( ) => {
54215566 // add 2 transcoders with much higher stake to kick the existing transcoder out of the active pool
5422- for ( let i = 0 ; i < 2 ; i ++ ) {
5567+ for ( let i = 0 ; i < NUM_ACTIVE_TRANSCODERS ; i ++ ) {
54235568 const newTranscoder = signers [ 10 + i ]
54245569 await bondingManager
54255570 . connect ( newTranscoder )
0 commit comments