Skip to content

Commit cb1a90a

Browse files
authored
[static-ptbs] Set and ensure other PTB exec v2 flags are set when enabled (#24044)
## Description Enables the new gas charging changes for static PTB tests, and sets them when execution v2 is enabled, and makes sure they are enabled whenever execution v2 is set. Bottom commit are the logical changes, top commit are the snapshot changes. ## Test plan CI --- ## Release notes Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required. For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates. - [ ] Protocol: - [ ] Nodes (Validators and Full nodes): - [ ] gRPC: - [ ] JSON-RPC: - [ ] GraphQL: - [ ] CLI: - [ ] Rust SDK:
1 parent d8bb377 commit cb1a90a

File tree

10 files changed

+39
-18
lines changed

10 files changed

+39
-18
lines changed

crates/sui-adapter-transactional-tests/tests/programmable/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ task 4, lines 51-54:
3636
//> 1: MakeMoveVec<test::m::Obj>([NestedResult(0,0), NestedResult(0,1), NestedResult(0,2), NestedResult(0,3), NestedResult(0,4), NestedResult(0,5), NestedResult(0,6), NestedResult(0,7), NestedResult(0,8), NestedResult(0,9), NestedResult(0,10), NestedResult(0,11), NestedResult(0,12), NestedResult(0,13), NestedResult(0,14), NestedResult(0,15), NestedResult(0,16), NestedResult(0,17), NestedResult(0,18), NestedResult(0,19), NestedResult(0,20), NestedResult(0,21), NestedResult(0,22), NestedResult(0,23), NestedResult(0,24), NestedResult(0,25), NestedResult(0,26), NestedResult(0,27), NestedResult(0,28), NestedResult(0,29), NestedResult(0,30), NestedResult(0,31), NestedResult(0,32), NestedResult(0,33), NestedResult(0,34), NestedResult(0,35), NestedResult(0,36), NestedResult(0,37), NestedResult(0,38), NestedResult(0,39), NestedResult(0,40), NestedResult(0,41), NestedResult(0,42), NestedResult(0,43), NestedResult(0,44), NestedResult(0,45), NestedResult(0,46), NestedResult(0,47), NestedResult(0,48), NestedResult(0,49), NestedResult(0,50), NestedResult(0,51), NestedResult(0,52), NestedResult(0,53), NestedResult(0,54), NestedResult(0,55), NestedResult(0,56), NestedResult(0,57), NestedResult(0,58), NestedResult(0,59), NestedResult(0,60), NestedResult(0,61), NestedResult(0,62), NestedResult(0,63), NestedResult(0,64), NestedResult(0,65), NestedResult(0,66), NestedResult(0,67), NestedResult(0,68), NestedResult(0,69), NestedResult(0,70), NestedResult(0,71), NestedResult(0,72), NestedResult(0,73), NestedResult(0,74), NestedResult(0,75), NestedResult(0,76), NestedResult(0,77), NestedResult(0,78), NestedResult(0,79), NestedResult(0,80), NestedResult(0,81), NestedResult(0,82), NestedResult(0,83), NestedResult(0,84), NestedResult(0,85), NestedResult(0,86), NestedResult(0,87), NestedResult(0,88), NestedResult(0,89), NestedResult(0,90), NestedResult(0,91), NestedResult(0,92), NestedResult(0,93), NestedResult(0,94), NestedResult(0,95), NestedResult(0,96), NestedResult(0,97), NestedResult(0,98), NestedResult(0,99), NestedResult(0,100), NestedResult(0,101), NestedResult(0,102), NestedResult(0,103), NestedResult(0,104), NestedResult(0,105), NestedResult(0,106), NestedResult(0,107), NestedResult(0,108), NestedResult(0,109), NestedResult(0,110), NestedResult(0,111), NestedResult(0,112), NestedResult(0,113), NestedResult(0,114), NestedResult(0,115), NestedResult(0,116), NestedResult(0,117), NestedResult(0,118), NestedResult(0,119), NestedResult(0,120), NestedResult(0,121), NestedResult(0,122), NestedResult(0,123), NestedResult(0,124), NestedResult(0,125), NestedResult(0,126), NestedResult(0,127), NestedResult(0,128), NestedResult(0,129), NestedResult(0,130), NestedResult(0,131), NestedResult(0,132), NestedResult(0,133), NestedResult(0,134), NestedResult(0,135), NestedResult(0,136), NestedResult(0,137), NestedResult(0,138), NestedResult(0,139), NestedResult(0,140), NestedResult(0,141), NestedResult(0,142), NestedResult(0,143), NestedResult(0,144), NestedResult(0,145), NestedResult(0,146), NestedResult(0,147), NestedResult(0,148), NestedResult(0,149), NestedResult(0,150), NestedResult(0,151), NestedResult(0,152), NestedResult(0,153), NestedResult(0,154), NestedResult(0,155), NestedResult(0,156), NestedResult(0,157), NestedResult(0,158), NestedResult(0,159), NestedResult(0,160), NestedResult(0,161), NestedResult(0,162), NestedResult(0,163), NestedResult(0,164), NestedResult(0,165), NestedResult(0,166), NestedResult(0,167), NestedResult(0,168), NestedResult(0,169), NestedResult(0,170), NestedResult(0,171), NestedResult(0,172), NestedResult(0,173), NestedResult(0,174), NestedResult(0,175), NestedResult(0,176), NestedResult(0,177), NestedResult(0,178), NestedResult(0,179), NestedResult(0,180), NestedResult(0,181), NestedResult(0,182), NestedResult(0,183), NestedResult(0,184), NestedResult(0,185), NestedResult(0,186), NestedResult(0,187), NestedResult(0,188), NestedResult(0,189), NestedResult(0,190), NestedResult(0,191), NestedResult(0,192), NestedResult(0,193), NestedResult(0,194), NestedResult(0,195), NestedResult(0,196), NestedResult(0,197), NestedResult(0,198), NestedResult(0,199), NestedResult(0,200), NestedResult(0,201), NestedResult(0,202), NestedResult(0,203), NestedResult(0,204), NestedResult(0,205), NestedResult(0,206), NestedResult(0,207), NestedResult(0,208), NestedResult(0,209), NestedResult(0,210), NestedResult(0,211), NestedResult(0,212), NestedResult(0,213), NestedResult(0,214), NestedResult(0,215), NestedResult(0,216), NestedResult(0,217), NestedResult(0,218), NestedResult(0,219), NestedResult(0,220), NestedResult(0,221), NestedResult(0,222), NestedResult(0,223), NestedResult(0,224), NestedResult(0,225), NestedResult(0,226), NestedResult(0,227), NestedResult(0,228), NestedResult(0,229), NestedResult(0,230), NestedResult(0,231), NestedResult(0,232), NestedResult(0,233), NestedResult(0,234), NestedResult(0,235), NestedResult(0,236), NestedResult(0,237), NestedResult(0,238), NestedResult(0,239), NestedResult(0,240), NestedResult(0,241), NestedResult(0,242), NestedResult(0,243), NestedResult(0,244), NestedResult(0,245), NestedResult(0,246), NestedResult(0,247), NestedResult(0,248), NestedResult(0,249), NestedResult(0,250), NestedResult(0,251), NestedResult(0,252), NestedResult(0,253), NestedResult(0,254)]);
3737
//> 2: test::m::delete_objs(Result(1));
3838
mutated: object(0,1)
39-
gas summary: computation_cost: 2643000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
39+
gas summary: computation_cost: 2171000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ gas summary: computation_cost: 1000000, storage_cost: 988000, storage_rebate: 9
2222
task 4, lines 39-41:
2323
//# run Test::M1::delete_n_ids --args 2048 --gas-budget 100000000000000
2424
mutated: object(0,0)
25-
gas summary: computation_cost: 14000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
25+
gas summary: computation_cost: 13000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
2626

2727
task 5, lines 42-44:
2828
//# run Test::M1::delete_n_ids --args 2049 --gas-budget 100000000000000

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ task 3, lines 59-61:
1919
//# run Test::M1::emit_n_small_events --args 1024 --gas-budget 100000000000000 --summarize
2020
events: 50
2121
mutated: 1
22-
gas summary: computation_cost: 53000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
22+
gas summary: computation_cost: 54000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
2323

2424
task 4, lines 62-64:
2525
//# run Test::M1::emit_n_small_events --args 1025 --gas-budget 100000000000000
@@ -35,20 +35,19 @@ task 6, lines 68-70:
3535
//# run Test::M1::emit_event_with_size --args 200000 --gas-budget 100000000000000 --summarize
3636
events: 1
3737
mutated: 1
38-
gas summary: computation_cost: 1394000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
38+
gas summary: computation_cost: 1194000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
3939

4040
task 7, lines 71-73:
4141
//# run Test::M1::emit_event_with_size --args 256000 --gas-budget 100000000000000 --summarize
42-
events: 1
43-
mutated: 1
44-
gas summary: computation_cost: 1815000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
42+
Error: Transaction Effects Status: Move Primitive Runtime Error. Location: sui::event::emit (function index 0) at offset 0. Arithmetic error, stack overflow, max value depth, etc.
43+
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: sui, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))), source: Some(VMError { major_status: MEMORY_LIMIT_EXCEEDED, sub_status: Some(1), message: Some("Emitting event of size 256002 bytes. Limit is 256000 bytes."), exec_state: None, location: Module(ModuleId { address: sui, name: Identifier("event") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 0)] }), command: Some(0) } }
4544

4645
task 8, lines 74-76:
4746
//# run Test::M1::emit_event_with_size --args 256001 --gas-budget 100000000000000 --summarize
4847
Error: Transaction Effects Status: Move Primitive Runtime Error. Location: sui::event::emit (function index 0) at offset 0. Arithmetic error, stack overflow, max value depth, etc.
49-
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: sui, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))), source: Some(VMError { major_status: MEMORY_LIMIT_EXCEEDED, sub_status: Some(1), message: Some("Emitting event of size 256001 bytes. Limit is 256000 bytes."), exec_state: None, location: Module(ModuleId { address: sui, name: Identifier("event") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 0)] }), command: Some(0) } }
48+
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: sui, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))), source: Some(VMError { major_status: MEMORY_LIMIT_EXCEEDED, sub_status: Some(1), message: Some("Emitting event of size 256003 bytes. Limit is 256000 bytes."), exec_state: None, location: Module(ModuleId { address: sui, name: Identifier("event") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 0)] }), command: Some(0) } }
5049

5150
task 9, line 77:
5251
//# run Test::M1::emit_event_with_size --args 259000 --gas-budget 100000000000000
5352
Error: Transaction Effects Status: Move Primitive Runtime Error. Location: sui::event::emit (function index 0) at offset 0. Arithmetic error, stack overflow, max value depth, etc.
54-
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: sui, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))), source: Some(VMError { major_status: MEMORY_LIMIT_EXCEEDED, sub_status: Some(1), message: Some("Emitting event of size 259000 bytes. Limit is 256000 bytes."), exec_state: None, location: Module(ModuleId { address: sui, name: Identifier("event") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 0)] }), command: Some(0) } }
53+
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: sui, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))), source: Some(VMError { major_status: MEMORY_LIMIT_EXCEEDED, sub_status: Some(1), message: Some("Emitting event of size 259002 bytes. Limit is 256000 bytes."), exec_state: None, location: Module(ModuleId { address: sui, name: Identifier("event") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 0)] }), command: Some(0) } }

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { k
2222
task 4, lines 73-75:
2323
//# run Test::M1::emit_event_with_size --args 259000 --gas-budget 1000000000
2424
Error: Transaction Effects Status: Insufficient Gas.
25-
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: InsufficientGas, source: Some(VMError { major_status: OUT_OF_GAS, sub_status: None, message: None, exec_state: None, location: Module(ModuleId { address: Test, name: Identifier("M1") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 27)] }), command: Some(0) } }
25+
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: InsufficientGas, source: Some(VMError { major_status: OUT_OF_GAS, sub_status: None, message: None, exec_state: None, location: Module(ModuleId { address: Test, name: Identifier("M1") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 26)] }), command: Some(0) } }
2626

2727
task 5, line 76:
2828
//# run Test::M1::emit_n_events_with_size --args 3 256000 --gas-budget 1000000000 --summarize
2929
Error: Transaction Effects Status: Insufficient Gas.
30-
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: InsufficientGas, source: Some(VMError { major_status: OUT_OF_GAS, sub_status: None, message: None, exec_state: None, location: Module(ModuleId { address: Test, name: Identifier("M1") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 27)] }), command: Some(0) } }
30+
Execution Error: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: InsufficientGas, source: Some(VMError { major_status: OUT_OF_GAS, sub_status: None, message: None, exec_state: None, location: Module(ModuleId { address: Test, name: Identifier("M1") }), indices: [], offsets: [(FunctionDefinitionIndex(0), 35)] }), command: Some(0) } }

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ task 3, lines 82-84:
2121
//# run Test::M1::transfer_object_with_size --args 255999 --sender A --gas-budget 100000000000000
2222
created: object(3,0)
2323
mutated: object(0,0)
24-
gas summary: computation_cost: 1864000000, storage_cost: 1947553200, storage_rebate: 978120, non_refundable_storage_fee: 9880
24+
gas summary: computation_cost: 1582000000, storage_cost: 1947553200, storage_rebate: 978120, non_refundable_storage_fee: 9880
2525

2626
task 4, line 85:
2727
//# run Test::M1::transfer_object_with_size --args 256000 --sender A --gas-budget 100000000000000
2828
created: object(4,0)
2929
mutated: object(0,0)
30-
gas summary: computation_cost: 1864000000, storage_cost: 1947560800, storage_rebate: 978120, non_refundable_storage_fee: 9880
30+
gas summary: computation_cost: 1582000000, storage_cost: 1947560800, storage_rebate: 978120, non_refundable_storage_fee: 9880

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ gas summary: computation_cost: 1000000, storage_cost: 988000, storage_rebate: 9
2222
task 4, lines 40-42:
2323
//# run Test::M1::create_n_ids --args 2048 --gas-budget 100000000000000
2424
mutated: object(0,0)
25-
gas summary: computation_cost: 14000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
25+
gas summary: computation_cost: 13000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
2626

2727
task 5, lines 43-45:
2828
//# run Test::M1::create_n_ids --args 2049 --gas-budget 100000000000000

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ task 3, line 30:
2222
//# run a::m::add_n_items --sender A --args 1000 --gas-budget 1000000000000 --summarize
2323
created: 2000
2424
mutated: 1
25-
gas summary: computation_cost: 201000000, storage_cost: 2691388000, storage_rebate: 978120, non_refundable_storage_fee: 9880
25+
gas summary: computation_cost: 182000000, storage_cost: 2691388000, storage_rebate: 978120, non_refundable_storage_fee: 9880
2626

2727
task 4, line 32:
2828
//# run a::m::add_n_items --sender A --args 1025 --gas-budget 1000000000000

crates/sui-adapter-transactional-tests/tests/size_limits/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ gas summary: computation_cost: 1000000, storage_cost: 988000, storage_rebate: 9
2222
task 4, lines 38-40:
2323
//# run Test::M1::push_n_items --args 262144 --gas-budget 100000000000000
2424
mutated: object(0,0)
25-
gas summary: computation_cost: 4088000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
25+
gas summary: computation_cost: 3669000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
2626

2727
task 5, line 41:
2828
//# run Test::M1::push_n_items --args 262145 --gas-budget 100000000000000

crates/sui-adapter-transactional-tests/tests/upgrade/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ gas summary: computation_cost: 3000000, storage_cost: 988000, storage_rebate: 0
3232
task 6, line 177:
3333
//# run A2::m::generic_cases --args @A0 @A1
3434
mutated: object(0,1)
35-
gas summary: computation_cost: 246000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880
35+
gas summary: computation_cost: 196000000, storage_cost: 988000, storage_rebate: 978120, non_refundable_storage_fee: 9880

crates/sui-protocol-config/src/lib.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2277,7 +2277,21 @@ impl ProtocolConfig {
22772277
}
22782278

22792279
pub fn enable_ptb_execution_v2(&self) -> bool {
2280-
self.feature_flags.enable_ptb_execution_v2
2280+
let enabled = self.feature_flags.enable_ptb_execution_v2;
2281+
// PTB execution v2 requires gas model version > 10 and the translation charges to be set.
2282+
if enabled {
2283+
debug_assert!(self.translation_per_command_base_charge.is_some());
2284+
debug_assert!(self.translation_per_input_base_charge.is_some());
2285+
debug_assert!(self.translation_pure_input_per_byte_charge.is_some());
2286+
debug_assert!(self.translation_per_type_node_charge.is_some());
2287+
debug_assert!(self.translation_per_reference_node_charge.is_some());
2288+
debug_assert!(self.translation_metering_step_resolution.is_some());
2289+
debug_assert!(self.translation_per_linkage_entry_charge.is_some());
2290+
debug_assert!(self.feature_flags.abstract_size_in_object_runtime);
2291+
debug_assert!(self.feature_flags.object_runtime_charge_cache_load_gas);
2292+
debug_assert!(self.gas_model_version.is_some_and(|version| version > 10));
2293+
}
2294+
enabled
22812295
}
22822296

22832297
pub fn better_adapter_type_resolution_errors(&self) -> bool {
@@ -4467,6 +4481,9 @@ impl ProtocolConfig {
44674481
self.feature_flags.consensus_batched_block_sync = val;
44684482
}
44694483

4484+
/// NB: We are setting a number of feature flags and protocol config fields here to to
4485+
/// facilitate testing of PTB execution v2. These feature flags and config fields should be set
4486+
/// with or before enabling PTB execution v2 in a real protocol upgrade.
44704487
pub fn set_enable_ptb_execution_v2_for_testing(&mut self, val: bool) {
44714488
self.feature_flags.enable_ptb_execution_v2 = val;
44724489
// Remove this and set these fields when we move this to be set for a specific protocol
@@ -4479,6 +4496,11 @@ impl ProtocolConfig {
44794496
self.translation_per_reference_node_charge = Some(1);
44804497
self.translation_metering_step_resolution = Some(1000);
44814498
self.translation_per_linkage_entry_charge = Some(10);
4499+
if self.gas_model_version.is_some_and(|version| version <= 10) {
4500+
self.gas_model_version = Some(11);
4501+
}
4502+
self.feature_flags.abstract_size_in_object_runtime = true;
4503+
self.feature_flags.object_runtime_charge_cache_load_gas = true;
44824504
}
44834505
}
44844506

0 commit comments

Comments
 (0)