Skip to content

Commit a9835d2

Browse files
committed
update format.abnf
1 parent 439f084 commit a9835d2

File tree

1 file changed

+59
-1
lines changed

1 file changed

+59
-1
lines changed

src/chain-libs/chain-impl-mockchain/doc/format.abnf

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ FRAGMENT-SPEC = %x00 INITIAL
4444
/ %x07 POOL-UPDATE
4545
/ %x08 UPDATE-PROPOSAL
4646
/ %x09 UPDATE-VOTE
47+
/ %x0a VOTE-PLAN
48+
/ %x0b VOTE-CAST
49+
/ %x0c VOTE-TALLY
50+
/ %x0d MINT-TOKEN
51+
/ %x0e EVM
52+
/ %x0f EVM-MAPPING
4753

4854
; ####################
4955
; FRAGMENT only present in genesis block
@@ -139,6 +145,52 @@ CHANGES = SIZE-ELEMENT-16BIT ; number of changes
139145

140146
PROPOSAL-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 = %x01 CHOICE; Public payload
168+
/ %x02 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 = %x01 ; Public payload
183+
/ %x02 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
155207
INPUT-UTXO = IDX VALUE FRAGMENT-ID
156208
INPUT-ACCOUNT = %xff VALUE UNTAG-ACCOUNT-ID
157209
IDX = %x00-fe
@@ -218,3 +270,9 @@ U8 = OCTET ; unsigned integer 8 bit
218270
U16 = 2OCTET ; unsigned integer 16 bit (BE)
219271
U32 = 4OCTET ; unsigned integer 32 bit (BE)
220272
U64 = 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

Comments
 (0)