<div>Good morning Laolu,<br></div><div><br></div><div> <br></div><blockquote type="cite" class="protonmail_quote"><div dir="ltr"><div>Hi ZmnSCPxj,&nbsp;<br></div><div><br></div><div>&gt; It seems to me, that the only safe way to implement a trustless WatchTower,<br></div><div>&gt; is for the node to generate a fully-signed justice transaction, IMMEDIATELY<br></div><div>&gt; after every commitment transaction is revoked, and transmit it to the<br></div><div>&gt; WatchTower.<br></div><div><br></div><div>No, one doesn't need to transmit the entire justice transaction. Instead,<br></div><div>the client simply sends out the latest items in the script template, and a<br></div><div>series of _signatures_ for the various breach outputs. The pre-generated<br></div><div>signature means that the server is *forced* to reproduce the justice<br></div><div>transaction that satisfies the latest template and signature. Upfront, free<br></div><div>parameters such as breach bonus (or w/e else) can be negotiated.<br></div></div></blockquote><div><br></div><div>Thank you, I understand.<br></div><div><br></div><blockquote type="cite" class="protonmail_quote"><div dir="ltr"><div>As a result of these downside, our current implementation goes back to the<br></div><div>ol' "encrypted blob" approach. One immediate benefit with this approach is<br></div><div>that the outsourcing protocol isn't so coupled with the current _commitment<br></div><div>protocol_. Instead, the internal payload can be typed, allowing the server<br></div><div>to dispatch the proper breach protocol based on the commitment type. The<br></div><div>blob approach can also support a "swap" protocol which is required for<br></div><div>commitment designs that allow for O(1) outsourcer state per-client, like the<br></div><div>scheme I presented at the last Scaling Bitcoin.<br></div></div></blockquote><div><br></div><div>Can you describe the "encrypted blob" approach to me? Or point me to materials?<br></div><div><br></div><div>I imagine that in this case, the protected node hands a (txid, blob) pair to the WatchTower.&nbsp; If the WatchTower sees a transaction that matches the given txid, it gets some information from the actual transaction to decrypt the blob (e.g. use the encrypted commitment index in `nLockTime` and `nSequence` as a decryption key); the blob is the justice transaction (or just a template type and its signatures as you describe above).<br></div><div><br></div><div>Do you have a description of the WatchTower protocol used in lnd? It may be useful to be intercompatible.<br></div><div><br></div><div>Regards,<br></div><div>ZmnSCPxj<br></div>