Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
529fe13
tx relay v2: rework tx request management and relay logic
navidR Mar 2, 2026
90e2e73
FCMP++/Carrot mega commit [4/20/26]
j-berman Oct 24, 2025
b35a831
Fix rebase
j-berman Apr 20, 2026
4b29dee
ci: MSRV 1.69 -> 1.93
tobtoht Apr 16, 2026
2ae0180
Benchmark FCMP++ verification (using lib w/latest alpha optimizations)
j-berman Apr 13, 2026
97ef16d
Benchmark FCMP++ with latest fix to GBP's applied
j-berman Apr 13, 2026
fe5ca41
Bin pack FCMP++ batch verification
j-berman Apr 15, 2026
6f88321
More tests for benchmarking FCMP++ verification
j-berman Apr 15, 2026
e7fb6ab
Use older versions of crates so rust 1.69.0 works
j-berman Apr 15, 2026
f625e44
Use upstream monero-oxide lib
j-berman Apr 15, 2026
8fc6bce
@jeffro256 review comments
j-berman Apr 16, 2026
d7702ca
Rm stray filesystem addition
j-berman Apr 16, 2026
344ce9e
Revert "Use older versions of crates so rust 1.69.0 works"
j-berman Apr 21, 2026
2d7b15b
@jeffro256 comment
j-berman Apr 21, 2026
a115208
Merge pull request #319 from j-berman/use-latest-fcmp++
jeffro256 Apr 21, 2026
2dd36b1
Bump FCMP++ reference tx weight as a result of larger proofs
j-berman Apr 16, 2026
280968d
Fix max tx weight limit for FCMP++ txs
j-berman Apr 14, 2026
d3bbf42
n_tree_layers is safe as a uint8_t, varint not necessary
j-berman Apr 16, 2026
1e46bf7
Merge pull request #323 from j-berman/n-layers-u8
j-berman Apr 21, 2026
573108e
Merge pull request #321 from j-berman/bump-tx-ref-weight
jeffro256 Apr 21, 2026
a8d12f8
Merge pull request #320 from j-berman/max-tx-weight
jeffro256 Apr 21, 2026
b7973eb
simplewallet: hide legacy ring-signature UX in FCMP++ wallets
jeetrex17 Apr 21, 2026
b9fa5bb
simplewallet: remove obsolete ring_size help and fix sweep parsing
jeetrex17 Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ env:
REMOVE_BUNDLED_PACKAGES : sudo rm -rf /usr/local
# ARCH="default" (not "native") ensures, that a different execution host can execute binaries compiled elsewhere.
BUILD_DEFAULT_LINUX: 'cmake -S . -B build -D ARCH="default" -D BUILD_TESTS=ON -D ENABLE_FUZZ_TEST=ON -D CMAKE_BUILD_TYPE=Release && cmake --build build --target all && cmake --build build --target wallet_api'
APT_INSTALL_LINUX: 'apt -y install build-essential cargo cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler ccache curl git'
APT_INSTALL_LINUX: 'apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler ccache curl git'
APT_SET_CONF: |
tee -a /etc/apt/apt.conf.d/80-custom << EOF
Acquire::Retries "3";
Expand All @@ -26,6 +26,12 @@ env:
ccache --max-size=150M
ccache --set-config=compression=true
USE_DEVICE_TREZOR_MANDATORY: ON
INSTALL_RUST: |
curl -O https://static.rust-lang.org/rustup/archive/1.29.0/x86_64-unknown-linux-gnu/rustup-init
echo "4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10 rustup-init" | sha256sum -c
chmod +x rustup-init
./rustup-init -y --default-toolchain 1.93
echo "$HOME/.cargo/bin" >> $GITHUB_PATH

jobs:
build-macos:
Expand Down Expand Up @@ -116,13 +122,7 @@ jobs:
- name: install monero dependencies
run: ${{env.APT_INSTALL_LINUX}}
- name: install rust
# Debian 11 ships Rust 1.48.0. We need >=1.69 to build FCMP++.
run: |
curl -O https://static.rust-lang.org/rustup/archive/1.27.1/x86_64-unknown-linux-gnu/rustup-init
echo "6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d rustup-init" | sha256sum -c
chmod +x rustup-init
./rustup-init -y --default-toolchain 1.69
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
run: ${{env.INSTALL_RUST}}
- name: configure git
run: git config --global --add safe.directory '*'
- uses: actions/checkout@v5
Expand Down Expand Up @@ -157,6 +157,8 @@ jobs:
run: apt update
- name: install monero dependencies
run: ${{env.APT_INSTALL_LINUX}}
- name: install rust
run: ${{env.INSTALL_RUST}}
- name: configure git
run: git config --global --add safe.directory '*'
- uses: actions/checkout@v5
Expand Down Expand Up @@ -200,6 +202,8 @@ jobs:
run: apt update
- name: install monero dependencies
run: ${{env.APT_INSTALL_LINUX}}
- name: install rust
run: ${{env.INSTALL_RUST}}
- name: install pip
run: apt install -y python3-pip
- name: install Python dependencies
Expand Down
13 changes: 6 additions & 7 deletions .github/workflows/depends.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
build-cross:
runs-on: ubuntu-latest
container:
image: ubuntu:22.04
image: ${{ matrix.toolchain.container || 'ubuntu:22.04' }}
env:
DEBIAN_FRONTEND: noninteractive
CCACHE_TEMPDIR: /tmp/.ccache-temp
Expand All @@ -38,6 +38,7 @@ jobs:
host: "riscv64-linux-gnu"
rust_host: "riscv64gc-unknown-linux-gnu"
packages: "g++-riscv64-linux-gnu"
container: "ubuntu:26.04" # RandomX v2 requires GCC 14 or above for riscv64
- name: "ARM v8"
host: "aarch64-linux-gnu"
rust_host: "aarch64-unknown-linux-gnu"
Expand All @@ -50,6 +51,7 @@ jobs:
host: "x86_64-w64-mingw32"
rust_host: "x86_64-pc-windows-gnu"
packages: "g++-mingw-w64-x86-64"
container: "ubuntu:24.04" # Rust >= 1.70 requires binutils >= 2.40
- name: "x86_64 Linux"
host: "x86_64-unknown-linux-gnu"
rust_host: "x86_64-unknown-linux-gnu"
Expand Down Expand Up @@ -91,14 +93,11 @@ jobs:
- name: install dependencies
run: apt update; apt -y install build-essential cmake pkg-config git ccache ${{ matrix.toolchain.packages }}
- name: install rust
# We can't use the latest Rust due to LLVM 17 not working with old `ld`s (such as in Ubuntu 20.04) for RISC-V
# We could update ld (a pain), update Ubuntu (requires a large amount of changes), or downgrade Rust
# We can't use Rust 1.70 due to LLVM 16 requiring ld >= 2.40 when building for Windows
run: |
curl -O https://static.rust-lang.org/rustup/archive/1.27.1/x86_64-unknown-linux-gnu/rustup-init
echo "6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d rustup-init" | sha256sum -c
curl -O https://static.rust-lang.org/rustup/archive/1.29.0/x86_64-unknown-linux-gnu/rustup-init
echo "4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10 rustup-init" | sha256sum -c
chmod +x rustup-init
./rustup-init -y --default-toolchain 1.69 --target ${{ matrix.toolchain.rust_host }}
./rustup-init -y --default-toolchain 1.93 --target ${{ matrix.toolchain.rust_host }}
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: configure git
run: git config --global --add safe.directory '*'
Expand Down
7 changes: 7 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,10 @@
[submodule "external/gtest"]
path = external/gtest
url = https://github.com/google/googletest.git
[submodule "external/fcmp-plus-plus"]
path = external/fcmp-plus-plus
url = https://github.com/kayabaNerve/fcmp-plus-plus.git
[submodule "external/mx25519"]
path = external/mx25519
url = https://github.com/jeffro256/mx25519
branch = unclamped
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@ if(NOT MANUAL_SUBMODULES)
check_submodule(external/rapidjson)
check_submodule(external/randomx)
check_submodule(external/supercop)
check_submodule(external/mx25519)
endif()
endif()

Expand Down Expand Up @@ -454,7 +455,7 @@ elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*")
set(BSDI TRUE)
endif()

include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include)
include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include external/mx25519/include)

if(MINGW)
set(DEFAULT_STATIC true)
Expand All @@ -481,6 +482,7 @@ set(PIC_FLAG "-fPIC")
if(STATIC)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZMQ_STATIC")
add_definitions("-DMX25519_STATIC")
endif()

option(SANITIZE "Use ASAN memory sanitizer" OFF)
Expand Down Expand Up @@ -1056,6 +1058,9 @@ endif()
add_definitions(-DBOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
add_definitions(-DBOOST_NO_AUTO_PTR)
add_definitions(-DBOOST_UUID_DISABLE_ALIGNMENT) # This restores UUID's std::has_unique_object_representations property
# Boost has two conflicting save/load impls for `std::variant`, one in serialization/variant.hpp,
# and one in serialization/std_variant.hpp. This macro disables the one in variant.hpp.
add_definitions(-DBOOST_NO_CXX17_HDR_VARIANT)

include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
if(MINGW)
Expand Down
8 changes: 6 additions & 2 deletions contrib/epee/include/math_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
#pragma once

#include <cstdint> // uint64_t
#include <cstdlib> // NULL
#include <utility>

#ifdef _WIN32
#include <sysinfoapi.h> // GetSystemTimeAsFileTime
Expand All @@ -41,6 +43,7 @@ namespace math_helper
template<typename get_interval, bool start_immediate = true>
class once_a_time
{
get_interval m_get_interval;
uint64_t get_time() const
{
#ifdef _WIN32
Expand All @@ -61,11 +64,12 @@ namespace math_helper

void set_next_interval()
{
m_interval = get_interval()();
m_interval = m_get_interval();
}

public:
once_a_time()
once_a_time(get_interval gi = get_interval())
: m_get_interval(std::move(gi))
{
m_last_worked_time = 0;
if(!start_immediate)
Expand Down
1 change: 1 addition & 0 deletions contrib/epee/include/net/http_protocol_handler.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "net_utils_base.h"
#include "http_auth.h"
#include "http_base.h"
#include "syncobj.h"

#undef MONERO_DEFAULT_LOG_CATEGORY
#define MONERO_DEFAULT_LOG_CATEGORY "net.http"
Expand Down
6 changes: 4 additions & 2 deletions contrib/epee/include/net/levin_protocol_handler_async.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
#include "time_helper.h"
#include "int-util.h"

#include "cryptonote_basic/connection_context.h"

#include <random>
#include <chrono>

Expand Down Expand Up @@ -480,7 +482,7 @@ class async_protocol_handler

buff_to_invoke = {buff_to_invoke.data(), std::size_t(inner_size)};

const size_t max_bytes = m_connection_context.get_max_bytes(m_current_head.m_command);
const size_t max_bytes = cryptonote::get_command_max_bytes(m_current_head.m_command);
if(buff_to_invoke.size() > std::min<size_t>(max_packet_size, max_bytes))
{
MERROR(m_connection_context << "Maximum packet size exceed!, m_max_packet_size = " << std::min<size_t>(max_packet_size, max_bytes)
Expand Down Expand Up @@ -580,7 +582,7 @@ class async_protocol_handler
m_cache_in_buffer.erase(sizeof(bucket_head2));
m_state = stream_state_body;
m_oponent_protocol_ver = m_current_head.m_protocol_version;
const size_t max_bytes = m_connection_context.get_max_bytes(m_current_head.m_command);
const size_t max_bytes = cryptonote::get_command_max_bytes(m_current_head.m_command);
if(m_current_head.m_cb > std::min<size_t>(max_packet_size, max_bytes))
{
LOG_ERROR_CC(m_connection_context, "Maximum packet size exceed!, m_max_packet_size = " << std::min<size_t>(max_packet_size, max_bytes)
Expand Down
1 change: 1 addition & 0 deletions external/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,4 @@ add_subdirectory(db_drivers)
add_subdirectory(easylogging++)
add_subdirectory(qrcodegen)
add_subdirectory(randomx EXCLUDE_FROM_ALL)
add_subdirectory(mx25519)
1 change: 1 addition & 0 deletions external/mx25519
Submodule mx25519 added at e808a6
3 changes: 3 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,15 @@ endfunction ()
include(Version)
monero_add_library(version SOURCES ${CMAKE_BINARY_DIR}/version.cpp DEPENDS genversion)

add_subdirectory(carrot_core)
add_subdirectory(carrot_impl)
add_subdirectory(common)
add_subdirectory(crypto)
add_subdirectory(ringct)
add_subdirectory(checkpoints)
add_subdirectory(cryptonote_basic)
add_subdirectory(cryptonote_core)
add_subdirectory(fcmp_pp)
add_subdirectory(lmdb)
add_subdirectory(multisig)
add_subdirectory(net)
Expand Down
1 change: 1 addition & 0 deletions src/blockchain_db/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ target_link_libraries(blockchain_db
common
cncrypto
cryptonote_basic
fcmp_pp
ringct_basic
${LMDB_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
Expand Down
Loading
Loading