Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
sepolia_backend.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <cstddef>
5#include <cstdint>
6#include <expected>
7#include <optional>
8#include <string>
9
10#include <nlohmann/json_fwd.hpp>
11
12#include "chain_interface.hpp"
13
14namespace dcn::sepolia
15{
17 {
18 std::string rpc_url;
19 std::string private_key_hex;
20
21 std::uint64_t chain_id = 11155111; // Sepolia
22 std::uint64_t gas_limit_fallback = 6'000'000;
23 std::uint64_t fallback_max_priority_fee_wei = 2'000'000'000; // 2 gwei
24 std::uint64_t receipt_poll_interval_ms = 1500;
25 std::size_t max_receipt_polls = 120;
26 };
27
28 class SepoliaBackend final : public chain::IChain
29 {
30 public:
31 explicit SepoliaBackend(BackendConfig cfg);
32
33 const BackendConfig & config() const noexcept;
34
35 std::expected<evmc::address, chain::DeployError> signerAddress() const override;
36
37 std::expected<std::string, chain::DeployError> sendCreateTransaction(
38 const std::vector<std::uint8_t> & init_code,
39 std::optional<std::uint64_t> gas_limit = std::nullopt,
40 std::uint64_t value_wei = 0) const override;
41
42 std::expected<chain::DeployReceipt, chain::DeployError> deployContract(
43 const std::vector<std::uint8_t> & init_code,
44 std::optional<std::uint64_t> gas_limit = std::nullopt,
45 std::uint64_t value_wei = 0) const override;
46
47 private:
48 std::expected<nlohmann::json, chain::DeployError> rpc(const std::string & method, nlohmann::json params) const;
49
50 BackendConfig _cfg;
51 std::array<std::uint8_t, 32> _private_key{};
52 evmc::address _signer_address{};
53 std::optional<chain::DeployError> _init_error;
54 };
55}
Definition chain_interface.hpp:14
Definition sepolia_backend.hpp:29
const BackendConfig & config() const noexcept
Definition sepolia_backend.cpp:438
std::expected< std::string, chain::DeployError > sendCreateTransaction(const std::vector< std::uint8_t > &init_code, std::optional< std::uint64_t > gas_limit=std::nullopt, std::uint64_t value_wei=0) const override
Definition sepolia_backend.cpp:452
std::expected< evmc::address, chain::DeployError > signerAddress() const override
Definition sepolia_backend.cpp:443
std::expected< chain::DeployReceipt, chain::DeployError > deployContract(const std::vector< std::uint8_t > &init_code, std::optional< std::uint64_t > gas_limit=std::nullopt, std::uint64_t value_wei=0) const override
Definition sepolia_backend.cpp:589
Definition sepolia_backend.hpp:15
Definition sepolia_backend.hpp:17
std::size_t max_receipt_polls
Definition sepolia_backend.hpp:25
std::string rpc_url
Definition sepolia_backend.hpp:18
std::string private_key_hex
Definition sepolia_backend.hpp:19
std::uint64_t gas_limit_fallback
Definition sepolia_backend.hpp:22
std::uint64_t chain_id
Definition sepolia_backend.hpp:21
std::uint64_t fallback_max_priority_fee_wei
Definition sepolia_backend.hpp:23
std::uint64_t receipt_poll_interval_ms
Definition sepolia_backend.hpp:24