Skip to content

Rand Wallet v0.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Oct 12:24

Built for Rand testnet chain 21 (cut 2026-10-12 on fullnode v0.8.0, c0878c3; genesis ca76c2766ed6090ac6ba5dad86b724dd5d2b80c0edfaed287cd8b129e663ca9a), on fullnode v0.8.0 (c0878c3), which this wallet core vendors. Chain 21 runs constraint set 9, so this is the first wallet that can send on it: 0.7.x wallets refuse chain 21, and this one refuses chain 20, which stopped at the cut. Fixes for chain 20 go to the release/chain20 branch.

Your keys, addresses and viewing keys carry over unchanged; chain 21 was cut from chain 20's state. The wallet's note store does not: a wallet that scanned chain 20 opens on a "This node is on a different chain" banner once — choose Rescan and it reads chain 21 from its genesis. On iOS and Android a saved chain id of 20 becomes 21 by itself; the extension, the desktop app and the web wallet never stored one. A custom RPC URL is kept only if the node behind it answers chain 21.

Testnet software: not audited, not for real value.

Download

you have file
macOS, Apple silicon rand-wallet-0.8.0-macos-arm64.dmg
macOS, Intel rand-wallet-0.8.0-macos-x64.dmg
Windows 10 / 11 rand-wallet-0.8.0-windows-x64.msi (or …-setup.exe, the same app)
Debian, Ubuntu rand-wallet-0.8.0-linux-x86_64.deb
Fedora, openSUSE rand-wallet-0.8.0-linux-x86_64.rpm
any other Linux rand-wallet-0.8.0-linux-x86_64.AppImage, or the bare binary in …-linux-x86_64.tar.gz
Linux on arm64 the same four, named …-linux-arm64.…
Chrome, Edge, Brave rand-wallet-chrome-0.8.0.zip — unzip, then Load unpacked at chrome://extensions
Firefox 140+ rand-wallet-firefox-0.8.0.zip — Load Temporary Add-on… at about:debugging
Android 8+ rand-wallet-0.8.0-android.apk
to build it yourself rand-wallet-0.8.0-source.tar.gz — this repository and its submodule

iOS has no download (Apple installs only from TestFlight or the App Store); build it in Xcode from the source. rand-wallet-0.8.0-android.aab is the bundle submitted to Google Play, attached for the record; a phone installs the .apk.

Check it

shasum -a 256 -c SHA256SUMS --ignore-missing     # macOS
sha256sum -c SHA256SUMS --ignore-missing         # Linux
Get-FileHash .\rand-wallet-0.8.0-windows-x64.msi -Algorithm SHA256

First launch

Nothing here is signed with a paid developer certificate yet.

  • macOS: System Settings → Privacy & Security → Open Anyway, or xattr -dr com.apple.quarantine "/Applications/Rand Wallet.app".
  • Windows: SmartScreen → More info → Run anyway.
  • Linux AppImage: chmod +x it first.
  • Android: signed with this project's upload key, certificate SHA-256 75:22:2E:BF:22:D3:95:80:A5:11:2A:AC:B7:EC:2E:03:93:91:07:77:96:E0:45:1D:7B:CF:E3:7E:FA:06:53:52.

A device that can make a proof (the desktop app, about 8 GiB) makes it. One that cannot — a browser, most phones — uses the RandProtocol prover by default (https://prover.randprotocol.org, four machines run by the validators, no fee), after a one-time notice: like any prover it is sent the wallet's viewing key, so its operators can read the wallet's whole history, and it can never spend. Settings → Prover chooses your own prover instead (the desktop app's Prove for my other devices, or your own server), or none (docs/prover.md). Details, and how to build every client from source: the README and https://randprotocol.org/clients.

Since v0.7.3

  • Chain 21, fullnode v0.8.0. The core vendors fullnode's v0.8.0 tag (c0878c3): constraint set 9, the randprotocol-msig crate, and the verified fold in the node's verify cache. The bundle and authorisation guests the wallet proves with are unchanged, so the RandProtocol provers and a paired desktop app keep working. DEFAULT_CHAIN_ID is 21 in every client.
  • Private multisig signing, in every wallet app. A member of a private multisig account (fullnode v0.8.0's Dilithium2 M-of-N accounts) can sign a proposal from the extension, the desktop app, the web wallet, iOS and Android: Settings → Multisig signers adds a signer profile from its policy and key files (kept in the app's existing secure store — the vault, the Keychain behind user presence, the Keystore behind a per-use key); then open a proposal from a file or by pasting it, enter the intended payments — one row per payee, address and RAND amount —, check it and review its lines verbatim, confirm with the last four characters of the account fingerprint, authenticate again for this one signature (password, Face ID or passcode, fingerprint or screen lock), and share the i:hex share as a file. Preparing, proving and submitting the signed proposal stay in the rand command line. The same refusals hold everywhere and in the core itself: a paying output that is not change must match an entered payee and its pinned amount; a payee without an amount is allowed only when it is paid solely in a non-RAND asset; a malformed proposal, a missing node, a node on another chain or genesis, and a proposal within 16 blocks of its expiry are refused; exactly the text and payments that were checked are signed, and an edit disarms Sign; proposals are never stored, and the seed is decrypted for one signature and zeroed. Twenty languages.
  • Fullnode v0.8.0's RPC reads. The wallet's RPC method table and reply validators cover the seven reads v0.8.0 added (perps, multisig and the RAND price among them), and tolerate the new rand_getLimits sections on chain 21 or their absence.
  • The wallet against the real node. A new end-to-end suite runs the real wasm core and engine, with real fetch, against a rand-node from the fullnode v0.8.0 release on a Test-profile chain it cuts itself: chain identity, the whole client-side RPC contract, faucet → scan → balance → activity → rescan, a proved spend through a real rand-prover, failover and submit rules, and a node restart. It is the real-node CI job on every push.
  • Coverage: wallet-ffi and wallet-wasm fully covered, the core's refusals, the ui's pure-logic suites (core 93.2 % → 95.7 %).