Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
d1b833e
v2.1.0.2
CassOnMars Oct 6, 2025
1f37f5e
restore tweaks to simlibp2p
CassOnMars Oct 6, 2025
e02c785
fix: nil ref on size calc
CassOnMars Oct 6, 2025
6d4488c
fix: panic should induce shutdown from event_distributor
CassOnMars Oct 6, 2025
7c13667
fix: friendlier initialization that requires less manual kickstarting…
CassOnMars Oct 6, 2025
0174e0c
fix: fewer available shards than provers should choose shard length
CassOnMars Oct 6, 2025
f6bade8
fix: update stored worker registry, improve logging for debug mode
CassOnMars Oct 6, 2025
e0393aa
fix: shut the fuck up, peer log
CassOnMars Oct 6, 2025
74e500e
qol: log value should be snake cased
CassOnMars Oct 6, 2025
2c721a0
fix:non-archive snap sync issues
CassOnMars Oct 6, 2025
0d08f74
fix: separate X448/Decaf448 signed keys, add onion key to registry
CassOnMars Oct 6, 2025
1f62e5d
fix: overflow arithmetic on frame number comparison
CassOnMars Oct 6, 2025
93820ad
fix: worker registration should be idempotent if inputs are same, oth…
CassOnMars Oct 6, 2025
b8cd46b
fix: remove global prover state from size calculation
CassOnMars Oct 6, 2025
a6b51d4
fix: divide by zero case
CassOnMars Oct 6, 2025
daf10a6
fix: eager prover
CassOnMars Oct 6, 2025
bd5ebf9
fix: broadcast listener default
CassOnMars Oct 6, 2025
6120433
qol: diagnostic data for peer authenticator
CassOnMars Oct 6, 2025
e72b407
fix: master/worker connectivity issue in sparse networks
CassOnMars Oct 7, 2025
ad8dc9c
fix: reorder steps of join creation
CassOnMars Oct 7, 2025
e7a03f8
fix: join verify frame source + ensure domain is properly padded (unn…
CassOnMars Oct 7, 2025
006ef46
fix: add delegate to protobuf <-> reified join conversion
CassOnMars Oct 7, 2025
036d94a
fix: preempt prover from planning with no workers
CassOnMars Oct 7, 2025
05ca341
fix: use the unallocated workers to generate a proof
CassOnMars Oct 7, 2025
923add5
qol: underflow causes join fail in first ten frames on test/devnets
CassOnMars Oct 7, 2025
f06c65a
qol: small logging tweaks for easier log correlation in debug mode
CassOnMars Oct 7, 2025
75b2811
qol: use fisher-yates shuffle to ensure prover allocations are evenly…
CassOnMars Oct 7, 2025
c441353
qol: separate decisional logic on post-enrollment confirmation into c…
CassOnMars Oct 7, 2025
703e97c
reuse shard descriptors for both join planning and confirm/reject dec…
CassOnMars Oct 7, 2025
baa5326
fix: add missing interface method and amend test blossomsub to use ne…
CassOnMars Oct 8, 2025
8aca6ac
fix: only check allocations if they exist
CassOnMars Oct 8, 2025
aa933b2
fix: pomw mint proof data needs to be hierarchically under global int…
CassOnMars Oct 8, 2025
36a423f
staging temporary state under diagnostics
CassOnMars Oct 8, 2025
d5b7679
fix: first phase of distributed lock refactoring
CassOnMars Oct 9, 2025
76405d7
fix: compute intrinsic locking
CassOnMars Oct 9, 2025
9a1a974
fix: hypergraph intrinsic locking
CassOnMars Oct 9, 2025
ff449ec
fix: token intrinsic locking
CassOnMars Oct 9, 2025
e0f3f04
fix: update execution engines to support new locking model
CassOnMars Oct 9, 2025
4565ee2
fix: adjust tests with new execution shape
CassOnMars Oct 9, 2025
6d15fbf
fix: weave in lock/unlock semantics to liveness provider
CassOnMars Oct 9, 2025
f59eb4b
fix lock fallthrough, add missing allocation update
CassOnMars Oct 9, 2025
866f08c
qol: additional logging for diagnostics, also testnet/devnet handling…
CassOnMars Oct 10, 2025
5dd3623
fix: establish grace period on halt scenario to permit recovery
CassOnMars Oct 10, 2025
3eb7477
fix: support test/devnet defaults for coverage scenarios
CassOnMars Oct 10, 2025
30a7620
fix: nil ref on consensus halts for non-archive nodes
CassOnMars Oct 10, 2025
32a7824
fix: remove unnecessary prefix from prover ref
CassOnMars Oct 10, 2025
ec8074e
add test coverage for fork choice behaviors and replay – once passing…
CassOnMars Oct 10, 2025
5023e01
fix: no fork replay on repeat for non-archive nodes, snap now behaves…
CassOnMars Oct 10, 2025
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
188 changes: 188 additions & 0 deletions Dockerfile.conntest.source
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
# syntax=docker.io/docker/dockerfile:1.7-labs
FROM --platform=${TARGETPLATFORM} ubuntu:24.04 AS base

ENV PATH="${PATH}:/root/.cargo/bin/"

ARG TARGETOS
ARG TARGETARCH

# Install GMP 6.2 (6.3 which MacOS is using only available on Debian unstable)
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
cmake \
libgmp-dev \
libmpfr-dev \
libmpfr6 \
wget \
m4 \
pkg-config \
gcc \
g++ \
make \
autoconf \
automake \
libtool \
libssl-dev \
python3 \
python-is-python3 \
&& rm -rf /var/lib/apt/lists/*

ARG GO_VERSION=1.23.5
RUN apt update && apt install -y wget && \
ARCH=$(dpkg --print-architecture) && \
case ${ARCH} in \
amd64) GOARCH=amd64 ;; \
arm64) GOARCH=arm64 ;; \
*) echo "Unsupported architecture: ${ARCH}" && exit 1 ;; \
esac && \
wget https://go.dev/dl/go${GO_VERSION}.linux-${GOARCH}.tar.gz && \
rm -rf /usr/local/go && \
tar -C /usr/local -xzf go${GO_VERSION}.linux-${GOARCH}.tar.gz && \
rm go${GO_VERSION}.linux-${GOARCH}.tar.gz

ENV PATH=$PATH:/usr/local/go/bin

RUN git clone https://github.com/flintlib/flint.git && \
cd flint && \
git checkout flint-3.0 && \
./bootstrap.sh && \
./configure \
--prefix=/usr/local \
--with-gmp=/usr/local \
--with-mpfr=/usr/local \
--enable-static \
--disable-shared \
CFLAGS="-O3" && \
make && \
make install && \
cd .. && \
rm -rf flint

COPY docker/rustup-init.sh /opt/rustup-init.sh

RUN /opt/rustup-init.sh -y --profile minimal

# Install uniffi-bindgen-go
RUN cargo install uniffi-bindgen-go --git https://github.com/NordSecurity/uniffi-bindgen-go --tag v0.2.1+v0.25.0

FROM base AS build

ENV GOEXPERIMENT=arenas
ENV QUILIBRIUM_SIGNATURE_CHECK=false

# Install grpcurl before building the node and client
# as to avoid needing to redo it on rebuilds
RUN go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest

WORKDIR /opt/ceremonyclient

# Copy everything except node and client so as to avoid
# invalidating the cache at this point on client or node rebuilds

COPY --exclude=client \
--exclude=conntest \
--exclude=sidecar . .

RUN python emp-install.py --install --tool --ot

RUN cd emp-tool && sed -i 's/add_library(${NAME} SHARED ${sources})/add_library(${NAME} STATIC ${sources})/g' CMakeLists.txt && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local && cd .. && make && make install && cd ..

RUN cd emp-ot && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local && cd .. && make && make install && cd ..

RUN go mod download

## Generate Rust bindings for channel
WORKDIR /opt/ceremonyclient/channel

RUN go mod download

RUN ./generate.sh


## Generate Rust bindings for VDF
WORKDIR /opt/ceremonyclient/vdf

RUN go mod download

RUN ./generate.sh


## Generate Rust bindings for Ferret
WORKDIR /opt/ceremonyclient/ferret

RUN go mod download

RUN ./generate.sh

## Generate Rust bindings for BLS48581
WORKDIR /opt/ceremonyclient/bls48581

RUN go mod download

RUN ./generate.sh

## Generate Rust bindings for RPM
WORKDIR /opt/ceremonyclient/rpm

RUN go mod download

RUN ./generate.sh

## Generate Rust bindings for VerEnc
WORKDIR /opt/ceremonyclient/verenc

RUN go mod download

RUN ./generate.sh

## Generate Rust bindings for Bulletproofs
WORKDIR /opt/ceremonyclient/bulletproofs

RUN go mod download

RUN ./generate.sh

FROM build AS build-conntest

# Build and install conntest
COPY ./conntest /opt/ceremonyclient/conntest
WORKDIR /opt/ceremonyclient/conntest

ENV GOPROXY=direct
RUN ./build.sh && cp conntest /usr/bin

# Allows exporting single binary
FROM scratch AS conntest
COPY --from=build-conntest /usr/bin/conntest /conntest
ENTRYPOINT [ "/conntest" ]

FROM ubuntu:24.04

RUN apt-get update && apt-get install libflint-dev -y

ARG NODE_VERSION
ARG GIT_REPO
ARG GIT_BRANCH
ARG GIT_COMMIT

ENV GOEXPERIMENT=arenas

LABEL org.opencontainers.image.title="Quilibrium Network Node connection test"
LABEL org.opencontainers.image.description="Quilibrium is a decentralized alternative to platform as a service providers."
LABEL org.opencontainers.image.version=$NODE_VERSION
LABEL org.opencontainers.image.vendor=Quilibrium
LABEL org.opencontainers.image.url=https://quilibrium.com/
LABEL org.opencontainers.image.documentation=https://quilibrium.com/docs
LABEL org.opencontainers.image.source=$GIT_REPO
LABEL org.opencontainers.image.ref.name=$GIT_BRANCH
LABEL org.opencontainers.image.revision=$GIT_COMMIT

RUN apt-get update && apt-get install -y ca-certificates

COPY --from=build-conntest /usr/bin/conntest /usr/local/bin

WORKDIR /root

ENTRYPOINT ["conntest"]
5 changes: 5 additions & 0 deletions Taskfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ tasks:
cmds:
- docker build --platform linux/amd64 -f Dockerfile.source --output node/build/amd64_linux --target=node .

build_conntest_amd64_linux:
desc: Build the Quilibrium node connection test binary for AMD64 Linux. Outputs to conntest/build.
cmds:
- docker build --platform linux/amd64 -f Dockerfile.conntest.source --output conntest/build/amd64_linux --target=conntest .

build_node_amd64_avx512_linux:
desc: Build the Quilibrium node binary for AMD64 Linux with AVX-512 extensions. Outputs to node/build.
cmds:
Expand Down
39 changes: 19 additions & 20 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,29 +88,28 @@ var BootstrapPeers = []string{
"/dns/bootstrap.quilibrium.com/udp/8336/quic-v1/p2p/Qme3g6rJWuz8HVXxpDb7aV2hiFq8bZJNqxMmwzmASzfq1M",
"/dns/quecifer.quilibrium.com/udp/8336/quic-v1/p2p/QmdWF9bGTH5mwJXkxrG859HA5r34MxXtMSTuEikSMDSESv",
"/dns/quagmire.quilibrium.com/udp/8336/quic-v1/p2p/QmaQ9KAaKtqXhYSQ5ARQNnn8B8474cWGvvD6PgJ4gAtMrx",
"/ip4/204.186.74.46/udp/8316/quic-v1/p2p/QmeqBjm3iX7sdTieyto1gys5ruQrQNPKfaTGcVQQWJPYDV",
// "/ip4/204.186.74.46/udp/8316/quic-v1/p2p/QmeqBjm3iX7sdTieyto1gys5ruQrQNPKfaTGcVQQWJPYDV",
"/ip4/65.109.17.13/udp/8336/quic-v1/p2p/Qmc35n99eojSvW3PkbfBczJoSX92WmnnKh3Fg114ok3oo4",
"/ip4/65.108.194.84/udp/8336/quic-v1/p2p/QmP8C7g9ZRiWzhqN2AgFu5onS6HwHzR6Vv1TCHxAhnCSnq",
"/ip4/15.204.100.222/udp/8336/quic-v1/p2p/Qmef3Z3RvGg49ZpDPcf2shWtJNgPJNpXrowjUcfz23YQ3V",
"/ip4/69.197.174.35/udp/8336/quic-v1/p2p/QmeprCaZKiymofPJgnp2ANR3F4pRus9PHHaxnJDh1Jwr1p",
"/ip4/70.36.102.32/udp/8336/quic-v1/p2p/QmYriGRXCUiwFodqSoS4GgEcD7UVyxXPeCgQKmYne3iLSF",
"/ip4/204.12.220.2/udp/8336/quic-v1/p2p/QmRw5Tw4p5v2vLPvVSAkQEiRPQGnWk9HM4xiSvgxF82CCw",
"/ip4/209.159.149.14/udp/8336/quic-v1/p2p/Qmcq4Lmw45tbodvdRWZ8iGgy3rUcR3dikHTj1fBXP8VJqv",
"/ip4/148.251.9.90/udp/8336/quic-v1/p2p/QmRpKmQ1W83s6moBFpG6D6nrttkqdQSbdCJpvfxDVGcs38",
"/ip4/35.232.113.144/udp/8336/quic-v1/p2p/QmWxkBc7a17ZsLHhszLyTvKsoHMKvKae2XwfQXymiU66md",
"/ip4/34.87.85.78/udp/8336/quic-v1/p2p/QmTGguT5XhtvZZwTLnNQTN8Bg9eUm1THWEneXXHGhMDPrz",
"/ip4/34.81.199.27/udp/8336/quic-v1/p2p/QmTMMKpzCKJCwrnUzNu6tNj4P1nL7hVqz251245wsVpGNg",
"/ip4/34.143.255.235/udp/8336/quic-v1/p2p/QmeifsP6Kvq8A3yabQs6CBg7prSpDSqdee8P2BDQm9EpP8",
"/ip4/34.34.125.238/udp/8336/quic-v1/p2p/QmZdSyBJLm9UiDaPZ4XDkgRGXUwPcHJCmKoH6fS9Qjyko4",
"/ip4/34.80.245.52/udp/8336/quic-v1/p2p/QmNmbqobt82Vre5JxUGVNGEWn2HsztQQ1xfeg6mx7X5u3f",
"/dns/bravo-1.qcommander.sh/udp/8336/quic-v1/p2p/QmURj4qEB9vNdCCKzSMq4ESEgz13nJrqazgMdGi2DBSeeC",
"/ip4/109.199.100.108/udp/8336/quic-v1/p2p/Qma9fgugQc17MDu4YRSvnhfhVre6AYZ3nZdW8dSUYbsWvm",
"/ip4/47.251.49.193/udp/8336/quic-v1/p2p/QmP6ADPmMCsB8y82oFbrKTrwYWXt1CTMJ3jGNDXRHyYJgR",
"/ip4/138.201.203.208/udp/8336/quic-v1/p2p/QmbNhSTd4Y64ZCbV2gAXYR4ZFDdfRBMfrgWsNg99JHxsJo",
"/ip4/148.251.9.90/udp/8336/quic-v1/p2p/QmRpKmQ1W83s6moBFpG6D6nrttkqdQSbdCJpvfxDVGcs38",
"/ip4/15.235.211.121/udp/8336/quic-v1/p2p/QmZHNLUSAFCkTwHiEE3vWay3wsus5fWYsNLFTFU6tPCmNR",
"/ip4/63.141.228.58/udp/8336/quic-v1/p2p/QmezARggdWKa1sw3LqE3LfZwVvtuCpXpK8WVo8EEdfakJV",
"/ip4/192.69.222.130/udp/8336/quic-v1/p2p/QmcKQjpQmLpbDsiif2MuakhHFyxWvqYauPsJDaXnLav7PJ",
// "/ip4/69.197.174.35/udp/8336/quic-v1/p2p/QmeprCaZKiymofPJgnp2ANR3F4pRus9PHHaxnJDh1Jwr1p",
// "/ip4/70.36.102.32/udp/8336/quic-v1/p2p/QmYriGRXCUiwFodqSoS4GgEcD7UVyxXPeCgQKmYne3iLSF",
// "/ip4/204.12.220.2/udp/8336/quic-v1/p2p/QmRw5Tw4p5v2vLPvVSAkQEiRPQGnWk9HM4xiSvgxF82CCw",
// "/ip4/209.159.149.14/udp/8336/quic-v1/p2p/Qmcq4Lmw45tbodvdRWZ8iGgy3rUcR3dikHTj1fBXP8VJqv",
// "/ip4/148.251.9.90/udp/8336/quic-v1/p2p/QmRpKmQ1W83s6moBFpG6D6nrttkqdQSbdCJpvfxDVGcs38",
// "/ip4/35.232.113.144/udp/8336/quic-v1/p2p/QmWxkBc7a17ZsLHhszLyTvKsoHMKvKae2XwfQXymiU66md",
// "/ip4/34.87.85.78/udp/8336/quic-v1/p2p/QmTGguT5XhtvZZwTLnNQTN8Bg9eUm1THWEneXXHGhMDPrz",
// "/ip4/34.81.199.27/udp/8336/quic-v1/p2p/QmTMMKpzCKJCwrnUzNu6tNj4P1nL7hVqz251245wsVpGNg",
// "/ip4/34.143.255.235/udp/8336/quic-v1/p2p/QmeifsP6Kvq8A3yabQs6CBg7prSpDSqdee8P2BDQm9EpP8",
// "/ip4/34.34.125.238/udp/8336/quic-v1/p2p/QmZdSyBJLm9UiDaPZ4XDkgRGXUwPcHJCmKoH6fS9Qjyko4",
// "/ip4/34.80.245.52/udp/8336/quic-v1/p2p/QmNmbqobt82Vre5JxUGVNGEWn2HsztQQ1xfeg6mx7X5u3f",
// "/dns/bravo-1.qcommander.sh/udp/8336/quic-v1/p2p/QmURj4qEB9vNdCCKzSMq4ESEgz13nJrqazgMdGi2DBSeeC",
// "/ip4/109.199.100.108/udp/8336/quic-v1/p2p/Qma9fgugQc17MDu4YRSvnhfhVre6AYZ3nZdW8dSUYbsWvm",
// "/ip4/47.251.49.193/udp/8336/quic-v1/p2p/QmP6ADPmMCsB8y82oFbrKTrwYWXt1CTMJ3jGNDXRHyYJgR",
// "/ip4/138.201.203.208/udp/8336/quic-v1/p2p/QmbNhSTd4Y64ZCbV2gAXYR4ZFDdfRBMfrgWsNg99JHxsJo",
// "/ip4/148.251.9.90/udp/8336/quic-v1/p2p/QmRpKmQ1W83s6moBFpG6D6nrttkqdQSbdCJpvfxDVGcs38",
// "/ip4/15.235.211.121/udp/8336/quic-v1/p2p/QmZHNLUSAFCkTwHiEE3vWay3wsus5fWYsNLFTFU6tPCmNR",
// "/ip4/63.141.228.58/udp/8336/quic-v1/p2p/QmezARggdWKa1sw3LqE3LfZwVvtuCpXpK8WVo8EEdfakJV",
// purged peers (keep your node online to return to this list)
// "/ip4/204.186.74.47/udp/8317/quic-v1/p2p/Qmd233pLUDvcDW3ama27usfbG1HxKNh1V9dmWVW1SXp1pd",
// "/ip4/186.233.184.181/udp/8336/quic-v1/p2p/QmW6QDvKuYqJYYMP5tMZSp12X3nexywK28tZNgqtqNpEDL",
Expand Down
4 changes: 2 additions & 2 deletions config/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func GetMinimumVersionCutoff() time.Time {
// if there is something in the patch update that is needed to cut off
// unupgraded peers. Be sure to update this to 0x00 for any new minor release.
func GetMinimumPatchVersion() byte {
return 0x00
return 0x02
}

func GetMinimumVersion() []byte {
Expand Down Expand Up @@ -43,7 +43,7 @@ func FormatVersion(version []byte) string {
}

func GetPatchNumber() byte {
return 0x01
return 0x02
}

func GetRCNumber() byte {
Expand Down
36 changes: 36 additions & 0 deletions conntest/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash
set -euxo pipefail

# This script builds the conntest binary for the current platform and statically links it with VDF static lib.
# Assumes that the VDF library has been built by running the generate.sh script in the `../vdf` directory.

ROOT_DIR="${ROOT_DIR:-$( cd "$(dirname "$(realpath "$( dirname "${BASH_SOURCE[0]}" )")")" >/dev/null 2>&1 && pwd )}"

CONNTEST_DIR="$ROOT_DIR/conntest"
BINARIES_DIR="$ROOT_DIR/target/release"

pushd "$CONNTEST_DIR" > /dev/null

export CGO_ENABLED=1

os_type="$(uname)"
case "$os_type" in
"Darwin")
# Check if the architecture is ARM
if [[ "$(uname -m)" == "arm64" ]]; then
# MacOS ld doesn't support -Bstatic and -Bdynamic, so it's important that there is only a static version of the library
go build -ldflags "-linkmode 'external' -extldflags '-L$BINARIES_DIR -L/usr/local/lib/ -L/opt/homebrew/Cellar/openssl@3/3.5.0/lib -lbls48581 -lvdf -lchannel -lferret -lverenc -lbulletproofs -lrpm -ldl -lm -lflint -lgmp -lmpfr -lstdc++ -lcrypto -lssl'" "$@"
else
echo "Unsupported platform"
exit 1
fi
;;
"Linux")
export CGO_LDFLAGS="-L/usr/local/lib -lflint -lgmp -lmpfr -ldl -lm -L$BINARIES_DIR -lstdc++ -lvdf -lchannel -lferret -lverenc -lbulletproofs -lbls48581 -lrpm -lcrypto -lssl -static"
go build -ldflags "-linkmode 'external'" "$@"
;;
*)
echo "Unsupported platform"
exit 1
;;
esac
Loading