1
1
# All of these rate limits scale with the number of transactions so the aggregate amounts are higher
2
2
from __future__ import annotations
3
3
4
- import copy
5
4
import dataclasses
6
5
from typing import Optional , Union
7
6
@@ -33,7 +32,13 @@ class Unlimited:
33
32
max_size : int # Max size of each request
34
33
35
34
36
- aggregate_limit = RLSettings (False , 1000 , 100 * 1024 * 1024 * 1024 , 100 * 1024 * 1024 * 1024 )
35
+ # for the aggregate limit, not all fields of RLSettings are used. Only "frequency" and "max_total_size"
36
+ aggregate_limit = RLSettings (
37
+ aggregate_limit = False ,
38
+ frequency = 1000 ,
39
+ max_size = 0 ,
40
+ max_total_size = 100 * 1024 * 1024 ,
41
+ )
37
42
38
43
39
44
def get_rate_limits_to_use (
@@ -46,8 +51,10 @@ def get_rate_limits_to_use(
46
51
# Use V2 rate limits
47
52
if 2 in compose_rate_limits_cache :
48
53
return compose_rate_limits_cache [2 ], aggregate_limit
49
- composed = copy .copy (rate_limits [1 ])
50
- composed .update (rate_limits [2 ])
54
+ composed = {
55
+ ** rate_limits [1 ],
56
+ ** rate_limits [2 ],
57
+ }
51
58
compose_rate_limits_cache [2 ] = composed
52
59
return composed , aggregate_limit
53
60
else :
@@ -111,10 +118,14 @@ def get_rate_limits_to_use(
111
118
ProtocolMessageTypes .request_puzzle_solution : RLSettings (True , 1000 , 100 ),
112
119
ProtocolMessageTypes .respond_puzzle_solution : RLSettings (True , 1000 , 1024 * 1024 ),
113
120
ProtocolMessageTypes .reject_puzzle_solution : RLSettings (True , 1000 , 100 ),
121
+ ProtocolMessageTypes .none_response : RLSettings (False , 500 , 100 ),
114
122
ProtocolMessageTypes .new_peak_wallet : RLSettings (True , 200 , 300 ),
115
123
ProtocolMessageTypes .request_block_header : RLSettings (True , 500 , 100 ),
116
124
ProtocolMessageTypes .respond_block_header : RLSettings (True , 500 , 500 * 1024 ),
117
125
ProtocolMessageTypes .reject_header_request : RLSettings (True , 500 , 100 ),
126
+ ProtocolMessageTypes .request_block_headers : RLSettings (False , 5000 , 100 ),
127
+ ProtocolMessageTypes .reject_block_headers : RLSettings (False , 1000 , 100 ),
128
+ ProtocolMessageTypes .respond_block_headers : RLSettings (False , 5000 , 2 * 1024 * 1024 ),
118
129
ProtocolMessageTypes .request_removals : RLSettings (True , 500 , 50 * 1024 , 10 * 1024 * 1024 ),
119
130
ProtocolMessageTypes .respond_removals : RLSettings (True , 500 , 1024 * 1024 , 10 * 1024 * 1024 ),
120
131
ProtocolMessageTypes .reject_removals_request : RLSettings (True , 500 , 100 ),
@@ -160,6 +171,12 @@ def get_rate_limits_to_use(
160
171
ProtocolMessageTypes .respond_ses_hashes : RLSettings (True , 2000 , 1 * 1024 * 1024 ),
161
172
ProtocolMessageTypes .request_children : RLSettings (True , 2000 , 1024 * 1024 ),
162
173
ProtocolMessageTypes .respond_children : RLSettings (True , 2000 , 1 * 1024 * 1024 ),
174
+ ProtocolMessageTypes .error : RLSettings (False , 50000 , 100 ),
175
+ ProtocolMessageTypes .request_fee_estimates : RLSettings (True , 10 , 100 ),
176
+ ProtocolMessageTypes .respond_fee_estimates : RLSettings (True , 10 , 100 ),
177
+ ProtocolMessageTypes .solve : RLSettings (False , 120 , 1024 ),
178
+ ProtocolMessageTypes .solution_response : RLSettings (False , 120 , 1024 ),
179
+ ProtocolMessageTypes .partial_proofs : RLSettings (False , 120 , 3 * 1024 ),
163
180
},
164
181
2 : {
165
182
ProtocolMessageTypes .request_block_header : RLSettings (False , 500 , 100 ),
@@ -173,18 +190,13 @@ def get_rate_limits_to_use(
173
190
ProtocolMessageTypes .reject_additions_request : RLSettings (False , 500 , 100 ),
174
191
ProtocolMessageTypes .reject_header_blocks : RLSettings (False , 1000 , 100 ),
175
192
ProtocolMessageTypes .respond_header_blocks : RLSettings (False , 5000 , 2 * 1024 * 1024 ),
176
- ProtocolMessageTypes .request_block_headers : RLSettings (False , 5000 , 100 ),
177
- ProtocolMessageTypes .reject_block_headers : RLSettings (False , 1000 , 100 ),
178
- ProtocolMessageTypes .respond_block_headers : RLSettings (False , 5000 , 2 * 1024 * 1024 ),
179
193
ProtocolMessageTypes .request_ses_hashes : RLSettings (False , 2000 , 1 * 1024 * 1024 ),
180
194
ProtocolMessageTypes .respond_ses_hashes : RLSettings (False , 2000 , 1 * 1024 * 1024 ),
181
195
ProtocolMessageTypes .request_children : RLSettings (False , 2000 , 1024 * 1024 ),
182
196
ProtocolMessageTypes .respond_children : RLSettings (False , 2000 , 1 * 1024 * 1024 ),
183
197
ProtocolMessageTypes .request_puzzle_solution : RLSettings (False , 5000 , 100 ),
184
198
ProtocolMessageTypes .respond_puzzle_solution : RLSettings (False , 5000 , 1024 * 1024 ),
185
199
ProtocolMessageTypes .reject_puzzle_solution : RLSettings (False , 5000 , 100 ),
186
- ProtocolMessageTypes .none_response : RLSettings (False , 500 , 100 ),
187
- ProtocolMessageTypes .error : RLSettings (False , 50000 , 100 ),
188
200
# These will have a lower cap since they don't scale with high TPS (NON_TX_FREQ)
189
201
ProtocolMessageTypes .request_header_blocks : RLSettings (True , 5000 , 100 ),
190
202
},
0 commit comments