mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-25 00:53:25 +00:00
Merge remote-tracking branch 'public/main' into refactor_encode_funcs
This commit is contained in:
commit
3c699be781
@ -37,18 +37,10 @@ after_mpt_delete_extension_branch:
|
||||
// stack: child_type, updated_child_node_ptr, node_payload_ptr, node_len, node_key, retdest
|
||||
POP
|
||||
// stack: updated_child_node_ptr, node_payload_ptr, node_len, node_key, retdest
|
||||
SWAP1
|
||||
// stack: extension_ptr, updated_child_node_ptr, node_len, node_key, retdest
|
||||
PUSH @MPT_NODE_EXTENSION DUP2 %mstore_trie_data
|
||||
// stack: extension_ptr, updated_child_node_ptr, node_len, node_key, retdest
|
||||
DUP3 DUP2 %mstore_trie_data // Append node_len to our node
|
||||
// stack: extension_ptr, updated_child_node_ptr, node_len, node_key, retdest
|
||||
DUP4 DUP2 %mstore_trie_data // Append node_key to our node
|
||||
// stack: extension_ptr, updated_child_node_ptr, node_len, node_key, retdest
|
||||
SWAP1 DUP2 %mstore_trie_data // Append updated_child_node_ptr to our node
|
||||
// stack: extension_ptr, node_len, node_key, retdest
|
||||
DUP2 %add_const(2) %mstore_trie_data
|
||||
// stack: node_payload_ptr, node_len, node_key, retdest
|
||||
%decrement
|
||||
%stack (extension_ptr, node_len, node_key, retdest) -> (retdest, extension_ptr)
|
||||
// stack: extension_ptr, retdest
|
||||
JUMP
|
||||
|
||||
after_mpt_delete_extension_extension:
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use eth_trie_utils::nibbles::Nibbles;
|
||||
use eth_trie_utils::partial_trie::{HashedPartialTrie, PartialTrie};
|
||||
use ethereum_types::{BigEndianHash, H256};
|
||||
use ethereum_types::{BigEndianHash, H256, U512};
|
||||
use rand::random;
|
||||
|
||||
use crate::cpu::kernel::aggregator::KERNEL;
|
||||
use crate::cpu::kernel::constants::global_metadata::GlobalMetadata;
|
||||
@ -48,6 +49,32 @@ fn mpt_delete_branch_into_hash() -> Result<()> {
|
||||
test_state_trie(state_trie, nibbles_64(0xADE), test_account_2())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_after_mpt_delete_extension_branch() -> Result<()> {
|
||||
let hash = Node::Hash(H256::random());
|
||||
let branch = Node::Branch {
|
||||
children: std::array::from_fn(|i| {
|
||||
if i == 0 {
|
||||
Node::Empty.into()
|
||||
} else {
|
||||
hash.clone().into()
|
||||
}
|
||||
}),
|
||||
value: vec![],
|
||||
};
|
||||
let nibbles = Nibbles::from_bytes_be(&random::<[u8; 5]>()).unwrap();
|
||||
let state_trie = Node::Extension {
|
||||
nibbles,
|
||||
child: branch.into(),
|
||||
}
|
||||
.into();
|
||||
let key = nibbles.merge_nibbles(&Nibbles {
|
||||
packed: U512::zero(),
|
||||
count: 64 - nibbles.count,
|
||||
});
|
||||
test_state_trie(state_trie, key, test_account_2())
|
||||
}
|
||||
|
||||
/// Note: The account's storage_root is ignored, as we can't insert a new storage_root without the
|
||||
/// accompanying trie data. An empty trie's storage_root is used instead.
|
||||
fn test_state_trie(
|
||||
|
||||
@ -1068,7 +1068,7 @@ where
|
||||
/// (Prod_{i=1}^11 x_i) / phi
|
||||
/// The 6th Frob map is nontrivial but leaves Fp6 fixed and hence must be the conjugate:
|
||||
/// x_6 = (a + bz)_6 = a - bz = x.conj()
|
||||
/// Letting prod_17 = x_1 * x_7, the remaining factors in the numerator can be expresed as:
|
||||
/// Letting prod_17 = x_1 * x_7, the remaining factors in the numerator can be expressed as:
|
||||
/// [(prod_17) * (prod_17)_2] * (prod_17)_4 * [(prod_17) * (prod_17)_2]_1
|
||||
/// By Galois theory, both the following are in Fp2 and are complex conjugates
|
||||
/// prod_odds, prod_evens
|
||||
|
||||
@ -32,7 +32,7 @@ pub(crate) struct KeccakSpongeColumnsView<T: Copy> {
|
||||
/// not a padding byte; 0 otherwise.
|
||||
pub is_full_input_block: T,
|
||||
|
||||
/// The context of the base addresss at which we will read the input block.
|
||||
/// The context of the base address at which we will read the input block.
|
||||
pub context: T,
|
||||
/// The segment of the base address at which we will read the input block.
|
||||
pub segment: T,
|
||||
|
||||
@ -4,7 +4,7 @@ use num::traits::AsPrimitive;
|
||||
pub(crate) const SEGMENT_SCALING_FACTOR: usize = 32;
|
||||
|
||||
/// This contains all the existing memory segments. The values in the enum are shifted by 32 bits
|
||||
/// to allow for convenient address components (context / segement / virtual) bundling in the kernel.
|
||||
/// to allow for convenient address components (context / segment / virtual) bundling in the kernel.
|
||||
#[allow(dead_code)]
|
||||
#[allow(clippy::enum_clike_unportable_variant)]
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Hash, Ord, PartialOrd, Debug)]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user