mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-05-25 11:49:39 +00:00
Rebased poc/mix-spam-protection onto origin/master. Bundles: - Extended kademlia discovery integration for mix node pool (waku/discovery/waku_kademlia.nim, tools/confutils/cli_args.nim) - RLN spam protection plugin (vacp2p/mix-rln-spam-protection) wired in: WakuMix gains mixRlnSpamProtection + publishMessage callback, per-hop proof generation / verification, membership coordination via /mix/rln/metadata/v1 content topic - chat2mix sim app: filter-subscribes to spam-protection coordination topic, defers publishing until mix node pool is populated - Makefile: automated librln_mix_v2.0.0.a build via scripts/build_rln_mix.sh and mix-librln target - simulations/mixnet: 5-node mixnet sim infrastructure (config1-4.toml, run_*.sh, build_setup.sh, setup_credentials.nim, README, roundtrip_check.sh automated round-trip verification) Rebase fixes: - Plugin previously vendored as submodule; now a nimble requires entry pinned to logos-co/mix-rln-spam-protection-plugin@037f8e10 - waku.nimble: zlib < 0.2 pin to keep nimble lock resolution stable (upstream zlib HEAD bumped to 0.2.0) - apps/chat2mix/config_chat2mix.nim: replace `defaultValue: parseIpAddress("...")` with IpAddress literal, works around confutils macro generating `defaultValueHelpName(): string {.raises: [].}` that violates the raises pragma when stringifying a parseIpAddress call - config.nims: nimble setup --noNimblePath reordering Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Build a separate, pinned RLN library for mix spam-protection usage.
|
|
# This keeps the main nwaku RLN dependency flow unchanged.
|
|
|
|
set -euo pipefail
|
|
|
|
source_dir="${1:-}"
|
|
version="${2:-}"
|
|
output_file="${3:-}"
|
|
repo_url="${4:-https://github.com/vacp2p/zerokit.git}"
|
|
|
|
if [[ -z "${source_dir}" || -z "${version}" || -z "${output_file}" ]]; then
|
|
echo "Usage: $0 <source_dir> <version_tag> <output_file> [repo_url]"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$(dirname "${source_dir}")"
|
|
mkdir -p "$(dirname "${output_file}")"
|
|
|
|
if [[ ! -d "${source_dir}/.git" ]]; then
|
|
echo "Cloning zerokit ${version} from ${repo_url}..."
|
|
if [[ -e "${source_dir}" ]]; then
|
|
echo "Path exists but is not a git repository: ${source_dir}"
|
|
echo "Please remove it and retry."
|
|
exit 1
|
|
fi
|
|
git clone --depth 1 --branch "${version}" "${repo_url}" "${source_dir}"
|
|
else
|
|
echo "Using existing zerokit checkout in ${source_dir}"
|
|
current_tag="$(git -C "${source_dir}" describe --tags --exact-match 2>/dev/null || true)"
|
|
if [[ "${current_tag}" != "${version}" ]]; then
|
|
echo "Updating zerokit checkout to ${version}..."
|
|
git -C "${source_dir}" fetch --tags origin "${version}"
|
|
git -C "${source_dir}" checkout --detach "${version}"
|
|
fi
|
|
fi
|
|
|
|
echo "Building mix RLN library from source (version ${version})..."
|
|
cargo build --release -p rln --manifest-path "${source_dir}/rln/Cargo.toml"
|
|
|
|
cp "${source_dir}/target/release/librln.a" "${output_file}"
|
|
echo "Successfully built ${output_file}"
|