Comment les ensembles sont-ils sérialisés dans Tezos?
Oct 15 2020
La structure mathématique d'un ensemble est une collection non ordonnée. Si un ensemble n'a pas de commande, comment sont-ils sérialisés par l' PACKinstruction?
Selon cet aperçu, il set est compressible.
Réponses
3 ThorkilVærge Oct 15 2020 at 21:41
Les ensembles sont sérialisés en classant d'abord les éléments, puis en les regroupant sous forme de séquence, ce qui correspond également à la représentation des listes lors de leur PACKappel. Cela signifie que ces deux expressions ont la même valeur, puisqu'elles sont d'abord triées, puis sérialisées.
ligo interpret -s pascaligo 'Bytes.pack(set [ 1; 2; 3; 4 ])'
ligo interpret -s pascaligo 'Bytes.pack(set [ 4; 2; 3; 1 ])'
Les deux produisent le même tableau d'octets
0x0502000000080001000200030004
Où
05est le préfixe de toute sortie de l'PACKinstruction02est l'étiquette du type de séquence00000008sont les quatre octets indiquant la taille des valeurs à venir, en octets0001000200030004sont ensuite des nombres1,2,3,4encodés avec d'abord une00étiquette pour indiquer qu'il s'agit d'un entier, et les nombres01, ...04sont l'encodage des nombres réels.