Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
address_derivation.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <unordered_set>
4
5
#include "
barretenberg/vm2/common/aztec_types.hpp
"
6
#include "
barretenberg/vm2/simulation/ecc.hpp
"
7
#include "
barretenberg/vm2/simulation/events/address_derivation_event.hpp
"
8
#include "
barretenberg/vm2/simulation/events/event_emitter.hpp
"
9
#include "
barretenberg/vm2/simulation/poseidon2.hpp
"
10
11
namespace
bb::avm2::simulation
{
12
13
class
AddressDerivationInterface
{
14
public
:
15
virtual
~AddressDerivationInterface
() =
default
;
16
virtual
void
assert_derivation
(
const
AztecAddress
& address,
const
ContractInstance
& instance) = 0;
17
};
18
19
class
AddressDerivation
:
public
AddressDerivationInterface
{
20
public
:
21
AddressDerivation
(
Poseidon2Interface
&
poseidon2
,
22
EccInterface
&
ecc
,
23
EventEmitterInterface<AddressDerivationEvent>
&
events
)
24
:
events
(
events
)
25
,
poseidon2
(
poseidon2
)
26
,
ecc
(
ecc
)
27
{}
28
29
void
assert_derivation
(
const
AztecAddress
& address,
const
ContractInstance
& instance)
override
;
30
31
private
:
32
EventEmitterInterface<AddressDerivationEvent>
&
events
;
33
Poseidon2Interface
&
poseidon2
;
34
EccInterface
&
ecc
;
35
36
// Cache for address derivations to avoid repeating derivations
37
std::unordered_set<AztecAddress>
cached_derivations
;
38
};
39
40
}
// namespace bb::avm2::simulation
address_derivation_event.hpp
aztec_types.hpp
bb::avm2::ecc
Definition
ecc.hpp:34
bb::avm2::simulation::AddressDerivation
Definition
address_derivation.hpp:19
bb::avm2::simulation::AddressDerivation::AddressDerivation
AddressDerivation(Poseidon2Interface &poseidon2, EccInterface &ecc, EventEmitterInterface< AddressDerivationEvent > &events)
Definition
address_derivation.hpp:21
bb::avm2::simulation::AddressDerivation::cached_derivations
std::unordered_set< AztecAddress > cached_derivations
Definition
address_derivation.hpp:37
bb::avm2::simulation::AddressDerivation::assert_derivation
void assert_derivation(const AztecAddress &address, const ContractInstance &instance) override
Definition
address_derivation.cpp:10
bb::avm2::simulation::AddressDerivation::poseidon2
Poseidon2Interface & poseidon2
Definition
address_derivation.hpp:33
bb::avm2::simulation::AddressDerivation::ecc
EccInterface & ecc
Definition
address_derivation.hpp:34
bb::avm2::simulation::AddressDerivation::events
EventEmitterInterface< AddressDerivationEvent > & events
Definition
address_derivation.hpp:32
bb::avm2::simulation::AddressDerivationInterface
Definition
address_derivation.hpp:13
bb::avm2::simulation::AddressDerivationInterface::assert_derivation
virtual void assert_derivation(const AztecAddress &address, const ContractInstance &instance)=0
bb::avm2::simulation::AddressDerivationInterface::~AddressDerivationInterface
virtual ~AddressDerivationInterface()=default
bb::avm2::simulation::EccInterface
Definition
ecc.hpp:14
bb::avm2::simulation::EventEmitterInterface
Definition
event_emitter.hpp:10
bb::avm2::simulation::Poseidon2Interface
Definition
poseidon2.hpp:14
bb::crypto::Poseidon2< crypto::Poseidon2Bn254ScalarFieldParams >
event_emitter.hpp
bb::avm2::simulation
Definition
address_derivation.cpp:8
bb::avm2::AztecAddress
FF AztecAddress
Definition
aztec_types.hpp:11
ecc.hpp
bb::avm2::ContractInstance
Definition
aztec_types.hpp:82
poseidon2.hpp
src
barretenberg
vm2
simulation
address_derivation.hpp
Generated by
1.9.8