From rusty at rustcorp.com.au Tue Oct 27 19:41:20 2015 From: rusty at rustcorp.com.au (Rusty Russell) Date: Wed, 28 Oct 2015 06:11:20 +1030 Subject: [Lightning-dev] [PATCH v3] daemon: encrypted communication (version 3) In-Reply-To: References: <87twpibc7m.fsf@rustcorp.com.au> Message-ID: <87io5sw13z.fsf@rustcorp.com.au> Pierre writes: > Hi Rusty, > >> 5) Unknown protobuf fields are handled in the protocol as follows >> (including in the initial Authenticate packet): >> >> 1) Odd numbered fields are optional, and backwards compatible. >> 2) Even numbered fields are required; abort if you get one. > > I don't get it, what is it about ? Yes, I really need to write this up in Matsjj's lightning-core docs repository. Since protobuf fields are explicitly numbered, we can use this to deliberately break backwards compatibility in future after some transition. For example, if we want to add a "currency identifier" field in HTLC, for non-bitcoin transactions. That would be an even numbered field, since you need to understand it. (There would also need to be some way to indicate you support those, during connection setup or something). But if we want to add an optional new field, we'd make it odd, and existing implementations could ignore it. Cheers, Rusty.