diff --git a/zip-0302.rst b/zip-0302.rst index 3ac447d4..d5cd50f0 100644 --- a/zip-0302.rst +++ b/zip-0302.rst @@ -48,13 +48,10 @@ contents of a memo. It does not define consensus requirements. + Interpret the next few bytes (1 to 9 of them) as a 64-bit unsigned variable-length integer [#Bitcoin-CompactSize]_, and use it as an arbitrary application-defined "type" field. - + Interpret the next bytes (1 to 2 of them) as a 16-bit unsigned ULEB, and use it as - the length field. (The length can be at most 510 bytes due to the overall memo - length, and that is why the length field can only be 1 or 2 bytes.) + + Interpret the next 1 or 2 bytes as a CompactSize value constrained to the range 0..510, and use + the resulting value as the length of the remaining data. + If 1 + the number bytes used for the type field + the number of bytes used for the - length field + the length > 512 then error out, i.e. do not do any further - processing of the memo, and do not return any information about the memo to the - caller other than the fact that it was incorrectly formatted. + length field + the length > 512 then report an error. + Inspect the padding after the end of the indicated length, and if it contains anything other than bytes of value 0x00 then report an error. + Return to the caller a 3-tuple of the following data: