Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
56e67da
Prune redundant aggregated payload proofs
uink45 May 9, 2026
ceee8b8
Update libp2p submodule and add meshsub v1.2.0
uink45 May 9, 2026
321a039
Use c-ssz hashing API and add state cache
uink45 May 9, 2026
6dfd9ea
Integrate vendored c-ssz and AWS-LC OpenSSL shim
uink45 May 9, 2026
efedafb
Switch to c-lean-libp2p and refactor libp2p
uink45 May 11, 2026
c8cae39
Add c-lean-libp2p submodule
uink45 May 11, 2026
b0826bc
Defer conn event handler; accept block responses
uink45 May 12, 2026
6dc30a2
Handle failed block requests; raise gossipsub cap
uink45 May 12, 2026
376a77a
Add gossipsub peer tracking and diagnostics
uink45 May 13, 2026
4139ae9
Remove debugging
uink45 May 13, 2026
1c01584
Alias fork-choice anchor in status messages
uink45 May 14, 2026
8d63bb6
Add async block import worker and queue
uink45 May 16, 2026
0616561
Consolidate CMake steps and add build cache
uink45 May 16, 2026
a813f56
Update c-lean-libp2p submodule
uink45 May 16, 2026
cc7f537
Update c-lean-libp2p module
uink45 May 16, 2026
d250640
Simplify anchor checkpoint handling & tests
uink45 May 17, 2026
438196e
Remove validator sync pause logic and add unit test
uink45 May 17, 2026
9a1404d
Use store latest_justified when cached head lags
uink45 May 17, 2026
567ec78
Apply store latest_justified to state
uink45 May 17, 2026
d931d28
Improve sync tracking and validator gating
uink45 May 17, 2026
a7c0c90
Remove signed block signature verification
uink45 May 17, 2026
f8b4eca
Track network view and use it for sync progress
uink45 May 17, 2026
6765f94
Gate gossip handling and parent-fetch on sync state per leanSpec
uink45 May 17, 2026
d9ee474
Add test driver HTTP endpoints and driver
uink45 May 17, 2026
79d3d1c
Merge branch 'devnet-4' of https://github.com/Pier-Two/lantern into d…
uink45 May 17, 2026
0632b44
Use finalized slot for historical floor. Improve logging
uink45 May 18, 2026
9bd7215
Persist finalized replay state on advance
uink45 May 18, 2026
6912c64
Preserve persisted checkpoints when setting anchor
uink45 May 18, 2026
d9bf0be
Skip attestations with target <= source
uink45 May 18, 2026
5c6c6eb
Apply store-justified after processing slots
uink45 May 18, 2026
04cbbfd
Stop applying store latest_justified; update tests
uink45 May 18, 2026
f8cb355
Update submodule, fix state loop, use macro
uink45 May 23, 2026
a68fb73
Fix test cleanup system result handling
uink45 May 23, 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
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "external/c-libp2p"]
path = external/c-libp2p
url = https://github.com/Pier-Two/c-libp2p.git
[submodule "external/c-ssz"]
path = external/c-ssz
url = https://github.com/Pier-Two/c-ssz.git
Expand All @@ -23,3 +20,6 @@
[submodule "external/c-leanvm-xmss"]
path = external/c-leanvm-xmss
url = https://github.com/Pier-Two/c-leanvm-xmss.git
[submodule "external/c-lean-libp2p"]
path = external/c-lean-libp2p
url = https://github.com/Pier-Two/c-lean-libp2p.git
67 changes: 19 additions & 48 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ set(CMAKE_POLICY_VERSION_MINIMUM 3.5)

if(APPLE)
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Target architecture for macOS builds" FORCE)
add_compile_definitions(_DARWIN_C_SOURCE)
add_compile_definitions(PATH_MAX=4096)
add_compile_definitions(NAME_MAX=255)
endif()

set(CMAKE_C_STANDARD 17)
Expand Down Expand Up @@ -68,6 +71,7 @@ set(LANTERN_LIBRARY_SOURCES
src/http/common.c
src/http/metrics.c
src/http/server.c
src/test_driver/driver.c
src/storage/storage.c
src/support/log.c
src/support/string_list.c
Expand All @@ -76,8 +80,8 @@ set(LANTERN_LIBRARY_SOURCES
src/support/secure_mem.c
src/crypto/xmss.c
src/internal/yaml_parser.c
external/c-libp2p/src/multiformats/multibase/encoding/base64_url.c
external/c-libp2p/external/wjcryptlib/lib/WjCryptLib_Sha256.c
tests/support/fixture_loader.c
tests/support/state_store_adapter.c
)

function(lantern_define_library target_name wrapper_target)
Expand All @@ -86,21 +90,17 @@ function(lantern_define_library target_name wrapper_target)
PUBLIC
${PROJECT_SOURCE_DIR}/include
PRIVATE
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/external/jsmn
${PROJECT_SOURCE_DIR}/external/c-libp2p/src/protocol/gossipsub/proto
${PROJECT_SOURCE_DIR}/external/c-libp2p/src/protocol/gossipsub/proto/gen
${PROJECT_SOURCE_DIR}/external/c-libp2p/external/secp256k1/include
${PROJECT_SOURCE_DIR}/external/c-libp2p/external/libtomcrypt/src/headers
${PROJECT_SOURCE_DIR}/external/c-libp2p/external/wjcryptlib/lib
)
target_compile_definitions(${target_name}
PRIVATE
_DEFAULT_SOURCE
_POSIX_C_SOURCE=200809L
)
lantern_configure_dependencies(${target_name} ${wrapper_target})
target_link_libraries(${target_name} PRIVATE secp256k1 libtomcrypt Threads::Threads)
target_link_libraries(${target_name} PRIVATE Threads::Threads)
endfunction()

lantern_define_library(lantern lantern_c_leanvm_xmss)
Expand Down Expand Up @@ -228,9 +228,6 @@ if(LANTERN_BUILD_TESTS)
lantern_client_gossip_test
PRIVATE
${PROJECT_SOURCE_DIR}/tests/unit
${PROJECT_SOURCE_DIR}/external/c-libp2p
${PROJECT_SOURCE_DIR}/external/c-libp2p/src/protocol/gossipsub/proto
${PROJECT_SOURCE_DIR}/external/c-libp2p/src/protocol/gossipsub/proto/gen
)
target_compile_definitions(
lantern_client_gossip_test
Expand Down Expand Up @@ -305,12 +302,10 @@ if(LANTERN_BUILD_TESTS)
add_test(NAME lantern_consensus_runtime COMMAND lantern_consensus_runtime_test)

add_executable(lantern_state_test tests/unit/test_state.c)
target_sources(lantern_state_test PRIVATE tests/support/state_store_adapter.c)
target_link_libraries(lantern_state_test PRIVATE ${LANTERN_TEST_LINK_LIB})
add_test(NAME lantern_state COMMAND lantern_state_test)

add_executable(lantern_off_head_replay_test tests/unit/test_off_head_replay.c)
target_sources(lantern_off_head_replay_test PRIVATE tests/support/state_store_adapter.c)
target_link_libraries(lantern_off_head_replay_test PRIVATE ${LANTERN_TEST_LINK_LIB})
add_test(NAME lantern_off_head_replay COMMAND lantern_off_head_replay_test)
set_tests_properties(lantern_off_head_replay PROPERTIES TIMEOUT 120)
Expand All @@ -326,8 +321,6 @@ if(LANTERN_BUILD_TESTS)

add_executable(lantern_networking_messages_test
tests/unit/test_networking_messages.c
tests/support/state_store_adapter.c
tests/support/fixture_loader.c
)
target_link_libraries(lantern_networking_messages_test PRIVATE lantern)
target_include_directories(
Expand Down Expand Up @@ -363,7 +356,6 @@ if(LANTERN_BUILD_TESTS)
add_test(NAME lantern_fork_choice COMMAND lantern_fork_choice_test)

add_executable(lantern_storage_test tests/unit/test_storage.c)
target_sources(lantern_storage_test PRIVATE tests/support/state_store_adapter.c)
target_link_libraries(lantern_storage_test PRIVATE ${LANTERN_TEST_LINK_LIB})
add_test(NAME lantern_storage COMMAND lantern_storage_test)

Expand All @@ -386,8 +378,6 @@ if(LANTERN_BUILD_TESTS)
add_executable(lantern_consensus_vectors_test
tests/integration/test_consensus_vectors.c
tests/integration/consensus_fixture_runner.c
tests/support/state_store_adapter.c
tests/support/fixture_loader.c
)
target_link_libraries(lantern_consensus_vectors_test PRIVATE ${LANTERN_TEST_LINK_LIB})
target_include_directories(
Expand Down Expand Up @@ -416,8 +406,6 @@ if(LANTERN_BUILD_TESTS)
"— registering lantern_verify_signatures_vectors")
add_executable(lantern_verify_signatures_vectors_test
tests/integration/test_verify_signatures_vectors.c
tests/support/state_store_adapter.c
tests/support/fixture_loader.c
)
target_link_libraries(lantern_verify_signatures_vectors_test PRIVATE ${LANTERN_TEST_LINK_LIB})
target_include_directories(
Expand Down Expand Up @@ -446,8 +434,6 @@ if(LANTERN_BUILD_TESTS)
add_executable(lantern_genesis_vectors_test
tests/integration/test_genesis_vectors.c
tests/integration/consensus_fixture_runner.c
tests/support/state_store_adapter.c
tests/support/fixture_loader.c
)
target_link_libraries(lantern_genesis_vectors_test PRIVATE ${LANTERN_TEST_LINK_LIB})
target_include_directories(
Expand Down Expand Up @@ -475,8 +461,6 @@ if(LANTERN_BUILD_TESTS)
"— registering lantern_ssz_vectors")
add_executable(lantern_ssz_vectors_test
tests/integration/test_ssz_vectors.c
tests/support/state_store_adapter.c
tests/support/fixture_loader.c
)
target_link_libraries(lantern_ssz_vectors_test PRIVATE ${LANTERN_TEST_LINK_LIB})
target_include_directories(
Expand Down Expand Up @@ -504,18 +488,13 @@ if(LANTERN_BUILD_TESTS)
"— registering lantern_networking_codec_vectors")
add_executable(lantern_networking_codec_vectors_test
tests/integration/test_networking_codec_vectors.c
tests/support/state_store_adapter.c
tests/support/fixture_loader.c
)
target_link_libraries(lantern_networking_codec_vectors_test PRIVATE ${LANTERN_TEST_LINK_LIB})
target_include_directories(
lantern_networking_codec_vectors_test
PRIVATE
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/external/jsmn
${PROJECT_SOURCE_DIR}/external/c-libp2p/src/protocol/gossipsub/proto
${PROJECT_SOURCE_DIR}/external/c-libp2p/src/protocol/gossipsub/proto/gen
${PROJECT_SOURCE_DIR}/external/c-libp2p/external/noise-c/include
)
target_compile_definitions(
lantern_networking_codec_vectors_test
Expand All @@ -530,25 +509,6 @@ if(LANTERN_BUILD_TESTS)
"— skipping lantern_networking_codec_vectors")
endif()

# Mirror libp2p dependency test names into CTestCustom so top-level `ctest`
# ignores them (they are dependency-only suites we do not build/run).
set(_lantern_libp2p_binary_dir ${CMAKE_BINARY_DIR}/c-libp2p)
if(EXISTS "${_lantern_libp2p_binary_dir}")
get_property(_lantern_libp2p_tests
DIRECTORY "${_lantern_libp2p_binary_dir}"
PROPERTY TESTS)
if(_lantern_libp2p_tests)
set(_lantern_ctest_custom "${CMAKE_BINARY_DIR}/CTestCustom.cmake")
file(WRITE "${_lantern_ctest_custom}"
"# Auto-generated by lantern/CMakeLists.txt – skip c-libp2p dependency tests.\n"
"set(CTEST_CUSTOM_TESTS_IGNORE\n")
foreach(_lantern_test_name IN LISTS _lantern_libp2p_tests)
file(APPEND "${_lantern_ctest_custom}" " ${_lantern_test_name}\n")
endforeach()
file(APPEND "${_lantern_ctest_custom}" ")\n")
endif()
endif()

set(_lantern_ctest_targets
lantern_client_vote
lantern_client_pending
Expand Down Expand Up @@ -577,4 +537,15 @@ if(LANTERN_BUILD_TESTS)
set_tests_properties(lantern_client_vote PROPERTIES TIMEOUT 300)
set_tests_properties(lantern_state PROPERTIES TIMEOUT 300)

get_property(_lantern_build_targets DIRECTORY PROPERTY BUILDSYSTEM_TARGETS)
foreach(_lantern_target IN LISTS _lantern_build_targets)
if(_lantern_target MATCHES "^lantern_.*_test$")
target_compile_options(
${_lantern_target}
PRIVATE
$<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang,GNU>:-UNDEBUG>
)
endif()
endforeach()

endif()
23 changes: 6 additions & 17 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-cache-${TARGE
python3-pip \
curl \
ccache \
libtommath-dev \
libssl-dev \
zlib1g-dev

# Install latest Rust toolchain via rustup
Expand Down Expand Up @@ -69,23 +67,14 @@ RUN --mount=type=cache,target=/root/.cargo/registry,sharing=locked,id=cargo-regi
&& cargo build --release --locked \
&& find target/release -name '*.a' -exec ranlib {} \;

RUN --mount=type=cache,target=/root/.ccache,sharing=locked,id=ccache-${TARGETPLATFORM} \
cmake -S external/c-libp2p/external/libtommath -B deps/libtommath -DBUILD_SHARED_LIBS=ON -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
&& cmake --build deps/libtommath --parallel "$(nproc)" \
&& cmake --install deps/libtommath

RUN --mount=type=cache,target=/root/.ccache,sharing=locked,id=ccache-${TARGETPLATFORM} \
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DLANTERN_GIT_COMMIT="${GIT_COMMIT}" -DLANTERN_GIT_BRANCH="${GIT_BRANCH}"

ARG LANTERN_FORCE_REBUILD=0
RUN echo "LANTERN_FORCE_REBUILD=${LANTERN_FORCE_REBUILD}"
RUN --mount=type=cache,target=/root/.ccache,sharing=locked,id=ccache-${TARGETPLATFORM} \
cmake --build build --target lantern_cli --parallel "$(nproc)"

RUN --mount=type=cache,target=/root/.ccache,sharing=locked,id=ccache-${TARGETPLATFORM} \
cmake --build build --target lantern_client_test --parallel "$(nproc)" || true

RUN mkdir -p /opt/lantern/bin \
--mount=type=cache,target=/usr/src/lantern/build,sharing=locked,id=lantern-build-${TARGETPLATFORM} \
echo "LANTERN_FORCE_REBUILD=${LANTERN_FORCE_REBUILD}" \
&& cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DLANTERN_GIT_COMMIT="${GIT_COMMIT}" -DLANTERN_GIT_BRANCH="${GIT_BRANCH}" \
&& cmake --build build --target lantern_cli --parallel "$(nproc)" \
&& (cmake --build build --target lantern_client_test --parallel "$(nproc)" || true) \
&& mkdir -p /opt/lantern/bin \
&& cp build/lantern_cli /opt/lantern/bin/lantern \
&& mkdir -p /opt/lantern/lib \
&& find build -maxdepth 2 -type f -name "*.so*" -exec cp {} /opt/lantern/lib/ \; \
Expand Down
Loading
Loading