Skip to content

Commit 4686e2b

Browse files
committed
add documentation about VoteCast into the format.md document
1 parent 31fafb4 commit 4686e2b

File tree

3 files changed

+80
-8
lines changed

3 files changed

+80
-8
lines changed

chain-impl-mockchain/doc/format.abnf

+6-6
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ IOW = BLOCK-DATE ; end validity of this IOW
202202
*INPUT ; as many as indicated in the number of inputs
203203
*OUTPUT ; sa many as indicated in the number of outputs
204204
*WITNESS ; as many as indicated in the number of inputs
205-
INPUT = INPUT-UTXO / INPUT_ACCOUNT
205+
INPUT = INPUT-UTXO / INPUT-ACCOUNT
206206
INPUT-UTXO = IDX VALUE FRAGMENT-ID
207207
INPUT-ACCOUNT = %xff VALUE UNTAG-ACCOUNT-ID
208208
IDX = %x00-fe
@@ -269,9 +269,9 @@ U8 = OCTET ; unsigned integer 8 bit
269269
U16 = 2OCTET ; unsigned integer 16 bit (BE)
270270
U32 = 4OCTET ; unsigned integer 32 bit (BE)
271271
U64 = 8OCTET ; unsigned integer 64 bit (BE)
272-
SIZE-BYTES-32BYTE = 320CTET ; unsigned integer 256 bit (32 bytes) (BE)
273-
SIZE-BYTES-64BYTE = 640CTET ; unsigned integer 512 bit (64 bytes) (BE)
274-
SIZE-BYTES-65BYTE = 650CTET ; unsigned integer 520 bit (65 bytes) (BE)
272+
SIZE-BYTES-32BYTE = 32OCTET ; unsigned integer 256 bit (32 bytes) (BE)
273+
SIZE-BYTES-64BYTE = 64OCTET ; unsigned integer 512 bit (64 bytes) (BE)
274+
SIZE-BYTES-65BYTE = 65OCTET ; unsigned integer 520 bit (65 bytes) (BE)
275275
SCALAR = SIZE-BYTES-32BYTE
276-
GROUP-ELEMENT = SIZE-BYTES-65BYTE ; ristretto255 backend (build with the feature=ristretto255, it is enabled by default)
277-
/ SIZE-BYTES-32BYTE ; p256k1 backend (build with the feature=p256k1)
276+
GROUP-ELEMENT = SIZE-BYTES-32BYTE ; ristretto255 backend (build with the feature=ristretto255, it is enabled by default)
277+
/ SIZE-BYTES-65BYTE ; p256k1 backend (build with the feature=p256k1)

chain-impl-mockchain/doc/format.md

+73-1
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,78 @@ message, `VoterId` is an ed25519 extended public key, and `Signature`
304304
is a signature by the corresponding secret key over `ProposalId |
305305
VoterId`.
306306

307+
## Type 11: Vote Cast
308+
309+
VoteCast message is used to vote for a particular voting event.
310+
311+
Full fragment representation in hex:
312+
```
313+
00000572000b93c52748d7f75ffb0267846af7b3ca5228d7a210908be3fc963f227ab7f039f81f0203bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b4979698590263054c03526a8ba6ca343ed1fcf61bb3b82821d0f2361f541727a3e85f0d1a55aa1abc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b4979698590263054c03526a8ba6ca343ed1fcf61bb3b82821d0f2361f541727a3e85f0d1a55aa1abc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305f0d6dd25bab8405561d5bb817d9b20236bd5bb88c21b73afc09818ce5c5e483302864143d55bdc29e4f86db8fc1fdee2e1e9cd7062e5e2fb5ca52f581fdb7cd75b5e7836744ecbac60802ca39e3d92ebdac06479ec27b410140488bcb73ff76f3bcaa135fe2f52ed3fcee49e7e44feb9948ab2ee242c052fb24fe03e74f5d31f4eda0263ac2b0fddb4b56a7210e892f306b2bec41a0e9f6d713980753418ca1a6f5e7d4ad2a52627d4f72d86757a052794d07798178b5e05068993222bf167af74d40b167e06b063ec6f7fdd7a907b27a030197c4d7e5b53e9828be208ba94e64ef286a900fe795a3219e1dc23a4b033ca300cbf350d48d655bcb6ce5de7bf007a2a0ee3305468ba753fca17f700d102e665115acfc0653c8636e06aee4688ed6ca2db9928191c9e6c930f9a2ebda82c58eb7481dee601905713a593f33ce23f4e0ca87a1b487a36544d10c6bffeb83c3e897f968cba066471dd0cfe540dfeee2a9ef2f8441c4cce519a90820147be22efbe06d9b20d72ed3fe3ffe4198dac020459a4e56d0f4beb687661c9c38777c4034c6dd0d5efbaa713df7971fbf23b1e0532c5813d8fdff7e4dd3ea3da8755ea457a0ca5681c555dccd915db9530c0f20aeba371fc09b1524dbef709694f1ef87d168392dfb9a17b23e05980436e2c4e0b5aa4653e54062da822e6849d45ffa8ad7b8d9e258124ecd5adb99c4986cd3907e7a24b5b93fe207cfe8d7ebf927f3932b314c649ec18b19958c9b5d63c44260921b79b3d5bd79021901e2a7f4de8ad42fd677b3f033cf1b0f2151cc221703105000000010000000005001d000000000000003433503f28035b5b470f3c38571e1748474e191c362c583057472941066031093e1e000000000000003d23541c2c601e5e281533631c284a2c093437044a0c07545e5505341b1e4722330700000000000000284f51171a2b5b0a2e4632452d125b3451170a004d182235390f484c2d1f2e22354300000000000000122a0e5d3608025f4b1b10281e2f2e252d2b56251734541e4e5520414e5c58071e4200000000000000322c083a41035741182e471b0d4c1f0c0732221f0314034d293731151633441c00020000002a1f4417144c2d542c156063336331613d1e5654182c63634705275e1822585d37095f625305234f4f3d1d263615601a385d0335095a3e1903052a0b0f1954264a020000005e303a062f2f322f3253570e032149372e550f2a4d23225a5946482d5e393914090811033e0704491716142d2e2b0a004d3a5e613f1653063147505b053806145000480e0a7115af2e40dc5e9c1890fcda18ca4b60ec5d1393d1416e9eafe537ec82000000000000000000000000000000000000000000000000000000000000000002280f130c2d092c3c2d5f012c611f4e5c624a094121393316185f4a1a461e105f2a522b24153f0a2c441a4f013f5c03032a46561e231e114246391e26470c2b02000000431c074c29614b622b23044502565a0e1b3c081c370557075f1f1e59594609474b01335b2754283211422a5458325a06090b502e524a352e2d425c18043b38572b0200000045630b03625210214c3a5a4d2731380f37313b50100b1d0a373754471e1e593234013461623256024d5a130354302e463344161d17103c4e272e31114d311e0402
314+
```
315+
1. Fragment size (u32): `00000572`
316+
2. `00`
317+
3. Fragment id tag (u8): `0b` == `11` (it is equal to VoteCast tag)
318+
4. Vote plan id (32 byte hash): `93c52748d7f75ffb0267846af7b3ca5228d7a210908be3fc963f227ab7f039f8`
319+
5. Proposal index (u8): `1f`
320+
6. Payload type tag (u8): `02`
321+
7. Encrypted vote: `03|bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305|4c03526a8ba6ca343ed1fcf61bb3b82821d0f2361f541727a3e85f0d1a55aa1a|bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305|4c03526a8ba6ca343ed1fcf61bb3b82821d0f2361f541727a3e85f0d1a55aa1a|bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305|f0d6dd25bab8405561d5bb817d9b20236bd5bb88c21b73afc09818ce5c5e4833`
322+
- size (u8): `03`
323+
- ciphertext (group element (32 byte), group element (32 byte)): `bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305|4c03526a8ba6ca343ed1fcf61bb3b82821d0f2361f541727a3e85f0d1a55aa1a|bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305|4c03526a8ba6ca343ed1fcf61bb3b82821d0f2361f541727a3e85f0d1a55aa1a|bc02c5ed4c96454223b073ec02f8a941e7dd58abcdefa547b497969859026305|f0d6dd25bab8405561d5bb817d9b20236bd5bb88c21b73afc09818ce5c5e4833`
324+
8. Proof: `02|864143d55bdc29e4f86db8fc1fdee2e1e9cd7062e5e2fb5ca52f581fdb7cd75b|5e7836744ecbac60802ca39e3d92ebdac06479ec27b410140488bcb73ff76f3b|caa135fe2f52ed3fcee49e7e44feb9948ab2ee242c052fb24fe03e74f5d31f4e|da0263ac2b0fddb4b56a7210e892f306b2bec41a0e9f6d713980753418ca1a6f|5e7d4ad2a52627d4f72d86757a052794d07798178b5e05068993222bf167af74|d40b167e06b063ec6f7fdd7a907b27a030197c4d7e5b53e9828be208ba94e64e|f286a900fe795a3219e1dc23a4b033ca300cbf350d48d655bcb6ce5de7bf007a|2a0ee3305468ba753fca17f700d102e665115acfc0653c8636e06aee4688ed6c|a2db9928191c9e6c930f9a2ebda82c58eb7481dee601905713a593f33ce23f4e|0ca87a1b487a36544d10c6bffeb83c3e897f968cba066471dd0cfe540dfeee2a|9ef2f8441c4cce519a90820147be22efbe06d9b20d72ed3fe3ffe4198dac0204|59a4e56d0f4beb687661c9c38777c4034c6dd0d5efbaa713df7971fbf23b1e05|32c5813d8fdff7e4dd3ea3da8755ea457a0ca5681c555dccd915db9530c0f20a|eba371fc09b1524dbef709694f1ef87d168392dfb9a17b23e05980436e2c4e0b|5aa4653e54062da822e6849d45ffa8ad7b8d9e258124ecd5adb99c4986cd3907|e7a24b5b93fe207cfe8d7ebf927f3932b314c649ec18b19958c9b5d63c442609|21b79b3d5bd79021901e2a7f4de8ad42fd677b3f033cf1b0f2151cc221703105`
325+
- size (u8): `02`
326+
- announcements (group element (32 byte), group element (32 byte), group element (32 byte)): `864143d55bdc29e4f86db8fc1fdee2e1e9cd7062e5e2fb5ca52f581fdb7cd75b|5e7836744ecbac60802ca39e3d92ebdac06479ec27b410140488bcb73ff76f3b|caa135fe2f52ed3fcee49e7e44feb9948ab2ee242c052fb24fe03e74f5d31f4e|da0263ac2b0fddb4b56a7210e892f306b2bec41a0e9f6d713980753418ca1a6f|5e7d4ad2a52627d4f72d86757a052794d07798178b5e05068993222bf167af74|d40b167e06b063ec6f7fdd7a907b27a030197c4d7e5b53e9828be208ba94e64e`
327+
- ciphertext (group element (32 byte), group element (32 byte)): `f286a900fe795a3219e1dc23a4b033ca300cbf350d48d655bcb6ce5de7bf007a|2a0ee3305468ba753fca17f700d102e665115acfc0653c8636e06aee4688ed6c|a2db9928191c9e6c930f9a2ebda82c58eb7481dee601905713a593f33ce23f4e|0ca87a1b487a36544d10c6bffeb83c3e897f968cba066471dd0cfe540dfeee2a`
328+
- response randomness (scalar (32 byte), scalar (32 byte), scalar (32 byte)): `9ef2f8441c4cce519a90820147be22efbe06d9b20d72ed3fe3ffe4198dac0204|59a4e56d0f4beb687661c9c38777c4034c6dd0d5efbaa713df7971fbf23b1e05|32c5813d8fdff7e4dd3ea3da8755ea457a0ca5681c555dccd915db9530c0f20a|eba371fc09b1524dbef709694f1ef87d168392dfb9a17b23e05980436e2c4e0b|5aa4653e54062da822e6849d45ffa8ad7b8d9e258124ecd5adb99c4986cd3907|e7a24b5b93fe207cfe8d7ebf927f3932b314c649ec18b19958c9b5d63c442609`
329+
- scalar (32 byte): `21b79b3d5bd79021901e2a7f4de8ad42fd677b3f033cf1b0f2151cc221703105`
330+
9. IOW stand for Inputs-Outputs-Witnesses: `000000010000000005001d000000000000003433503f28035b5b470f3c38571e1748474e191c362c583057472941066031093e1e000000000000003d23541c2c601e5e281533631c284a2c093437044a0c07545e5505341b1e4722330700000000000000284f51171a2b5b0a2e4632452d125b3451170a004d182235390f484c2d1f2e22354300000000000000122a0e5d3608025f4b1b10281e2f2e252d2b56251734541e4e5520414e5c58071e4200000000000000322c083a41035741182e471b0d4c1f0c0732221f0314034d293731151633441c00020000002a1f4417144c2d542c156063336331613d1e5654182c63634705275e1822585d37095f625305234f4f3d1d263615601a385d0335095a3e1903052a0b0f1954264a020000005e303a062f2f322f3253570e032149372e550f2a4d23225a5946482d5e393914090811033e0704491716142d2e2b0a004d3a5e613f1653063147505b053806145000480e0a7115af2e40dc5e9c1890fcda18ca4b60ec5d1393d1416e9eafe537ec82000000000000000000000000000000000000000000000000000000000000000002280f130c2d092c3c2d5f012c611f4e5c624a094121393316185f4a1a461e105f2a522b24153f0a2c441a4f013f5c03032a46561e231e114246391e26470c2b02000000431c074c29614b622b23044502565a0e1b3c081c370557075f1f1e59594609474b01335b2754283211422a5458325a06090b502e524a352e2d425c18043b38572b0200000045630b03625210214c3a5a4d2731380f37313b50100b1d0a373754471e1e593234013461623256024d5a130354302e463344161d17103c4e272e31114d311e0402`
331+
- block date (epoch (u32), slot (u32)): `00000001|00000000`
332+
- number of inputs and witnesses (u8): `05`
333+
- number of outputs (u8): `00`
334+
- Inputs
335+
1.
336+
- index or accout (u8): `1d` (index)
337+
- value (u64): `0000000000000034`
338+
- input pointer (32 byte): `33503f28035b5b470f3c38571e1748474e191c362c583057472941066031093e`
339+
2.
340+
- index or accout (u8): `1e` (index)
341+
- value (u64): `000000000000003d`
342+
- input pointer (32 byte): `23541c2c601e5e281533631c284a2c093437044a0c07545e5505341b1e472233`
343+
3.
344+
- index or accout (u8): `07` (index)
345+
- value (u64): `0000000000000028`
346+
- input pointer (32 byte): `4f51171a2b5b0a2e4632452d125b3451170a004d182235390f484c2d1f2e2235`
347+
4.
348+
- index or accout (u8): `43` (index)
349+
- value (u64): `0000000000000012`
350+
- input pointer (32 byte): `2a0e5d3608025f4b1b10281e2f2e252d2b56251734541e4e5520414e5c58071e`
351+
5.
352+
- index or accout (u8): `42` (index)
353+
- value (u64): `0000000000000032`
354+
- input pointer (32 byte): `2c083a41035741182e471b0d4c1f0c0732221f0314034d293731151633441c00`
355+
- Witnesses
356+
1.
357+
- witness type tag (u8): `02`
358+
- nonce (u32): `0000002a`
359+
- legacy signature (64 byte): `1f4417144c2d542c156063336331613d1e5654182c63634705275e1822585d37095f625305234f4f3d1d263615601a385d0335095a3e1903052a0b0f1954264a`
360+
2.
361+
- witness type tag (u8): `02`
362+
- nonce (u32): `0000005e`
363+
- signature (64 byte): `303a062f2f322f3253570e032149372e550f2a4d23225a5946482d5e393914090811033e0704491716142d2e2b0a004d3a5e613f1653063147505b0538061450`
364+
3.
365+
- witness type tag (u8): `00`
366+
- legacy public key (64 byte): `480e0a7115af2e40dc5e9c1890fcda18ca4b60ec5d1393d1416e9eafe537ec820000000000000000000000000000000000000000000000000000000000000000`
367+
- legacy signature (64 byte): `02280f130c2d092c3c2d5f012c611f4e5c624a094121393316185f4a1a461e105f2a522b24153f0a2c441a4f013f5c03032a46561e231e114246391e26470c2b`
368+
4.
369+
- witness type tag (u8): `02`
370+
- nonce (u32): `00000043`
371+
- signature (64 byte): `303a062f2f322f3253570e032149372e550f2a4d23225a5946482d5e393914090811033e0704491716142d2e2b0a004d3a5e613f1653063147505b0538061450`
372+
4.
373+
- witness type tag (u8): `02`
374+
- nonce (u32): `00000045`
375+
- signature (64 byte): `630b03625210214c3a5a4d2731380f37313b50100b1d0a373754471e1e593234013461623256024d5a130354302e463344161d17103c4e272e31114d311e0402`
376+
377+
378+
307379
## Shared formats
308380

309381
Delegation Type has 3 different encodings:
@@ -347,4 +419,4 @@ Ratio Delegation of:
347419
f0 f0 f0 03 ab ab ab ab ab ab ab ab ab ab ab ab
348420
ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
349421
ab ab ab ab
350-
```
422+
```

chain-impl-mockchain/src/fragment/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ impl Serialize for Fragment {
234234
Fragment::UpdateProposal(proposal) => proposal.serialize(&mut tmp)?,
235235
Fragment::UpdateVote(vote) => vote.serialize(&mut tmp)?,
236236
Fragment::VotePlan(vote_plan) => vote_plan.serialize(&mut tmp)?,
237-
Fragment::VoteCast(vote_plan) => vote_plan.serialize(&mut tmp)?,
237+
Fragment::VoteCast(vote_cast) => vote_cast.serialize(&mut tmp)?,
238238
Fragment::VoteTally(vote_tally) => vote_tally.serialize(&mut tmp)?,
239239
Fragment::MintToken(mint_token) => mint_token.serialize(&mut tmp)?,
240240
Fragment::Evm(deployment) => deployment.serialize(&mut tmp)?,

0 commit comments

Comments
 (0)