mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-04 23:03:08 +00:00
Fix genesis state trie root when calling prove_root (#1271)
* Fix genesis state trie root in some tests * Just do it in tests calling prove_block
This commit is contained in:
parent
cd36e96cb8
commit
3ac0c4ae18
@ -644,10 +644,18 @@ where
|
||||
rhs: &ExtraBlockDataTarget,
|
||||
) {
|
||||
// Connect genesis state root values.
|
||||
for (&limb0, &limb1) in pvs.genesis_state_root.iter().zip(&rhs.genesis_state_root) {
|
||||
for (&limb0, &limb1) in pvs
|
||||
.genesis_state_trie_root
|
||||
.iter()
|
||||
.zip(&rhs.genesis_state_trie_root)
|
||||
{
|
||||
builder.connect(limb0, limb1);
|
||||
}
|
||||
for (&limb0, &limb1) in pvs.genesis_state_root.iter().zip(&lhs.genesis_state_root) {
|
||||
for (&limb0, &limb1) in pvs
|
||||
.genesis_state_trie_root
|
||||
.iter()
|
||||
.zip(&lhs.genesis_state_trie_root)
|
||||
{
|
||||
builder.connect(limb0, limb1);
|
||||
}
|
||||
|
||||
@ -793,9 +801,9 @@ where
|
||||
// Between blocks, the genesis state trie remains unchanged.
|
||||
for (&limb0, limb1) in lhs
|
||||
.extra_block_data
|
||||
.genesis_state_root
|
||||
.genesis_state_trie_root
|
||||
.iter()
|
||||
.zip(rhs.extra_block_data.genesis_state_root)
|
||||
.zip(rhs.extra_block_data.genesis_state_trie_root)
|
||||
{
|
||||
builder.connect(limb0, limb1);
|
||||
}
|
||||
@ -834,7 +842,7 @@ where
|
||||
.trie_roots_before
|
||||
.state_root
|
||||
.iter()
|
||||
.zip(x.extra_block_data.genesis_state_root)
|
||||
.zip(x.extra_block_data.genesis_state_trie_root)
|
||||
{
|
||||
let mut constr = builder.sub(limb0, limb1);
|
||||
constr = builder.mul(has_not_parent_block, constr);
|
||||
@ -1037,7 +1045,7 @@ where
|
||||
+ BlockHashesTarget::BLOCK_HASHES_SIZE
|
||||
+ 8;
|
||||
for (key, &value) in genesis_state_trie_keys.zip_eq(&h256_limbs::<F>(
|
||||
public_values.extra_block_data.genesis_state_root,
|
||||
public_values.extra_block_data.genesis_state_trie_root,
|
||||
)) {
|
||||
nonzero_pis.insert(key, value);
|
||||
}
|
||||
|
||||
@ -261,7 +261,7 @@ pub fn generate_traces<F: RichField + Extendable<D>, const D: usize>(
|
||||
let txn_number_after = read_metadata(GlobalMetadata::TxnNumberAfter);
|
||||
|
||||
let extra_block_data = ExtraBlockData {
|
||||
genesis_state_root: inputs.genesis_state_trie_root,
|
||||
genesis_state_trie_root: inputs.genesis_state_trie_root,
|
||||
txn_number_before: inputs.txn_number_before,
|
||||
txn_number_after,
|
||||
gas_used_before: inputs.gas_used_before,
|
||||
|
||||
@ -109,7 +109,7 @@ fn observe_extra_block_data<
|
||||
challenger: &mut Challenger<F, C::Hasher>,
|
||||
extra_data: &ExtraBlockData,
|
||||
) -> Result<(), ProgramError> {
|
||||
challenger.observe_elements(&h256_limbs(extra_data.genesis_state_root));
|
||||
challenger.observe_elements(&h256_limbs(extra_data.genesis_state_trie_root));
|
||||
challenger.observe_element(u256_to_u32(extra_data.txn_number_before)?);
|
||||
challenger.observe_element(u256_to_u32(extra_data.txn_number_after)?);
|
||||
let gas_used_before = u256_to_u64(extra_data.gas_used_before)?;
|
||||
@ -138,7 +138,7 @@ fn observe_extra_block_data_target<
|
||||
) where
|
||||
C::Hasher: AlgebraicHasher<F>,
|
||||
{
|
||||
challenger.observe_elements(&extra_data.genesis_state_root);
|
||||
challenger.observe_elements(&extra_data.genesis_state_trie_root);
|
||||
challenger.observe_element(extra_data.txn_number_before);
|
||||
challenger.observe_element(extra_data.txn_number_after);
|
||||
challenger.observe_elements(&extra_data.gas_used_before);
|
||||
|
||||
@ -125,7 +125,7 @@ pub struct BlockMetadata {
|
||||
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
|
||||
pub struct ExtraBlockData {
|
||||
/// The state trie digest of the genesis block.
|
||||
pub genesis_state_root: H256,
|
||||
pub genesis_state_trie_root: H256,
|
||||
/// The transaction count prior execution of the local state transition, starting
|
||||
/// at 0 for the initial transaction of a block.
|
||||
pub txn_number_before: U256,
|
||||
@ -210,7 +210,7 @@ impl PublicValuesTarget {
|
||||
buffer.write_target_array(&cur_hash)?;
|
||||
|
||||
let ExtraBlockDataTarget {
|
||||
genesis_state_root,
|
||||
genesis_state_trie_root: genesis_state_root,
|
||||
txn_number_before,
|
||||
txn_number_after,
|
||||
gas_used_before,
|
||||
@ -261,7 +261,7 @@ impl PublicValuesTarget {
|
||||
};
|
||||
|
||||
let extra_block_data = ExtraBlockDataTarget {
|
||||
genesis_state_root: buffer.read_target_array()?,
|
||||
genesis_state_trie_root: buffer.read_target_array()?,
|
||||
txn_number_before: buffer.read_target()?,
|
||||
txn_number_after: buffer.read_target()?,
|
||||
gas_used_before: buffer.read_target_array()?,
|
||||
@ -571,7 +571,7 @@ impl BlockHashesTarget {
|
||||
|
||||
#[derive(Eq, PartialEq, Debug, Copy, Clone)]
|
||||
pub struct ExtraBlockDataTarget {
|
||||
pub genesis_state_root: [Target; 8],
|
||||
pub genesis_state_trie_root: [Target; 8],
|
||||
pub txn_number_before: Target,
|
||||
pub txn_number_after: Target,
|
||||
pub gas_used_before: [Target; 2],
|
||||
@ -584,7 +584,7 @@ impl ExtraBlockDataTarget {
|
||||
const SIZE: usize = 142;
|
||||
|
||||
pub fn from_public_inputs(pis: &[Target]) -> Self {
|
||||
let genesis_state_root = pis[0..8].try_into().unwrap();
|
||||
let genesis_state_trie_root = pis[0..8].try_into().unwrap();
|
||||
let txn_number_before = pis[8];
|
||||
let txn_number_after = pis[9];
|
||||
let gas_used_before = pis[10..12].try_into().unwrap();
|
||||
@ -593,7 +593,7 @@ impl ExtraBlockDataTarget {
|
||||
let block_bloom_after = pis[78..142].try_into().unwrap();
|
||||
|
||||
Self {
|
||||
genesis_state_root,
|
||||
genesis_state_trie_root,
|
||||
txn_number_before,
|
||||
txn_number_after,
|
||||
gas_used_before,
|
||||
@ -610,11 +610,11 @@ impl ExtraBlockDataTarget {
|
||||
ed1: Self,
|
||||
) -> Self {
|
||||
Self {
|
||||
genesis_state_root: core::array::from_fn(|i| {
|
||||
genesis_state_trie_root: core::array::from_fn(|i| {
|
||||
builder.select(
|
||||
condition,
|
||||
ed0.genesis_state_root[i],
|
||||
ed1.genesis_state_root[i],
|
||||
ed0.genesis_state_trie_root[i],
|
||||
ed1.genesis_state_trie_root[i],
|
||||
)
|
||||
}),
|
||||
txn_number_before: builder.select(
|
||||
@ -652,7 +652,10 @@ impl ExtraBlockDataTarget {
|
||||
ed1: Self,
|
||||
) {
|
||||
for i in 0..8 {
|
||||
builder.connect(ed0.genesis_state_root[i], ed1.genesis_state_root[i]);
|
||||
builder.connect(
|
||||
ed0.genesis_state_trie_root[i],
|
||||
ed1.genesis_state_trie_root[i],
|
||||
);
|
||||
}
|
||||
builder.connect(ed0.txn_number_before, ed1.txn_number_before);
|
||||
builder.connect(ed0.txn_number_after, ed1.txn_number_after);
|
||||
|
||||
@ -813,7 +813,7 @@ pub(crate) fn add_virtual_block_hashes<F: RichField + Extendable<D>, const D: us
|
||||
pub(crate) fn add_virtual_extra_block_data<F: RichField + Extendable<D>, const D: usize>(
|
||||
builder: &mut CircuitBuilder<F, D>,
|
||||
) -> ExtraBlockDataTarget {
|
||||
let genesis_state_root = builder.add_virtual_public_input_arr();
|
||||
let genesis_state_trie_root = builder.add_virtual_public_input_arr();
|
||||
let txn_number_before = builder.add_virtual_public_input();
|
||||
let txn_number_after = builder.add_virtual_public_input();
|
||||
let gas_used_before = builder.add_virtual_public_input_arr();
|
||||
@ -821,7 +821,7 @@ pub(crate) fn add_virtual_extra_block_data<F: RichField + Extendable<D>, const D
|
||||
let block_bloom_before: [Target; 64] = builder.add_virtual_public_input_arr();
|
||||
let block_bloom_after: [Target; 64] = builder.add_virtual_public_input_arr();
|
||||
ExtraBlockDataTarget {
|
||||
genesis_state_root,
|
||||
genesis_state_trie_root,
|
||||
txn_number_before,
|
||||
txn_number_after,
|
||||
gas_used_before,
|
||||
@ -1084,8 +1084,8 @@ where
|
||||
W: Witness<F>,
|
||||
{
|
||||
witness.set_target_arr(
|
||||
&ed_target.genesis_state_root,
|
||||
&h256_limbs::<F>(ed.genesis_state_root),
|
||||
&ed_target.genesis_state_trie_root,
|
||||
&h256_limbs::<F>(ed.genesis_state_trie_root),
|
||||
);
|
||||
witness.set_target(
|
||||
ed_target.txn_number_before,
|
||||
|
||||
@ -339,6 +339,7 @@ fn test_log_with_aggreg() -> anyhow::Result<()> {
|
||||
to_second_nibbles,
|
||||
rlp::encode(&to_account_second_before).to_vec(),
|
||||
);
|
||||
let genesis_state_trie_root = state_trie_before.hash();
|
||||
|
||||
let tries_before = TrieInputs {
|
||||
state_trie: state_trie_before,
|
||||
@ -439,7 +440,7 @@ fn test_log_with_aggreg() -> anyhow::Result<()> {
|
||||
tries: tries_before,
|
||||
trie_roots_after: tries_after,
|
||||
contract_code,
|
||||
genesis_state_trie_root: HashedPartialTrie::from(Node::Empty).hash(),
|
||||
genesis_state_trie_root,
|
||||
block_metadata: block_metadata.clone(),
|
||||
txn_number_before: 0.into(),
|
||||
gas_used_before: 0.into(),
|
||||
@ -583,7 +584,7 @@ fn test_log_with_aggreg() -> anyhow::Result<()> {
|
||||
tries: tries_before,
|
||||
trie_roots_after,
|
||||
contract_code,
|
||||
genesis_state_trie_root: HashedPartialTrie::from(Node::Empty).hash(),
|
||||
genesis_state_trie_root,
|
||||
block_metadata,
|
||||
txn_number_before: 1.into(),
|
||||
gas_used_before: gas_used_second,
|
||||
@ -609,7 +610,7 @@ fn test_log_with_aggreg() -> anyhow::Result<()> {
|
||||
trie_roots_before: first_public_values.trie_roots_before,
|
||||
trie_roots_after: public_values.trie_roots_after,
|
||||
extra_block_data: ExtraBlockData {
|
||||
genesis_state_root: first_public_values.extra_block_data.genesis_state_root,
|
||||
genesis_state_trie_root,
|
||||
txn_number_before: first_public_values.extra_block_data.txn_number_before,
|
||||
txn_number_after: public_values.extra_block_data.txn_number_after,
|
||||
gas_used_before: first_public_values.extra_block_data.gas_used_before,
|
||||
|
||||
@ -216,7 +216,7 @@ fn test_four_transactions() -> anyhow::Result<()> {
|
||||
trie_roots_after,
|
||||
genesis_state_trie_root: HashedPartialTrie::from(Node::Empty).hash(),
|
||||
contract_code,
|
||||
block_metadata: block_metadata.clone(),
|
||||
block_metadata,
|
||||
addresses: vec![],
|
||||
block_bloom_before: [0.into(); 8],
|
||||
gas_used_before: 0.into(),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user