Watchtowers
Watchtowers make mobile wallets more powerful (or wallets that are not online 24x7). They keep track of channels for the client.
There is a nice podcast with Conner Fromknecht about it: https://stephanlivera.com/episode/83
Workings
At a high level, the lookout service receives input via two sources: block events and it's database. Incoming state updates are continually written to the database, and are made available to the lookout as soon as the tower successfully persists the encrypted blob. As new blocks come in, the tower searches for any breach hints matching the txid prefixes contained in the newly found block. If any matches are generated from the query, the lookout service will dispatch an attempt to decrypt and sweep the transaction on behalf of the user.
Lookout part
Handles the responsibility of monitoring the chain for possible breaches and responding by decrypting and broadcasting any justice transactions that its clients had previously uploaded.
Watchtower / server , standalone
Receives and stores encrypted blobs from clients, this represents that second primary service enabling the tower to act on behalf of the tower's clients.
LND
LND had watchtowers since 0.7. You need to add make install tags=watchtowerrpc to your make command to enable the rpc commands.
Status
Template:INFO:LND 0.7-beta has (altruistic) watchtowers
- breach monitoring
- Merged on 2019-01-16 : https://github.com/lightningnetwork/lnd/pull/2448 (This PR does not expose the watchtower configuration options in LND's config, it only adds the struct that will later be embedded. Further, the configuration options are only available in experimental builds as there are few moving parts of the protocol that should be solidified before attempting to operate a tower.)
- Merged around 2019-03-19: https://github.com/lightningnetwork/lnd/pull/2618
- "watchtower/wtwire/features: make wtwire features uniform" https://github.com/lightningnetwork/lnd/pull/2605
- "watchtower/wtclient: weight + sweep pkscript fixups" https://github.com/lightningnetwork/lnd/pull/2604
- "watchtower: client justice transaction creation + blob encryption" https://github.com/lightningnetwork/lnd/pull/2516
- "watchtower/multi: send connection features + chain hash in Init" https://github.com/lightningnetwork/lnd/pull/2606