Skip to content

Commit 1c7008e

Browse files
committed
added max_execution_time to initialize_smart_contract
1 parent 19a27d5 commit 1c7008e

File tree

10 files changed

+88
-10
lines changed

10 files changed

+88
-10
lines changed

clarity/src/vm/clarity.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,12 +353,18 @@ pub trait TransactionConnection: ClarityConnection {
353353
contract_str: &str,
354354
sponsor: Option<PrincipalData>,
355355
abort_call_back: F,
356+
max_execution_time: Option<std::time::Duration>,
356357
) -> Result<(AssetMap, Vec<StacksTransactionEvent>), Error>
357358
where
358359
F: FnOnce(&AssetMap, &mut ClarityDatabase) -> bool,
359360
{
360361
let (_, asset_map, events, aborted) = self.with_abort_callback(
361362
|vm_env| {
363+
if let Some(max_execution_time_duration) = max_execution_time {
364+
vm_env
365+
.context
366+
.set_max_execution_time(max_execution_time_duration);
367+
}
362368
vm_env
363369
.initialize_contract_from_ast(
364370
identifier.clone(),

stackslib/src/chainstate/nakamoto/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4896,6 +4896,7 @@ impl NakamotoChainState {
48964896
&contract_content,
48974897
None,
48984898
|_, _| false,
4899+
None,
48994900
)
49004901
.unwrap();
49014902
clarity.save_analysis(&contract_id, &analysis).unwrap();

stackslib/src/chainstate/stacks/boot/contract_tests.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1780,7 +1780,15 @@ fn test_deploy_smart_contract(
17801780
block.as_transaction(|tx| {
17811781
let (ast, analysis) =
17821782
tx.analyze_smart_contract(contract_id, version, content, ASTRules::PrecheckSize)?;
1783-
tx.initialize_smart_contract(contract_id, version, &ast, content, None, |_, _| false)?;
1783+
tx.initialize_smart_contract(
1784+
contract_id,
1785+
version,
1786+
&ast,
1787+
content,
1788+
None,
1789+
|_, _| false,
1790+
None,
1791+
)?;
17841792
tx.save_analysis(contract_id, &analysis)?;
17851793
return Ok(());
17861794
})

stackslib/src/chainstate/stacks/db/transactions.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,6 +1282,7 @@ impl StacksChainState {
12821282
)
12831283
.expect("FATAL: error while evaluating post-conditions")
12841284
},
1285+
max_execution_time,
12851286
);
12861287

12871288
let mut total_cost = clarity_tx.cost_so_far();

stackslib/src/clarity_vm/clarity.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,7 @@ impl ClarityInstance {
387387
BOOT_CODE_COSTS,
388388
None,
389389
|_, _| false,
390+
None,
390391
)
391392
.unwrap();
392393
});
@@ -408,6 +409,7 @@ impl ClarityInstance {
408409
&*BOOT_CODE_COST_VOTING,
409410
None,
410411
|_, _| false,
412+
None,
411413
)
412414
.unwrap();
413415

@@ -433,6 +435,7 @@ impl ClarityInstance {
433435
&*BOOT_CODE_POX_TESTNET,
434436
None,
435437
|_, _| false,
438+
None,
436439
)
437440
.unwrap();
438441
});
@@ -484,6 +487,7 @@ impl ClarityInstance {
484487
BOOT_CODE_COSTS_2,
485488
None,
486489
|_, _| false,
490+
None,
487491
)
488492
.unwrap();
489493
});
@@ -505,6 +509,7 @@ impl ClarityInstance {
505509
BOOT_CODE_COSTS_3,
506510
None,
507511
|_, _| false,
512+
None,
508513
)
509514
.unwrap();
510515
});
@@ -526,6 +531,7 @@ impl ClarityInstance {
526531
&*POX_2_TESTNET_CODE,
527532
None,
528533
|_, _| false,
534+
None,
529535
)
530536
.unwrap();
531537
});
@@ -2051,6 +2057,7 @@ mod tests {
20512057
contract,
20522058
None,
20532059
|_, _| false,
2060+
None,
20542061
)
20552062
.unwrap();
20562063
conn.save_analysis(&contract_identifier, &ct_analysis)
@@ -2104,6 +2111,7 @@ mod tests {
21042111
contract,
21052112
None,
21062113
|_, _| false,
2114+
None,
21072115
)
21082116
.unwrap();
21092117
tx.save_analysis(&contract_identifier, &ct_analysis)
@@ -2132,6 +2140,7 @@ mod tests {
21322140
contract,
21332141
None,
21342142
|_, _| false,
2143+
None,
21352144
)
21362145
.unwrap();
21372146
tx.save_analysis(&contract_identifier, &ct_analysis)
@@ -2163,7 +2172,8 @@ mod tests {
21632172
&ct_ast,
21642173
contract,
21652174
None,
2166-
|_, _| false
2175+
|_, _| false,
2176+
None
21672177
)
21682178
.unwrap_err()
21692179
)
@@ -2216,6 +2226,7 @@ mod tests {
22162226
contract,
22172227
None,
22182228
|_, _| false,
2229+
None,
22192230
)
22202231
.unwrap();
22212232
conn.save_analysis(&contract_identifier, &ct_analysis)
@@ -2277,6 +2288,7 @@ mod tests {
22772288
contract,
22782289
None,
22792290
|_, _| false,
2291+
None,
22802292
)
22812293
.unwrap();
22822294
conn.save_analysis(&contract_identifier, &ct_analysis)
@@ -2369,6 +2381,7 @@ mod tests {
23692381
contract,
23702382
None,
23712383
|_, _| false,
2384+
None,
23722385
)
23732386
.unwrap();
23742387
conn.save_analysis(&contract_identifier, &ct_analysis)
@@ -2500,6 +2513,7 @@ mod tests {
25002513
contract,
25012514
None,
25022515
|_, _| false,
2516+
None,
25032517
)
25042518
.unwrap();
25052519
conn.save_analysis(&contract_identifier, &ct_analysis)
@@ -2891,6 +2905,7 @@ mod tests {
28912905
contract,
28922906
None,
28932907
|_, _| false,
2908+
None,
28942909
)
28952910
.unwrap();
28962911
conn.save_analysis(&contract_identifier, &ct_analysis)

stackslib/src/clarity_vm/tests/analysis_costs.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ fn setup_tracked_cost_test(
132132
contract_trait,
133133
None,
134134
|_, _| false,
135+
None,
135136
)
136137
.unwrap();
137138
conn.save_analysis(&trait_contract_id, &ct_analysis)
@@ -165,6 +166,7 @@ fn setup_tracked_cost_test(
165166
contract_other,
166167
None,
167168
|_, _| false,
169+
None,
168170
)
169171
.unwrap();
170172
conn.save_analysis(&other_contract_id, &ct_analysis)
@@ -240,6 +242,7 @@ fn test_tracked_costs(
240242
&contract_self,
241243
None,
242244
|_, _| false,
245+
None,
243246
)
244247
.unwrap();
245248
conn.save_analysis(&self_contract_id, &ct_analysis).unwrap();

0 commit comments

Comments
 (0)