Skip to content

Commit 039fc2c

Browse files
authored
apollo_consensus_orchestrator: add commitment fields to blob and DecisionReachedResponse (#10381)
1 parent 68cfec9 commit 039fc2c

File tree

7 files changed

+129
-1
lines changed

7 files changed

+129
-1
lines changed

crates/apollo_batcher/src/batcher.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ impl Batcher {
664664
.casm_hash_computation_data_proving_gas,
665665
compiled_class_hashes_for_migration: block_execution_artifacts
666666
.compiled_class_hashes_for_migration,
667+
parent_proposal_commitment: None,
667668
},
668669
})
669670
}

crates/apollo_batcher_types/src/batcher_types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ pub struct CentralObjects {
108108
pub casm_hash_computation_data_sierra_gas: CasmHashComputationData,
109109
pub casm_hash_computation_data_proving_gas: CasmHashComputationData,
110110
pub compiled_class_hashes_for_migration: CompiledClassHashesForMigration,
111+
pub parent_proposal_commitment: Option<ProposalCommitment>,
111112
}
112113

113114
#[derive(Debug, Serialize, Deserialize, PartialEq)]

crates/apollo_consensus_orchestrator/resources/central_blob.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1175,5 +1175,7 @@
11751175
"0x4",
11761176
"0x3"
11771177
]
1178-
]
1178+
],
1179+
"proposal_commitment": "0x80020000",
1180+
"parent_proposal_commitment": "0x1000200"
11791181
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
{
2+
"block_number": 5,
3+
"state_diff": {
4+
"address_to_class_hash": {
5+
"0x1": "0x1",
6+
"0x5": "0x5"
7+
},
8+
"nonces": {
9+
"L1": {
10+
"0x2": "0x2"
11+
}
12+
},
13+
"storage_updates": {
14+
"L1": {
15+
"0x3": {
16+
"0x3": "0x3"
17+
}
18+
}
19+
},
20+
"class_hash_to_compiled_class_hash": {
21+
"0x4": "0x4"
22+
},
23+
"block_info": {
24+
"block_number": 5,
25+
"block_timestamp": 6,
26+
"sequencer_address": "0x7",
27+
"l1_gas_price": {
28+
"price_in_wei": "0x8",
29+
"price_in_fri": "0x9"
30+
},
31+
"l1_data_gas_price": {
32+
"price_in_wei": "0xa",
33+
"price_in_fri": "0xb"
34+
},
35+
"l2_gas_price": {
36+
"price_in_wei": "0xc",
37+
"price_in_fri": "0xd"
38+
},
39+
"use_kzg_da": true,
40+
"starknet_version": "0.14.1"
41+
}
42+
},
43+
"compressed_state_diff": null,
44+
"bouncer_weights": {
45+
"l1_gas": 8,
46+
"message_segment_length": 9,
47+
"n_events": 2,
48+
"state_diff_size": 45,
49+
"sierra_gas": 10,
50+
"n_txs": 2,
51+
"proving_gas": 11
52+
},
53+
"fee_market_info": {
54+
"l2_gas_consumed": 150000,
55+
"next_l2_gas_price": "0x186a0"
56+
},
57+
"transactions": [],
58+
"execution_infos": [],
59+
"contract_classes": [],
60+
"compiled_classes": [],
61+
"casm_hash_computation_data_sierra_gas": {
62+
"class_hash_to_casm_hash_computation_gas": {
63+
"0x3a59046762823dc87385eb5ac8a21f3f5bfe4274151c6eb633737656c209056": 1
64+
},
65+
"gas_without_casm_hash_computation": 3
66+
},
67+
"casm_hash_computation_data_proving_gas": {
68+
"class_hash_to_casm_hash_computation_gas": {
69+
"0x3a59046762823dc87385eb5ac8a21f3f5bfe4274151c6eb633737656c209056": 1
70+
},
71+
"gas_without_casm_hash_computation": 3
72+
},
73+
"compiled_class_hashes_for_migration": [],
74+
"proposal_commitment": "0x80020000",
75+
"parent_proposal_commitment": null
76+
}

crates/apollo_consensus_orchestrator/src/cende/central_objects_test.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use apollo_batcher::cende_client_types::{
1313
TransactionExecutionStatus,
1414
};
1515
use apollo_class_manager_types::MockClassManagerClient;
16+
use apollo_consensus::types::ProposalCommitment;
1617
use apollo_infra_utils::test_utils::assert_json_eq;
1718
use apollo_sizeof::SizeOf;
1819
use apollo_starknet_client::reader::objects::state::StateDiff;
@@ -166,6 +167,8 @@ pub const CENTRAL_BLOB_JSON_PATH: &str = "central_blob.json";
166167
pub const CENTRAL_CASM_HASH_COMPUTATION_DATA_JSON_PATH: &str =
167168
"central_casm_hash_computation_data.json";
168169
pub const CENTRAL_PRECONFIRMED_BLOCK_JSON_PATH: &str = "central_preconfirmed_block.json";
170+
pub const CENTRAL_BLOB_EMPTY_OR_NONE_FIELDS_JSON_PATH: &str =
171+
"central_blob_empty_or_none_fields.json";
169172

170173
fn resource_bounds() -> AllResourceBounds {
171174
AllResourceBounds {
@@ -667,6 +670,36 @@ fn central_blob() -> AerospikeBlob {
667670
casm_hash_computation_data_sierra_gas: central_casm_hash_computation_data(),
668671
casm_hash_computation_data_proving_gas: central_casm_hash_computation_data(),
669672
compiled_class_hashes_for_migration: central_compiled_class_hashes_for_migration(),
673+
proposal_commitment: ProposalCommitment(felt!("0x80020000")),
674+
parent_proposal_commitment: Some(ProposalCommitment(felt!("0x1000200"))),
675+
};
676+
677+
// This is to make the function sync (not async) so that it can be used as a case in the
678+
// serialize_central_objects test.
679+
let runtime = tokio::runtime::Runtime::new().unwrap();
680+
runtime
681+
.block_on(AerospikeBlob::from_blob_parameters_and_class_manager(
682+
blob_parameters,
683+
Arc::new(mock_class_manager),
684+
))
685+
.unwrap()
686+
}
687+
688+
fn central_blob_with_empty_or_none_fields() -> AerospikeBlob {
689+
let mock_class_manager = MockClassManagerClient::new();
690+
let blob_parameters = BlobParameters {
691+
block_info: block_info(),
692+
state_diff: thin_state_diff(),
693+
compressed_state_diff: None,
694+
transactions: vec![],
695+
bouncer_weights: central_bouncer_weights(),
696+
fee_market_info: central_fee_market_info(),
697+
execution_infos: vec![],
698+
casm_hash_computation_data_sierra_gas: central_casm_hash_computation_data(),
699+
casm_hash_computation_data_proving_gas: central_casm_hash_computation_data(),
700+
compiled_class_hashes_for_migration: vec![],
701+
proposal_commitment: ProposalCommitment(felt!("0x80020000")),
702+
parent_proposal_commitment: None,
670703
};
671704

672705
// This is to make the function sync (not async) so that it can be used as a case in the
@@ -974,6 +1007,10 @@ fn starknet_preconfiremd_block() -> CendePreconfirmedBlock {
9741007
CENTRAL_CASM_HASH_COMPUTATION_DATA_JSON_PATH
9751008
)]
9761009
#[case::central_blob(central_blob(), CENTRAL_BLOB_JSON_PATH)]
1010+
#[case::empty_or_none_fields(
1011+
central_blob_with_empty_or_none_fields(),
1012+
CENTRAL_BLOB_EMPTY_OR_NONE_FIELDS_JSON_PATH
1013+
)]
9771014
#[case::starknet_preconfirmed_block(
9781015
starknet_preconfiremd_block(),
9791016
CENTRAL_PRECONFIRMED_BLOCK_JSON_PATH

crates/apollo_consensus_orchestrator/src/cende/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use std::sync::Arc;
66

77
use apollo_class_manager_types::{ClassManagerClientError, SharedClassManagerClient};
88
use apollo_config::secrets::Sensitive;
9+
use apollo_consensus::types::ProposalCommitment;
910
use apollo_consensus_orchestrator_config::config::CendeConfig;
1011
use apollo_proc_macros::sequencer_latency_histogram;
1112
use async_trait::async_trait;
@@ -82,6 +83,8 @@ pub(crate) struct AerospikeBlob {
8283
casm_hash_computation_data_sierra_gas: CentralCasmHashComputationData,
8384
casm_hash_computation_data_proving_gas: CentralCasmHashComputationData,
8485
compiled_class_hashes_for_migration: CentralCompiledClassHashesForMigration,
86+
proposal_commitment: ProposalCommitment,
87+
parent_proposal_commitment: Option<ProposalCommitment>,
8588
}
8689

8790
#[cfg_attr(test, automock)]
@@ -260,6 +263,8 @@ pub struct BlobParameters {
260263
// serialized in the correct format from the batcher.
261264
pub(crate) execution_infos: Vec<TransactionExecutionInfo>,
262265
pub(crate) compiled_class_hashes_for_migration: CompiledClassHashesForMigration,
266+
pub(crate) proposal_commitment: ProposalCommitment,
267+
pub(crate) parent_proposal_commitment: Option<ProposalCommitment>,
263268
}
264269

265270
impl AerospikeBlob {
@@ -304,6 +309,8 @@ impl AerospikeBlob {
304309
.casm_hash_computation_data_proving_gas,
305310
compiled_class_hashes_for_migration: blob_parameters
306311
.compiled_class_hashes_for_migration,
312+
proposal_commitment: blob_parameters.proposal_commitment,
313+
parent_proposal_commitment: blob_parameters.parent_proposal_commitment,
307314
})
308315
}
309316
}

crates/apollo_consensus_orchestrator/src/sequencer_consensus_context.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,10 @@ impl ConsensusContext for SequencerConsensusContext {
614614
},
615615
compiled_class_hashes_for_migration: central_objects
616616
.compiled_class_hashes_for_migration,
617+
proposal_commitment: block,
618+
parent_proposal_commitment: central_objects
619+
.parent_proposal_commitment
620+
.map(|commitment| ProposalCommitment(commitment.state_diff_commitment.0.0)),
617621
})
618622
.await
619623
.inspect_err(|e| {

0 commit comments

Comments
 (0)