Kchannels supports two modes: Light Mode and Watchtower Mode. Modes are a channel setting and are reflected in the channel definition; a channel can even change its mode. The mode setting only affects a given channel, so that a user doesn't need to care about the channel mode of his counterparties.
In Light Mode, a user authorizes his zone to receive transactions on his behalf, without his participation. As always, user participation is still required the send transactions. The recipient zone already signs for every incoming transaction, so it technically doesn't need to perform any additional work in this mode. A Light Mode transaction with its three signatures is considered to be valid.
The reason this is safe is because zones are not allowed to initiate transactions or to own assets within Kchannels. A zone's only interest is to maintain the proper operation of Kchannels, as this is the only way to generate transaction fees for the deployment. Zones are not allowed to own the transaction fees they collect.
Light Mode results in the best possible UX, since the user doesn't have to be online and doesn't need to run and maintain any software. All he has to do is drive a single JSON-RPC API by issuing signed objects. This mode is best suited for regular users who maintain a relatively small balance in their channels and mostly send transactions. This mode also integrates well with Web and mobile clients, as it doesn't take much to build a very functional client. Such a client can just disconnect on completing the needed transactions. To turn on Light Mode, a user simply sets the channel definition's validator address field the Ethereum identity of their assigned zone.
Light Mode has a little caveat that warrants some attention: as the user doesn't have infrastructure to get called whenever a transaction is received in his channel, he may not always be in possession of his latest state. In the unlikely event that his zone is unavailable, he may want to withdraw his assets directly from the smart contract, but might not have the latest channel state to submit to the contract. This could mean that he can may not be able to withdraw all of his assets. The way to avoid this is to have something else at Kchannels provide a user's state in the zone's absence. Nevertheless, Light Mode is still a bit less secure than Watchtower Mode.
In Watchtower Mode, a user runs watchtower software on one of his machines. That software, which uses its own Ethereum identity, gets called to sign on any transaction coming into the user's channel. This fourth signature is required for a Watchtower Mode transaction to be valid. The watchtower also gets notified of any other channel activity. As this watchtower can maintain an independent record of anything and everything happening at a user's channel, it can automatically trigger a dispute as soon as it spots anything it does not agree with.
Watchtower Mode comes with the responsibility of running and maintaining that watchtower software (provided by Kchannels, but users are free to use their own), and the associated costs. The software must be running and reachable for the user's channel to receive any transactions, and since it is often impossible to predict when exactly a transaction might arrive, this can mean that the software must run 24/7. If the software is not reachable for an incoming transaction, the incoming transaction fails, and the sender has to retry later. This is important: Kchannels cannot hold assets "in limbo"; they are either at the sender's channel or at the recipient's, and there is no in-between.
It is possible to create a "watchtower service": a single watchtower software with a single identity managing multiple channels at one central location. This is not difficult to do, but Kchannels cannot be the one to offer such a service as this would be effectively equivalent to Light Mode.
Watchtower Mode can be useful for several use-cases:
- A merchant might integrate it with their order-processing software to ensure every incoming transaction corresponds to an existing order (a transaction object has a reference data field which can be used to pass through any reference data). This can be especially important if the merchant has committed to covering their customers' transaction fees.
- A merchant might use this as an additional layer of security to augment Kchannels' own, as they would be receiving a large number of transactions at various channels, and a watchtower can help manage their significantly higher balances before they are consolidated and withdrawn at the end of a business day.
- Any user who wants to reject unwanted transactions, such as airdrops and other types of dust/spam.
To turn on Watchtower Mode, a user sets the channel definition's validator address field to his watchtower address and then updates the zone with his watchtower's URI.
Watchtower Mode and the watchtower software will be released in 2021.