mirror of
https://github.com/luxfi/mpc.git
synced 2026-09-24 00:26:24 +00:00
* ringtail: fix lux/mpc go.sum corruption (luxfi/edwards25519) The recorded go.sum hash for github.com/luxfi/[email protected] was stale — the proxy now serves go.mod content (`module github.com/luxfi/ edwards25519\n\ngo 1.21\n`) that hashes to MBoV+bPE..., while go.sum had the older tFuuyXvI... value (matching whatever go.mod content was first published, evidently `module github.com/agl/ed25519`). Result: every Go build in the workspace, including ringtail's dkg tests, errored with a checksum mismatch SECURITY ERROR. Fix: remove the two stale edwards25519 lines and re-run go mod tidy so the current proxy content is re-pinned. New hashes: h1:YPoT831TZMslvNyy/KuTtpHi4BGZWgpwak06RCaYLzo= (zip) h1:MBoV+bPEz1tSMADPMSUaYdZ+agY3syG8B6z7RmJBH0A= (mod) Verified: `cd ~/work/lux/ringtail && go test ./dkg/...` passes TestDKG_2of3, TestDKG_3of5, TestDKG_InvalidParams, TestDKG_MissingData (env override GOENV=/dev/null + GOPROXY=https://proxy.golang.org,direct to bypass the unrelated GONOPROXY=hanzoai/* setting in the user's global go env that prevents the proxy from serving the cached but git-deleted hanzoai/[email protected] — that's a separate workspace-config issue, not a go.sum corruption). * fix(build): enable CGO so go-sqlite3 driver registers The /v1/mpc/wallets HTTP API was 503'ing because CGO_ENABLED=0 left mattn/go-sqlite3 unregistered, so the wallet tables couldn't open. Workaround was seeding wallets into TA's user_wallets table. Switch to CGO=1 with statically-linked external linker so the binary still runs in a scratch/alpine runtime without sqlite-libs at runtime.
40 lines
1.6 KiB
Docker
40 lines
1.6 KiB
Docker
# Stage 1: Build embedded admin UI
|
|
FROM node:22-alpine AS ui
|
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
WORKDIR /ui
|
|
COPY ui/package.json ui/pnpm-lock.yaml* ./
|
|
RUN pnpm install --frozen-lockfile 2>/dev/null || pnpm install
|
|
COPY ui/ .
|
|
RUN pnpm build
|
|
|
|
# MPC — single image ships both daemon (mpcd) + CLI (mpc).
|
|
# Default entrypoint: mpcd. Override ENTRYPOINT / CMD with `mpc <cmd>` for CLI.
|
|
# syntax=docker/dockerfile:1
|
|
|
|
FROM --platform=$BUILDPLATFORM golang:1.26-alpine AS builder
|
|
# CGO toolchain — required by go-sqlite3 (mattn) so the wallet HTTP API
|
|
# can open SQLite. Previously CGO=0 left the driver unregistered and
|
|
# /v1/mpc/wallets returned 503; the workaround was seeding wallets into
|
|
# TA's user_wallets table out-of-band.
|
|
RUN apk add --no-cache git ca-certificates gcc musl-dev sqlite-dev linux-headers
|
|
ENV GONOSUMDB=github.com/luxfi/*,github.com/hanzoai/*
|
|
|
|
WORKDIR /app
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
COPY --from=ui /ui/dist ./ui/dist/
|
|
|
|
ENV GOEXPERIMENT=runtimesecret
|
|
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w -linkmode external -extldflags '-static'" -tags 'sqlite_omit_load_extension' -o mpcd ./cmd/mpcd
|
|
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w -linkmode external -extldflags '-static'" -tags 'sqlite_omit_load_extension' -o mpc ./cmd/mpc
|
|
|
|
FROM alpine:3.21
|
|
# Runtime — statically linked binaries above don't need shared libs, but
|
|
# keep ca-certificates + tzdata for HTTPS + log timestamps.
|
|
RUN apk add --no-cache ca-certificates tzdata
|
|
COPY --from=builder /app/mpcd /usr/local/bin/mpcd
|
|
COPY --from=builder /app/mpc /usr/local/bin/mpc
|
|
EXPOSE 8081 9999 9800
|
|
ENTRYPOINT ["mpcd"]
|