Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
address_derivation_trace.cpp
Go to the documentation of this file.
2
3#include <memory>
4
12
13namespace bb::avm2::tracegen {
14
33 TraceContainer& trace)
34{
35 using C = Column;
36
38
39 uint32_t row = 0;
40 for (const auto& event : events) {
41 trace.set(
42 row,
43 { { { C::address_derivation_sel, 1 },
44 // Address.
45 { C::address_derivation_address, event.address },
46 // Contract instance members.
47 { C::address_derivation_salt, event.instance.salt },
48 { C::address_derivation_deployer_addr, event.instance.deployer },
49 { C::address_derivation_class_id, event.instance.original_contract_class_id },
50 { C::address_derivation_init_hash, event.instance.initialization_hash },
51 // Public keys (Grumpkin curve points).
52 { C::address_derivation_nullifier_key_x, event.instance.public_keys.nullifier_key.x },
53 { C::address_derivation_nullifier_key_y, event.instance.public_keys.nullifier_key.y },
54 { C::address_derivation_incoming_viewing_key_x, event.instance.public_keys.incoming_viewing_key.x },
55 { C::address_derivation_incoming_viewing_key_y, event.instance.public_keys.incoming_viewing_key.y },
56 { C::address_derivation_outgoing_viewing_key_x, event.instance.public_keys.outgoing_viewing_key.x },
57 { C::address_derivation_outgoing_viewing_key_y, event.instance.public_keys.outgoing_viewing_key.y },
58 { C::address_derivation_tagging_key_x, event.instance.public_keys.tagging_key.x },
59 { C::address_derivation_tagging_key_y, event.instance.public_keys.tagging_key.y },
60 // Intermediate hash results.
61 { C::address_derivation_salted_init_hash, event.salted_initialization_hash },
62 { C::address_derivation_partial_address, event.partial_address },
63 { C::address_derivation_public_keys_hash, event.public_keys_hash },
64 { C::address_derivation_preaddress, event.preaddress },
65 // Intermediate EC results.
66 { C::address_derivation_preaddress_public_key_x, event.preaddress_public_key.x() },
67 { C::address_derivation_preaddress_public_key_y, event.preaddress_public_key.y() },
68 { C::address_derivation_address_y, event.address_point.y() },
69 // Constant columns (this is temp because aliasing is not allowed in lookups).
70 { C::address_derivation_salted_init_hash_domain_separator, DOM_SEP__SALTED_INITIALIZATION_HASH },
71 { C::address_derivation_partial_address_domain_separator, DOM_SEP__PARTIAL_ADDRESS },
72 { C::address_derivation_public_keys_hash_domain_separator, DOM_SEP__PUBLIC_KEYS_HASH },
73 { C::address_derivation_preaddress_domain_separator, DOM_SEP__CONTRACT_ADDRESS_V1 },
74 { C::address_derivation_g1_x, g1.x() },
75 { C::address_derivation_g1_y, g1.y() },
76 { C::address_derivation_const_two, 2 },
77 { C::address_derivation_const_three, 3 },
78 { C::address_derivation_const_four, 4 },
79 { C::address_derivation_const_thirteen, 13 } } });
80 row++;
81 }
82}
83
91 .add<InteractionType::LookupSequential, lookup_address_derivation_public_keys_hash_poseidon2_0_settings>()
93 .add<InteractionType::LookupSequential, lookup_address_derivation_public_keys_hash_poseidon2_2_settings>()
95 .add<InteractionType::LookupSequential, lookup_address_derivation_public_keys_hash_poseidon2_4_settings>()
97 .add<InteractionType::LookupSequential, lookup_address_derivation_preaddress_scalar_mul_settings>()
99
100} // namespace bb::avm2::tracegen
#define DOM_SEP__SALTED_INITIALIZATION_HASH
#define DOM_SEP__PARTIAL_ADDRESS
#define DOM_SEP__PUBLIC_KEYS_HASH
#define DOM_SEP__CONTRACT_ADDRESS_V1
void process(const simulation::EventEmitterInterface< simulation::AddressDerivationEvent >::Container &events, TraceContainer &trace)
Process address derivation events and populate the relevant columns in the trace. Corresponds to the ...
InteractionDefinition & add(auto &&... args)
group class. Represents an elliptic curve group element. Group is parametrised by Fq and Fr
Definition group.hpp:38
TestTraceContainer trace
simulation::PublicDataTreeReadWriteEvent event
Settings to be passed ot GenericLookupRelationImpl.