Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
phase_spec.cpp
Go to the documentation of this file.
3
4#include <array>
5#include <cstdint>
6#include <unordered_map>
7#include <vector>
8
9namespace bb::avm2::tracegen {
10
11// Each value of the map is a TxPhaseSpec struct that contains static attributes for the given transaction phase.
12// For readability, we only include the fields that are non-zero for the given phase. The default values are 0
13// or false (boolean) as per the TxPhaseSpec struct definition, so that each struct is fully initialized.
14// Warning: Modify this map with caution. It will likely require changes in the constraints in tx.pil
15// and/or tx_context.pil. Our constraint system is relying on several internal properties of this map.
17{
18 static const std::unordered_map<TransactionPhase, TxPhaseSpec> TX_PHASE_SPEC_MAP = { {
20 {
22 .read_pi_length_offset =
24 .non_revertible_append_nullifier = true,
25 } },
27 {
29 .read_pi_length_offset =
31 .non_revertible_append_note_hash = true,
32 } },
34 {
36 .read_pi_length_offset =
38 .non_revertible_append_l2_l1_msg = true,
39 } },
41 {
42 .is_public_call_request = true,
45 } },
47 {
48 .is_revertible = true,
50 .read_pi_length_offset =
52 .revertible_append_nullifier = true,
53 .next_phase_on_revert = static_cast<uint8_t>(TransactionPhase::TEARDOWN),
54 } },
56 {
57 .is_revertible = true,
59 .read_pi_length_offset =
61 .revertible_append_note_hash = true,
62 .next_phase_on_revert = static_cast<uint8_t>(TransactionPhase::TEARDOWN),
63 } },
65 {
66 .is_revertible = true,
68 .read_pi_length_offset =
70 .revertible_append_l2_l1_msg = true,
71 .next_phase_on_revert = static_cast<uint8_t>(TransactionPhase::TEARDOWN),
72 } },
74 {
75 .is_public_call_request = true,
76 .is_revertible = true,
79 .next_phase_on_revert = static_cast<uint8_t>(TransactionPhase::TEARDOWN),
80 } },
82 {
83 .is_public_call_request = true,
84 .is_teardown = true,
85 .is_revertible = true,
88 .next_phase_on_revert = static_cast<uint8_t>(TransactionPhase::COLLECT_GAS_FEES),
89 } },
91 {
92 .is_collect_fee = true,
94 } },
96 {
97 .is_tree_padding = true,
98 } },
100 {
101 .is_cleanup = true,
102 } },
103 } };
104 return TX_PHASE_SPEC_MAP;
105}
106
107} // namespace bb::avm2::tracegen
#define AVM_PUBLIC_INPUTS_PUBLIC_APP_LOGIC_CALL_REQUESTS_ROW_IDX
#define AVM_PUBLIC_INPUTS_EFFECTIVE_GAS_FEES_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_TEARDOWN_CALL_REQUEST_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_NULLIFIERS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NOTE_HASHES_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_L2_TO_L1_MSGS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_L2_TO_L1_MSGS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_L2_TO_L1_MSGS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_NOTE_HASHES_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_SETUP_CALL_REQUESTS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_CALL_REQUEST_ARRAY_LENGTHS_APP_LOGIC_CALLS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_CALL_REQUEST_ARRAY_LENGTHS_TEARDOWN_CALL_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_L2_TO_L1_MSGS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_CALL_REQUEST_ARRAY_LENGTHS_SETUP_CALLS_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NOTE_HASHES_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_NOTE_HASHES_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_REVERTIBLE_ACCUMULATED_DATA_NULLIFIERS_ROW_IDX
const std::unordered_map< TransactionPhase, TxPhaseSpec > & get_tx_phase_spec_map()
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13