Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
batch_verifier_types.hpp
Go to the documentation of this file.
1#pragma once
2#include <chrono>
3#include <cstdint>
4#include <cstring>
5#include <string>
6#include <vector>
7#ifndef __wasm__
8#include <unistd.h>
9#endif
10
13
14namespace bb {
15
19enum class VerifyStatus : uint8_t {
20 OK = 0,
21 FAILED = 1,
22};
23
28 static constexpr const char MSGPACK_SCHEMA_NAME[] = "VerifyResult";
29
30 uint64_t request_id = 0;
31 uint8_t status = static_cast<uint8_t>(VerifyStatus::FAILED);
32 std::string error_message;
33 double time_in_queue_ms = 0;
35 uint32_t batch_failure_count = 0; // Number of bisection levels to identify failure
36
37 bool verified() const { return status == static_cast<uint8_t>(VerifyStatus::OK); }
38
39 static VerifyResult failed(uint64_t id, std::string msg)
40 {
41 return { .request_id = id,
42 .status = static_cast<uint8_t>(VerifyStatus::FAILED),
43 .error_message = std::move(msg) };
44 }
45
47 bool operator==(const VerifyResult&) const = default;
48};
49
54 uint64_t request_id = 0;
55 uint32_t vk_index = 0; // Index into the VK list provided at start
57 std::chrono::steady_clock::time_point enqueue_time;
58};
59
60#ifndef __wasm__
69inline bool write_frame(int fd, const void* data, size_t len)
70{
71 if (len > UINT32_MAX) {
72 return false;
73 }
74 auto len32 = static_cast<uint32_t>(len);
75
76 // Combine header and payload into a single buffer for one write() syscall
77 std::vector<uint8_t> frame(4 + len);
78 frame[0] = static_cast<uint8_t>((len32 >> 24) & 0xFF);
79 frame[1] = static_cast<uint8_t>((len32 >> 16) & 0xFF);
80 frame[2] = static_cast<uint8_t>((len32 >> 8) & 0xFF);
81 frame[3] = static_cast<uint8_t>(len32 & 0xFF);
82 std::memcpy(frame.data() + 4, data, len);
83
84 const auto* ptr = frame.data();
85 size_t remaining = frame.size();
86 while (remaining > 0) {
87 auto written = ::write(fd, ptr, static_cast<unsigned int>(remaining));
88 if (written <= 0) {
89 return false;
90 }
91 ptr += written;
92 remaining -= static_cast<size_t>(written);
93 }
94 return true;
95}
96#endif // __wasm__
97
98} // namespace bb
const std::vector< MemoryValue > data
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
void write(B &buf, field2< base_field, Params > const &value)
VerifyStatus
Status codes for verification results.
bool write_frame(int fd, const void *data, size_t len)
Write a length-delimited frame to a file descriptor.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
uint8_t len
A request to verify a single Chonk proof.
std::chrono::steady_clock::time_point enqueue_time
Result of verifying a single proof within a batch.
SERIALIZATION_FIELDS(request_id, status, error_message, time_in_queue_ms, time_in_verify_ms, batch_failure_count)
bool operator==(const VerifyResult &) const =default
static constexpr const char MSGPACK_SCHEMA_NAME[]
static VerifyResult failed(uint64_t id, std::string msg)