VersionedSlate and VersionedBinSlate are untagged and try V5 first, so without a version check a V4 slate parses as V5. Only visible without a payment proof; with one the V4 and V5 proof shapes differ enough for serde to pick the right variant by chance. Reject a mismatched version in the V4 and V5 deserializers, for both the JSON and binary encodings, and set the declared version from the conversion so it always matches the structure emitted. Add V4/V5 round trip tests over both encodings, with and without a proof. The V3 API examples showed V4 slates declaring version 5; they now declare 4.
Grin Wallet
This is the reference implementation of Grin's wallet. It consists of 2 major pieces:
-
The Grin Wallet APIs, which are intended for use by Grin community wallet developers. The wallet APIs can be directly linked into other projects or invoked via a JSON-RPC interface.
-
A reference command-line wallet, which provides a baseline wallet for Grin and demonstrates how the wallet APIs should be called.
Contributing
To get involved, read our contributing docs.
Find us:
- Telegram: Grin Development
- Chat: Keybase, more instructions on how to join here.
Usage
To use the command-line wallet, we recommend using the latest release from the Releases page. There are distributions for Linux, MacOS and Windows.
Full documentation outlining how to use the command line wallet can be found on Grin's Wiki
To build locally install Rust and execute in the project directory:
git submodule update --init --recursive
cargo build --release
./target/release/grin-wallet
License
Apache License v2.0