Rusty Russell [ARCHIVE] on Nostr: 📅 Original date posted:2015-10-27 📝 Original message: Pierre <pm+lists at ...
📅 Original date posted:2015-10-27
📝 Original message:
Pierre <pm+lists at acinq.fr> 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.
📝 Original message:
Pierre <pm+lists at acinq.fr> 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.