11#pragma version 10
2- intcblock 0 1 8 24 32 18 268 6 242 3 2 10 252 260 700 100000 900 40 200 TMPL_nfdRegistryAppId 4 72 192 244 1000000 4096 5 226 300 432 892 1000 28500 50000 11 80 145 153 209
2+ intcblock 0 1 8 24 32 18 268 6 242 3 2 10 252 260 700 100000 900 40 200 TMPL_nfdRegistryAppId 4 72 192 244 1000000 4096 5 16 226 300 432 892 1000 28500 50000 11 80 145 153 209
33bytecblock 0x76 0x 0x151f7c75 0x737073 0x7374616b6564 0x00 0x706f6f6c54656d706c617465417070726f76616c4279746573 0x6e756d5374616b657273 0x0a8101 0x692e6f776e65722e61 0x0000000000000000 0x696e6974 0x6e756d56 0x69735f76616c69645f6e66645f6170706964 0x63f3f28b
44
55// This TEAL was generated by TEALScript v0.107.0
@@ -242,7 +242,7 @@ getMbrAmounts:
242242 callsub costForBoxStorage
243243 itob
244244 intc 9 // 3
245- intc 34 // 11
245+ intc 35 // 11
246246 intc 0 // 0
247247 dupn 2
248248 intc 9 // 3
@@ -487,7 +487,7 @@ getPools:
487487 // examples/reti/validatorRegistry.algo.ts:319
488488 // poolSet = clone(this.validatorList(validatorId).value.pools)
489489 intc 6 // headOffset
490- intc 29 // 432
490+ intc 30 // 432
491491 bytec 0 // "v"
492492 frame_dig -1 // validatorId: ValidatorIdType
493493 itob
@@ -1464,7 +1464,7 @@ changeValidatorSunsetInfo:
14641464
14651465 // examples/reti/validatorRegistry.algo.ts:499
14661466 // this.validatorList(validatorId).value.config.sunsettingOn = sunsettingOn
1467- intc 27 // 226
1467+ intc 28 // 226
14681468 frame_dig -2 // sunsettingOn: uint64
14691469 itob
14701470 bytec 0 // "v"
@@ -1747,7 +1747,7 @@ changeValidatorRewardInfo:
17471747
17481748 // examples/reti/validatorRegistry.algo.ts:561
17491749 // this.validatorList(validatorId).value.config.entryGatingType = EntryGatingType
1750- intc 35 // 80
1750+ intc 36 // 80
17511751 frame_dig -2 // EntryGatingType: uint8
17521752 itob
17531753 extract 7 1
@@ -1782,7 +1782,7 @@ changeValidatorRewardInfo:
17821782
17831783 // examples/reti/validatorRegistry.algo.ts:564
17841784 // this.validatorList(validatorId).value.config.gatingAssetMinBalance = GatingAssetMinBalance
1785- intc 36 // 145
1785+ intc 37 // 145
17861786 frame_dig -5 // GatingAssetMinBalance: uint64
17871787 itob
17881788 bytec 0 // "v"
@@ -2014,7 +2014,7 @@ addPool:
20142014
20152015 // examples/reti/validatorRegistry.algo.ts:606
20162016 // globalNumUint: StakingPool.schema.global.numUint
2017- intc 34 // 11
2017+ intc 35 // 11
20182018 itxn_field GlobalNumUint
20192019
20202020 // examples/reti/validatorRegistry.algo.ts:607
@@ -2047,7 +2047,7 @@ addPool:
20472047 frame_dig 0 // numPools: uint64
20482048 itob
20492049 itxn_field ApplicationArgs
2050- intc 38 // 209
2050+ intc 39 // 209
20512051 intc 2 // 8
20522052 bytec 0 // "v"
20532053 frame_dig -2 // validatorId: ValidatorIdType
@@ -2071,6 +2071,13 @@ addPool:
20712071 intc 8 // 242
20722072 frame_dig 0 // numPools: uint64
20732073 itob
2074+ dup
2075+ bitlen
2076+ intc 27 // 16
2077+ <=
2078+
2079+ // this.validatorList(validatorId).value.state.numPools overflowed 16 bits
2080+ assert
20742081 extract 6 2
20752082 bytec 0 // "v"
20762083 frame_dig -2 // validatorId: ValidatorIdType
@@ -2193,7 +2200,7 @@ addStake:
21932200 // *if8_condition
21942201 // examples/reti/validatorRegistry.algo.ts:648
21952202 // this.validatorList(validatorId).value.config.sunsettingOn > 0
2196- intc 27 // 226
2203+ intc 28 // 226
21972204 intc 2 // 8
21982205 bytec 0 // "v"
21992206 frame_dig -2 // validatorId: ValidatorIdType
@@ -2212,7 +2219,7 @@ addStake:
22122219 // this.validatorList(validatorId).value.config.sunsettingOn < globals.latestTimestamp,
22132220 // "can't stake with a validator that is past its sunsetting time"
22142221 // )
2215- intc 27 // 226
2222+ intc 28 // 226
22162223 intc 2 // 8
22172224 bytec 0 // "v"
22182225 frame_dig -2 // validatorId: ValidatorIdType
@@ -2505,7 +2512,7 @@ setTokenPayoutRatio:
25052512
25062513 // examples/reti/validatorRegistry.algo.ts:745
25072514 // lastPayoutUpdate = this.validatorList(validatorId).value.tokenPayoutRatio.updatedForPayout
2508- intc 30 // 892
2515+ intc 31 // 892
25092516 intc 2 // 8
25102517 bytec 0 // "v"
25112518 frame_dig -1 // validatorId: ValidatorIdType
@@ -2604,7 +2611,7 @@ setTokenPayoutRatio:
26042611*if12_end:
26052612 // examples/reti/validatorRegistry.algo.ts:758
26062613 // this.validatorList(validatorId).value.tokenPayoutRatio.updatedForPayout = curRound
2607- intc 30 // 892
2614+ intc 31 // 892
26082615 frame_dig 1 // curRound: uint64
26092616 itob
26102617 bytec 0 // "v"
@@ -2970,7 +2977,7 @@ stakeRemoved:
29702977 // examples/reti/validatorRegistry.algo.ts:836
29712978 // globals.opcodeBudget < 300
29722979 global OpcodeBudget
2973- intc 28 // 300
2980+ intc 29 // 300
29742981 <
29752982 bz *if15_end
29762983
@@ -3105,7 +3112,7 @@ stakeRemoved:
31053112 // *if16_consequent
31063113 // examples/reti/validatorRegistry.algo.ts:851
31073114 // rewardTokenID = this.validatorList(poolKey.id).value.config.rewardTokenId
3108- intc 37 // 153
3115+ intc 38 // 153
31093116 intc 2 // 8
31103117 bytec 0 // "v"
31113118 frame_dig -1 // poolKey: ValidatorPoolKey
@@ -3280,6 +3287,13 @@ stakeRemoved:
32803287 intc 1 // 1
32813288 -
32823289 itob
3290+ dup
3291+ bitlen
3292+ intc 27 // 16
3293+ <=
3294+
3295+ // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits
3296+ assert
32833297 extract 6 2
32843298 bytec 0 // "v"
32853299 frame_dig -1 // poolKey: ValidatorPoolKey
@@ -3499,7 +3513,7 @@ findPoolForStaker:
34993513 // examples/reti/validatorRegistry.algo.ts:946
35003514 // globals.opcodeBudget < 300
35013515 global OpcodeBudget
3502- intc 28 // 300
3516+ intc 29 // 300
35033517 <
35043518 bz *if22_end
35053519
@@ -3643,7 +3657,7 @@ findPoolForStaker:
36433657 // 'must stake at least the minimum for this pool'
36443658 // )
36453659 frame_dig -3 // amountToStake: uint64
3646- intc 38 // 209
3660+ intc 39 // 209
36473661 intc 2 // 8
36483662 bytec 0 // "v"
36493663 frame_dig -1 // validatorId: ValidatorIdType
@@ -3660,7 +3674,7 @@ findPoolForStaker:
36603674 // examples/reti/validatorRegistry.algo.ts:973
36613675 // pools = clone(this.validatorList(validatorId).value.pools)
36623676 intc 6 // headOffset
3663- intc 29 // 432
3677+ intc 30 // 432
36643678 bytec 0 // "v"
36653679 frame_dig -1 // validatorId: ValidatorIdType
36663680 itob
@@ -4091,7 +4105,7 @@ emptyTokenRewards:
40914105
40924106 // examples/reti/validatorRegistry.algo.ts:1047
40934107 // rewardTokenId = this.validatorList(validatorId).value.config.rewardTokenId
4094- intc 37 // 153
4108+ intc 38 // 153
40954109 intc 2 // 8
40964110 bytec 0 // "v"
40974111 frame_dig -1 // validatorId: ValidatorIdType
@@ -4791,6 +4805,13 @@ callPoolAddStake:
47914805 +
47924806 frame_dig 1 // poolNumStakers: uint64
47934807 itob
4808+ dup
4809+ bitlen
4810+ intc 27 // 16
4811+ <=
4812+
4813+ // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits
4814+ assert
47944815 extract 6 2
47954816 bytec 0 // "v"
47964817 frame_dig -2 // poolKey: ValidatorPoolKey
@@ -5392,7 +5413,7 @@ doesStakerMeetGating:
53925413
53935414 // examples/reti/validatorRegistry.algo.ts:1365
53945415 // type = this.validatorList(validatorId).value.config.entryGatingType
5395- intc 35 // 80
5416+ intc 36 // 80
53965417 intc 1 // 1
53975418 bytec 0 // "v"
53985419 frame_dig -1 // validatorId: ValidatorIdType
@@ -5470,7 +5491,7 @@ doesStakerMeetGating:
54705491
54715492 // examples/reti/validatorRegistry.algo.ts:1379
54725493 // balRequired = this.validatorList(validatorId).value.config.gatingAssetMinBalance
5473- intc 36 // 145
5494+ intc 37 // 145
54745495 intc 2 // 8
54755496 bytec 0 // "v"
54765497 frame_dig -1 // validatorId: ValidatorIdType
@@ -5923,7 +5944,7 @@ algoSaturationLevel:
59235944 pushint 100
59245945 mulw
59255946 intc 0 // 0
5926- intc 31 // 1000
5947+ intc 32 // 1000
59275948 divmodw
59285949 pop
59295950 pop
@@ -5958,7 +5979,7 @@ maxAllowedStake:
59585979 pushint 150
59595980 mulw
59605981 intc 0 // 0
5961- intc 31 // 1000
5982+ intc 32 // 1000
59625983 divmodw
59635984 pop
59645985 pop
@@ -6035,7 +6056,7 @@ minBalanceForAccount:
60356056 // minBal += localInts * SSC_VALUE_UINT
60366057 frame_dig 0 // minBal: uint64
60376058 frame_dig -4 // localInts: uint64
6038- intc 32 // 28500
6059+ intc 33 // 28500
60396060 *
60406061 +
60416062 frame_bury 0 // minBal: uint64
@@ -6044,7 +6065,7 @@ minBalanceForAccount:
60446065 // minBal += globalInts * SSC_VALUE_UINT
60456066 frame_dig 0 // minBal: uint64
60466067 frame_dig -6 // globalInts: uint64
6047- intc 32 // 28500
6068+ intc 33 // 28500
60486069 *
60496070 +
60506071 frame_bury 0 // minBal: uint64
@@ -6053,7 +6074,7 @@ minBalanceForAccount:
60536074 // minBal += localBytes * SSC_VALUE_BYTES
60546075 frame_dig 0 // minBal: uint64
60556076 frame_dig -5 // localBytes: uint64
6056- intc 33 // 50000
6077+ intc 34 // 50000
60576078 *
60586079 +
60596080 frame_bury 0 // minBal: uint64
@@ -6062,7 +6083,7 @@ minBalanceForAccount:
60626083 // minBal += globalBytes * SSC_VALUE_BYTES
60636084 frame_dig 0 // minBal: uint64
60646085 frame_dig -7 // globalBytes: uint64
6065- intc 33 // 50000
6086+ intc 34 // 50000
60666087 *
60676088 +
60686089 frame_bury 0 // minBal: uint64
0 commit comments