mirror of
https://github.com/jwinterm/grin-wallet.git
synced 2026-10-19 16:18:46 +02:00
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.