Skip to content

Mixnet Mode copy claims IP-correlation protection the transport does not provide #1290

Description

@zancas

Summary

The app tells the user that Mixnet Mode avoids correlation between their IP
address and their balance. It does not. Mixnet Mode covers transaction
transmission and price fetch only. Wallet synchronization always uses the
ordinary connection. The sync indexer therefore sees the client IP address and
can correlate it with the wallet's on-chain activity.

What the app says now

app/translations/en.json:881

    "nym-gate-body": "We recommend using the NYM mixnet to avoid correlation between your IP and your balance.",

This string is the app's entire IP-correlation wording. It sits in the
migrationstrategy section, so the user reads it at the moment they choose
whether to enable NYM. The claim it makes is the exact claim the transport
cannot support.

The status surface carries no disclaimer at all.

app/translations/en.json:457

      "ready": "Mixnet ready",

app/walletBackend/transforms/mixnetPresenter.ts:107 publishes that key. A user
who reads "Mixnet ready" has no way to learn that synchronization stayed on the
clearnet.

What the library says

zingolib carries the ZIP-0318 wording as mixnet::IP_CORRELATION_DISCLAIMER.
Its doc-comment states the reason for a single canonical string. A frontend must
not paraphrase the risk. This app never referenced that constant, and it
paraphrased anyway.

zingolib issue #2696 asks for the constant to be removed, because a library must
not own the wording an application shows. zingolib PR #2709 does exactly that. It
moves the text into zingo-cli as a private constant. After that PR lands, each
frontend owns its own wording. This app then owns a wording that is wrong.

Requested change

Correct nym-gate-body. State what Mixnet Mode covers, and state that
synchronization is not covered.

Add an IP-correlation disclaimer to the Mixnet Mode status surface, as its own
translation key. Show it beside every status, not only beside ready.

app/translations/en.json:448 is already scoped correctly and is a good model:

    "nym-disable-warning": "Turning off Mixnet Mode routes your transactions and price lookups over the clearnet and links your activity to your IP address.",

That sentence names the two covered surfaces. The gate copy and the status copy
must do the same.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions