logos-messaging-nim/scripts/build_rln_mix.sh

44 lines
1.4 KiB
Bash
Raw Normal View History

feat(mix): integrate mix protocol with extended kademlia + RLN spam protection 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>
2026-05-20 13:44:28 +05:30
#!/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}"