Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
address_derivation_trace.test.cpp
Go to the documentation of this file.
1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
3
4#include <cstdint>
5
16
17namespace bb::avm2::tracegen {
18namespace {
19
20using ::testing::ElementsAre;
21
23
24TEST(AddressDerivationTraceGenTest, TraceGeneration)
25{
26 TestTraceContainer trace;
27 AddressDerivationTraceBuilder builder;
28
30
31 EmbeddedCurvePoint preaddress_public_key = EmbeddedCurvePoint::one() * Fq(56);
32 EmbeddedCurvePoint address_point = EmbeddedCurvePoint::one() * Fq(67);
33
34 simulation::AddressDerivationEvent addr_event{ .address = FF(0xdeadbeef),
35 .instance = instance,
36 .salted_initialization_hash = FF(12),
37 .partial_address = FF(23),
38 .public_keys_hash = FF(34),
39 .preaddress = FF(45),
40 .preaddress_public_key = preaddress_public_key,
41 .address_point = address_point };
42 builder.process({ { addr_event } }, trace);
43
44 EXPECT_THAT(
45 trace.as_rows(),
46 ElementsAre(
47 // Only one row.
48 AllOf(
49 ROW_FIELD_EQ(address_derivation_sel, 1),
50 ROW_FIELD_EQ(address_derivation_address, FF(0xdeadbeef)),
51 ROW_FIELD_EQ(address_derivation_salt, instance.salt),
52 ROW_FIELD_EQ(address_derivation_deployer_addr, instance.deployer),
53 ROW_FIELD_EQ(address_derivation_class_id, instance.original_contract_class_id),
54 ROW_FIELD_EQ(address_derivation_init_hash, instance.initialization_hash),
55 ROW_FIELD_EQ(address_derivation_nullifier_key_x, instance.public_keys.nullifier_key.x),
56 ROW_FIELD_EQ(address_derivation_nullifier_key_y, instance.public_keys.nullifier_key.y),
57 ROW_FIELD_EQ(address_derivation_incoming_viewing_key_x, instance.public_keys.incoming_viewing_key.x),
58 ROW_FIELD_EQ(address_derivation_incoming_viewing_key_y, instance.public_keys.incoming_viewing_key.y),
59 ROW_FIELD_EQ(address_derivation_outgoing_viewing_key_x, instance.public_keys.outgoing_viewing_key.x),
60 ROW_FIELD_EQ(address_derivation_outgoing_viewing_key_y, instance.public_keys.outgoing_viewing_key.y),
61 ROW_FIELD_EQ(address_derivation_tagging_key_x, instance.public_keys.tagging_key.x),
62 ROW_FIELD_EQ(address_derivation_tagging_key_y, instance.public_keys.tagging_key.y),
63 ROW_FIELD_EQ(address_derivation_salted_init_hash, FF(12)),
64 ROW_FIELD_EQ(address_derivation_partial_address, FF(23)),
65 ROW_FIELD_EQ(address_derivation_public_keys_hash, FF(34)),
66 ROW_FIELD_EQ(address_derivation_preaddress, FF(45)),
67 ROW_FIELD_EQ(address_derivation_preaddress_public_key_x, preaddress_public_key.x()),
68 ROW_FIELD_EQ(address_derivation_preaddress_public_key_y, preaddress_public_key.y()),
69 ROW_FIELD_EQ(address_derivation_address_y, address_point.y()),
70 ROW_FIELD_EQ(address_derivation_salted_init_hash_domain_separator, DOM_SEP__SALTED_INITIALIZATION_HASH),
71 ROW_FIELD_EQ(address_derivation_partial_address_domain_separator, DOM_SEP__PARTIAL_ADDRESS),
72 ROW_FIELD_EQ(address_derivation_public_keys_hash_domain_separator, DOM_SEP__PUBLIC_KEYS_HASH),
73 ROW_FIELD_EQ(address_derivation_preaddress_domain_separator, DOM_SEP__CONTRACT_ADDRESS_V1),
74 ROW_FIELD_EQ(address_derivation_g1_x, EmbeddedCurvePoint::one().x()),
75 ROW_FIELD_EQ(address_derivation_g1_y, EmbeddedCurvePoint::one().y()),
76 ROW_FIELD_EQ(address_derivation_const_two, 2),
77 ROW_FIELD_EQ(address_derivation_const_three, 3),
78 ROW_FIELD_EQ(address_derivation_const_four, 4),
79 ROW_FIELD_EQ(address_derivation_const_thirteen, 13))));
80}
81
82} // namespace
83} // namespace bb::avm2::tracegen
std::shared_ptr< Napi::ThreadSafeFunction > instance
#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::AluEvent >::Container &events, TraceContainer &trace)
Process the ALU events and populate the ALU relevant columns in the trace.
std::vector< AvmFullRowConstRef > as_rows() const
AluTraceBuilder builder
Definition alu.test.cpp:124
TestTraceContainer trace
#define ROW_FIELD_EQ(field_name, expression)
Definition macros.hpp:7
ContractInstance random_contract_instance()
Definition fixtures.cpp:159
AvmFlavorSettings::FF FF
Definition field.hpp:10
StandardAffinePoint< AvmFlavorSettings::EmbeddedCurve::AffineElement > EmbeddedCurvePoint
Definition field.hpp:12
AvmFlavorSettings::G1::Fq Fq
Definition field.hpp:11
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)