Repository navigation
Rand Wallet v0.6.7
The first release with packages for every platform. Built for Rand testnet chain 19, which is chain 18's build (fullnode v0.6.7, constraint set 8, split authorisation) cut again with a new bridge section; the wallet core vendors that very build, fullnode v0.6.7 (86941a1). A wallet from this release refuses any other chain.
Testnet software: not audited, not for real value.
Download
| you have | file |
|---|---|
| macOS, Apple silicon | rand-wallet-0.6.7-macos-arm64.dmg |
| macOS, Intel | rand-wallet-0.6.7-macos-x64.dmg |
| Windows 10 / 11 | rand-wallet-0.6.7-windows-x64.msi (or …-setup.exe, the same app) |
| Debian, Ubuntu | rand-wallet-0.6.7-linux-x86_64.deb |
| Fedora, openSUSE | rand-wallet-0.6.7-linux-x86_64.rpm |
| any other Linux | rand-wallet-0.6.7-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.6.7.zip — unzip, then Load unpacked at chrome://extensions |
| Firefox 140+ | rand-wallet-firefox-0.6.7.zip — Load Temporary Add-on… at about:debugging |
| Android 8+ | rand-wallet-0.6.7-android.apk |
| to build it yourself | rand-wallet-0.6.7-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.6.7-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 # LinuxGet-FileHash .\rand-wallet-0.6.7-windows-x64.msi -Algorithm SHA256First 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 +xit 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.
The desktop app proves transfers on your computer (about 8 GiB of memory) and can prove for the browser extension on the same machine: Settings → Prove for my other devices. A paired prover — that one, or anybody's — is sent the wallet's viewing key, never its spend key: it can read the wallet's whole history and cannot spend (docs/prover.md). Details, and how to build every client from source: the README and https://randprotocol.org/clients.
Since v0.6.5
- The wallet is aimed at chain 19: fullnode
v0.6.7, constraint set 8, the bundle gas-limit pin and the envelope-format pin in every shell. - Split authorisation (fullnode v0.6.3, every chain since 17 — without it, every send on chain 18 was refused
AuthMissing). A transaction carries two proofs: the bundle proof, made from the wallet's viewing key and a one-time salt, and a small authorisation proof made from the spend key. The wallet makes the authorisation proof itself, on the device, always — natively in seconds, in a browser in about half a minute — and only the bundle proof can be delegated. So a paired prover is sent the viewing key, can read the wallet's whole history and cannot spend, and need not be the user's own: the pairing warning now says that, a pairing not markedownis used (it was "saved; not usable") and shown as "Paired prover", and the desktop app's Prove for my other devices takes viewing-key jobs only. A prover that quotes a fee is not used: this release pays none. In the core (prove_*,prepare_*, the newchain_guests), the shared engine, iOS, Android and the desktop. - The core refuses, before anything is proved, a chain whose bundle guest is v3 but whose node names no auth guest (or another build's), and an auth guest beside an older bundle guest.
- A bundle proof now peaks at about 6.2 GB (measured on fullnode v0.6.7: 6.12 GB for a transfer and 6.15 GB for a withdrawal at the production profile); the 8 GiB device gate is unchanged.
- A first sync finishes on a rate-limited endpoint. Every client looked for bridge deposits by opening every block, one request each — a hundred thousand requests on a chain that makes a block a second, against a public endpoint that allows about a hundred and then one a second. A new wallet never finished its first scan. The search now pages block headers (
rand_getBlocks, 1024 a request) and opens only the blocks that carry a transaction, spends at most 96 requests a scan on it, and no longer fails the scan when the node will not answer; and a read refused with HTTP 429 is repeated after a wait instead of ending the scan. In the shared engine (extensions, desktop, web wallet), Android and iOS alike. - A scan of a busy chain no longer fails half-way. The extensions, desktop app and web wallet read the tree's leaf count once and refused any page past it as a node lying about the tree; a block landing mid-scan made an honest node look like one. The count is now read again when a page reaches past it (found on chain 19's first release check).
- Android targets API 36, pads its screens for edge-to-edge display, and the lock screen's Back handling moved to the back dispatcher.
- The submodule is fetched over https, so a clone needs no GitHub SSH key.
- A release pipeline:
scripts/release/,.github/workflows/release.yml,Jenkinsfile.