Suite application flow.
shared/*
represents future shared code between Suite and Wasabi wallets.
-- HAPPY PATH SESSION START --
[Suite + Trezor] authorizeCoinCoin credentials
[request] { inputs, output addresses, availableRounds from WabiSabi/status, max fee, privacy level etc.. }
OP: CoinJoinClient.StartRoundAsync SelectCoinsForRound
Finds the best candidate from my input(s), finds round, calc tx size, max fee etc.
[response] { roundId, input(s), ... } or null
[Suite + Trezor] generate ownership(s) for given round
[request] { roundId, inputs with ownership, ... }
OP: ArenaClient.RegisterInputAsync
zeroAmount credentials.
[response] { data } json for WabiSabi/input-registration request
[Suite] Alice calls WabiSabi/input-registration
[request] { data } from WabiSabi/input-registration
OP: ArenaClient.ConfirmConnectionAsync
realAmount credentails.
[response] { data } json for WabiSabi/connection-confirmation
[Suite] Alice calls WabiSabi/connection-confirmation
[Suite] waiting for output phase... (by checking WabiSabi/status)
[request] { data } round info + Alices?
OP: AmountDecomposer
split outputs + ArenaClient.RegisterOutputAsync
realAmount, realVsize.
[response] { data } json for WabiSabi/output-registration
[Suite] Bob calls WabiSabi/output-registration
(multiple for each output)
[Suite] waits for sign phase... (by checking WabiSabi/status)
---> critical phase
[Suite] calls WabiSabi/ready-to-sign (multiple for each Alice/Bob)
[Suite + Trezor] sign tx using collection of data from WabiSabi/ready-to-sign
[Suite] calls WabiSabi/transaction-signature (multiple for each Alice/Bob)
---> critical phase end
-- SESSION END --
Unknown:
ArenaClient.ReissueCredentialAsync