@@ -44,6 +44,12 @@ FRAGMENT-SPEC = %x00 INITIAL
4444 / %x 07 POOL-UPDATE
4545 / %x 08 UPDATE-PROPOSAL
4646 / %x 09 UPDATE-VOTE
47+ / %x 0a VOTE-PLAN
48+ / %x 0b VOTE-CAST
49+ / %x 0c VOTE-TALLY
50+ / %x 0d MINT-TOKEN
51+ / %x 0e EVM
52+ / %x 0f EVM-MAPPING
4753
4854; ####################
4955; FRAGMENT only present in genesis block
@@ -139,6 +145,52 @@ CHANGES = SIZE-ELEMENT-16BIT ; number of changes
139145
140146PROPOSAL-ID = FRAGMENT-ID
141147
148+
149+ ; ####################
150+ ; FRAGMENT Vote plan, vote cast, vote tally
151+ ; ####################
152+
153+ VOTE-PLAN = PLAN-CERT IOW ED25519-SIGNATURE
154+ VOTE-CAST = CAST-CERT IOW
155+ VOTE-TALLY = TALLY-CERT IOW
156+
157+ PLAN-CERT = VOTE-START VOTE-END COMMITTE-END PROPOSALS PAYLOAD-TYPE
158+
159+ VOTE-START = BLOCK-DATE
160+ VOTE-END = BLOCK-DATE
161+ COMMITTE-END = BLOCK-DATE
162+ PROPOSALS = SIZE-ELEMENT-8BIT * PROPOSAL-ELEMENT
163+ PROPOSAL-ELEMENT = TODO
164+
165+ CAST-CERT = VOTE-PLAN-ID PROPOSAL-INDEX CAST-PAYLOAD
166+ PROPOSAL-INDEX = U8
167+ CAST-PAYLOAD = %x 01 CHOICE ; Public payload
168+ / %x 02 ENCRYPTED-VOTE PROOF-VOTE ; Private payload
169+ CHOICE = U8
170+ ENCRYPTED-VOTE = SIZE-ELEMENT-8BIT * CYPHERTEXT
171+ CYPHERTEXT = E1 E2
172+ PROOF-VOTE = SIZE-ELEMENT-8BIT * ANNOUNCEMENT * CYPHERTEXT * R-RESPONSE SCALAR ; size of the *ANNOUNCEMENT, *CYPHERTEXT, *R-RESPONSE are equal to SIZE-ELEMENT-8BIT value
173+ ANNOUNCEMENT = I A B
174+ R-RESPONSE = 3 * SCALAR
175+ I = GROUP-ELEMENT
176+ A = GROUP-ELEMENT
177+ B = GROUP-ELEMENT
178+ E1 = GROUP-ELEMENT
179+ E2 = GROUP-ELEMENT
180+
181+ TALLY-CERT = VOTE-PLAN-ID TALLY-PAYLOAD
182+ TALLY-PAYLOAD = %x 01 ; Public payload
183+ / %x 02 PRIVATE-TALLY ; Private payload
184+ PRIVATE-TALLY = SIZE-ELEMENT-8BIT * TALLY-ELEMENT
185+ TALLY-ELEMENT = MEMBERS-SIZE OPTIONS-SIZE * MEMBER-ELEMENT * OPTION-ELEMENT
186+ MEMBERS-SIZE = SIZE-ELEMENT-8BIT
187+ OPTIONS-SIZE = SIZE-ELEMENT-8BIT
188+ MEMBER-ELEMENT = * SHARE-ELEMENT ; size is equal to the OPTIONS-SIZE value
189+ SHARE-ELEMENT = SIZE-ELEMENT-64BIT SIZE-ELEMENT-65BIT
190+ OPTION-ELEMENT = U64
191+
192+ VOTE-PLAN-ID = 32OCTET
193+
142194; ####################
143195; TRANSACTION CONSTRUCTION
144196;
@@ -151,7 +203,7 @@ IOW = BLOCK-DATE ; end validity of this IOW
151203 * INPUT ; as many as indicated in the number of inputs
152204 * OUTPUT ; sa many as indicated in the number of outputs
153205 * WITNESS ; as many as indicated in the number of inputs
154- INPUT = INPUT-UTXO / INPUT _ ACCOUNT
206+ INPUT = INPUT-UTXO / INPUT-ACCOUNT
155207INPUT-UTXO = IDX VALUE FRAGMENT-ID
156208INPUT-ACCOUNT = %x ff VALUE UNTAG-ACCOUNT-ID
157209IDX = %x 00 -fe
@@ -218,3 +270,9 @@ U8 = OCTET ; unsigned integer 8 bit
218270U16 = 2OCTET ; unsigned integer 16 bit (BE)
219271U32 = 4OCTET ; unsigned integer 32 bit (BE)
220272U64 = 8OCTET ; unsigned integer 64 bit (BE)
273+ SIZE-BYTES-32BYTE = 32OCTET ; unsigned integer 256 bit (32 bytes) (BE)
274+ SIZE-BYTES-64BYTE = 64OCTET ; unsigned integer 512 bit (64 bytes) (BE)
275+ SIZE-BYTES-65BYTE = 65OCTET ; unsigned integer 520 bit (65 bytes) (BE)
276+ SCALAR = SIZE-BYTES-32BYTE
277+ GROUP-ELEMENT = SIZE-BYTES-32BYTE ; ristretto255 backend (build with the feature=ristretto255, it is enabled by default)
278+ / SIZE-BYTES-65BYTE ; p256k1 backend (build with the feature=p256k1)
0 commit comments