add_keys matched a participant on the public excess alone, so an entry carrying our excess with a nonce that is not ours counted as ours and the full-slate guard was skipped. add_participant_info only replaces an entry when both keys match, so that entry was kept and ours appended, leaving a two party slate with three participants. pub_nonce_sum and pub_blind_sum fold in every entry, so the partial signature is then made over an aggregate that includes the spurious one. Match on the excess and nonce pair, the same test add_participant_info and fill_round_2 already apply, and reject a list carrying our excess with a foreign nonce rather than treating that entry as ours. transition_state turned every other state, including Unknown and an already completed slate, into a successful Standard3. That happens after signing and before the wallet state is persisted, so accept only the four transitions the contract flows use and report anything else.
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