Skip to content

Commit 5990afd

Browse files
committed
fix: ensure uintN types are the correct width in tuples
1 parent 00dc431 commit 5990afd

File tree

13 files changed

+16974
-15890
lines changed

13 files changed

+16974
-15890
lines changed

examples/reti/artifacts/ValidatorRegistry.approval.teal

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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
33
bytecblock 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

examples/reti/artifacts/ValidatorRegistry.arc32.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)