@maci-protocol/website 0.0.0-ci.b4e6be4 → 0.0.0-ci.ba57a70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/blog/2024-12-01-maci-getting-started.md +1 -1
  2. package/blog/2025-03-21-roadmap-2025.md +1 -1
  3. package/package.json +5 -5
  4. package/static/img/circuits/MACI-Circuits.excalidraw +10 -10
  5. package/static/img/circuits/ecdh.svg +1 -1
  6. package/static/img/circuits/messageToCommand.svg +1 -1
  7. package/static/img/circuits/privToPubkey.svg +1 -1
  8. package/static/img/circuits/verifySignature.svg +1 -1
  9. package/static/img/relayer-diagram.png +0 -0
  10. package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
  11. package/versioned_docs/version-v3.x/core-concepts/key-change.md +16 -16
  12. package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
  13. package/versioned_docs/version-v3.x/core-concepts/spec.md +4 -4
  14. package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +2 -2
  15. package/versioned_docs/version-v3.x/core-concepts/workflow.md +7 -1
  16. package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
  17. package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +10 -0
  18. package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +43 -0
  19. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
  20. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
  21. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
  22. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +2 -3
@@ -1,5 +1,5 @@
1
1
  ---
2
- slug: Getting Started MACI
2
+ slug: getting-started-with-maci
3
3
  title: Getting Started with MACI
4
4
  description: Guide to use MACI
5
5
  authors:
@@ -1,5 +1,5 @@
1
1
  ---
2
- slug: 2025 Roadmap
2
+ slug: 2025-Roadmap
3
3
  title: 2025 High Level Roadmap and recap
4
4
  description: High level roadmap for 2025
5
5
  authors:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maci-protocol/website",
3
- "version": "0.0.0-ci.b4e6be4",
3
+ "version": "0.0.0-ci.ba57a70",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -41,10 +41,10 @@
41
41
  "@docusaurus/module-type-aliases": "^3.7.0",
42
42
  "@docusaurus/tsconfig": "^3.7.0",
43
43
  "@docusaurus/types": "^3.7.0",
44
- "@types/node": "^22.13.10",
45
- "@types/react": "^19.0.12",
44
+ "@types/node": "^22.14.1",
45
+ "@types/react": "^19.1.2",
46
46
  "ts-node": "^10.9.2",
47
- "typescript": "^5.8.2"
47
+ "typescript": "^5.8.3"
48
48
  },
49
49
  "browserslist": {
50
50
  "production": [
@@ -61,5 +61,5 @@
61
61
  "engines": {
62
62
  "node": ">=18.0"
63
63
  },
64
- "gitHead": "b10c63bffeb79508fd4f9630008131dae96a4473"
64
+ "gitHead": "2c3ed0b1ce1d00dde36d5bc9faf722ef6d3aeb8d"
65
65
  }
@@ -12077,11 +12077,11 @@
12077
12077
  "locked": false,
12078
12078
  "fontSize": 20,
12079
12079
  "fontFamily": 1,
12080
- "text": "pubKey * privateKey",
12080
+ "text": "publicKey * privateKey",
12081
12081
  "textAlign": "center",
12082
12082
  "verticalAlign": "middle",
12083
12083
  "containerId": "-XP_Ss-4GcmLnrhT4G7Mz",
12084
- "originalText": "pubKey * privateKey",
12084
+ "originalText": "publicKey * privateKey",
12085
12085
  "lineHeight": 1.25,
12086
12086
  "baseline": 18
12087
12087
  },
@@ -13949,11 +13949,11 @@
13949
13949
  "locked": false,
13950
13950
  "fontSize": 20,
13951
13951
  "fontFamily": 1,
13952
- "text": "newPubKey",
13952
+ "text": "newPublicKey",
13953
13953
  "textAlign": "center",
13954
13954
  "verticalAlign": "middle",
13955
13955
  "containerId": "49_rF-LPQl_dpoGGUf9YY",
13956
- "originalText": "newPubKey",
13956
+ "originalText": "newPublicKey",
13957
13957
  "lineHeight": 1.25,
13958
13958
  "baseline": 18
13959
13959
  },
@@ -18353,11 +18353,11 @@
18353
18353
  "locked": false,
18354
18354
  "fontSize": 20,
18355
18355
  "fontFamily": 1,
18356
- "text": "pubKey",
18356
+ "text": "publicKey",
18357
18357
  "textAlign": "center",
18358
18358
  "verticalAlign": "middle",
18359
18359
  "containerId": "8g5cRH2EYThfZ1CncZKDy",
18360
- "originalText": "pubKey",
18360
+ "originalText": "publicKey",
18361
18361
  "lineHeight": 1.25,
18362
18362
  "baseline": 18
18363
18363
  },
@@ -18547,11 +18547,11 @@
18547
18547
  "locked": false,
18548
18548
  "fontSize": 20,
18549
18549
  "fontFamily": 1,
18550
- "text": "privKey",
18550
+ "text": "privateKey",
18551
18551
  "textAlign": "center",
18552
18552
  "verticalAlign": "middle",
18553
18553
  "containerId": "5jFTlfr-jJodJNAsWRM2N",
18554
- "originalText": "privKey",
18554
+ "originalText": "privateKey",
18555
18555
  "lineHeight": 1.25,
18556
18556
  "baseline": 18
18557
18557
  },
@@ -19337,11 +19337,11 @@
19337
19337
  "locked": false,
19338
19338
  "fontSize": 20,
19339
19339
  "fontFamily": 1,
19340
- "text": "pubKey",
19340
+ "text": "publicKey",
19341
19341
  "textAlign": "center",
19342
19342
  "verticalAlign": "middle",
19343
19343
  "containerId": "_h_axBzjA0c2A7WRZMSud",
19344
- "originalText": "pubKey",
19344
+ "originalText": "publicKey",
19345
19345
  "lineHeight": 1.25,
19346
19346
  "baseline": 18
19347
19347
  },
@@ -18,4 +18,4 @@
18
18
  </style>
19
19
 
20
20
  </defs>
21
- <rect x="0" y="0" width="1083.2937218075292" height="395.3140739373331" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(141.5840218900487 153.8873057289922) rotate(0 114.33810379333897 33.80052213620306)"><path d="M16.9 0 C73.02 -2.42, 131.1 -1.65, 211.78 0 M16.9 0 C75.65 0.84, 135.27 0.54, 211.78 0 M211.78 0 C222.39 0.92, 229.73 5.59, 228.68 16.9 M211.78 0 C222.28 1.03, 228.23 5.62, 228.68 16.9 M228.68 16.9 C229.1 28.61, 229.5 41.98, 228.68 50.7 M228.68 16.9 C229.51 26.62, 229.06 36.14, 228.68 50.7 M228.68 50.7 C226.69 63.93, 223.2 65.9, 211.78 67.6 M228.68 50.7 C227.39 62.02, 223.33 67.86, 211.78 67.6 M211.78 67.6 C157.72 67.99, 100.44 67.37, 16.9 67.6 M211.78 67.6 C151.87 67.95, 92.8 69.76, 16.9 67.6 M16.9 67.6 C5.49 66.04, 1.94 61.58, 0 50.7 M16.9 67.6 C6.12 65.73, 0.64 60.75, 0 50.7 M0 50.7 C0.22 44.18, -0.78 34.23, 0 16.9 M0 50.7 C-1.14 43.1, 0.54 35.65, 0 16.9 M0 16.9 C-0.91 6.07, 6.95 1.44, 16.9 0 M0 16.9 C2 7.59, 7.2 1.25, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(229.4321430784072 175.18782786519523) rotate(0 26.48998260498047 12.5)"><text x="26.48998260498047" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">ECDH</text></g><g stroke-linecap="round" transform="translate(270.60606759988264 10) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C65.42 -0.18, 113.18 -0.2, 204.03 0 M16.09 0 C60.44 2.18, 105.98 1.7, 204.03 0 M204.03 0 C214.09 0.9, 219.73 5.35, 220.12 16.09 M204.03 0 C215.87 0.07, 219.21 5.84, 220.12 16.09 M220.12 16.09 C219.65 25.89, 220.87 36.7, 220.12 48.27 M220.12 16.09 C219.23 28.61, 220.3 38.32, 220.12 48.27 M220.12 48.27 C219 59.04, 215.01 64.58, 204.03 64.35 M220.12 48.27 C219.75 60.98, 213.57 65.83, 204.03 64.35 M204.03 64.35 C134.6 65.56, 66.28 63.67, 16.09 64.35 M204.03 64.35 C164.09 65.34, 125.27 65.92, 16.09 64.35 M16.09 64.35 C5.78 62.72, 0.56 57.93, 0 48.27 M16.09 64.35 C3.8 65.22, 1.21 59.39, 0 48.27 M0 48.27 C-1.54 38.24, 1.05 23.02, 0 16.09 M0 48.27 C-0.73 39.59, 0.39 31.21, 0 16.09 M0 16.09 C1.74 7.06, 6.73 1.08, 16.09 0 M0 16.09 C-0.07 7.63, 6.48 1.37, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(282.6637226847922 17.177416550875876) rotate(0 97.99991607666016 25)"><text x="97.99991607666016" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">publicKey (array of </text><text x="97.99991607666016" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">two elements)</text></g><g stroke-linecap="round"><g transform="translate(243.16721166972593 104.21769953343772) rotate(0 -0.44580281989499326 19.782500132839004)"><path d="M-0.05 -0.34 C-0.13 6.24, -0.35 32.37, -0.52 39.06 M-0.74 0.67 C-0.86 7.34, -0.63 33.13, -0.75 39.5" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(243.16721166972593 104.21769953343772) rotate(0 -0.44580281989499326 19.782500132839004)"><path d="M-7.45 20.88 C-6.18 27, -4.52 31.44, -0.75 39.5 M-7.45 20.88 C-5.25 27.55, -2.86 33.77, -0.75 39.5" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(243.16721166972593 104.21769953343772) rotate(0 -0.44580281989499326 19.782500132839004)"><path d="M6.08 20.93 C3.4 27.03, 1.11 31.45, -0.75 39.5 M6.08 20.93 C3.6 27.58, 1.3 33.79, -0.75 39.5" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(288.56892663291774 106.76455453228203) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(299.85516274492034 255.3314622387781) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(238.8742956262929 254.06110846868904) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-0.11 0 C0.04 6.8, 0.66 34.18, 0.71 41.04 M-0.82 -0.48 C-0.71 6.39, 0.32 34.7, 0.42 41.75" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(238.8742956262929 254.06110846868904) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-7.1 22.66 C-5.06 28.25, -3.02 32.46, 0.42 41.75 M-7.1 22.66 C-4.32 28.62, -2.21 35.04, 0.42 41.75" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(238.8742956262929 254.06110846868904) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M6.92 22.29 C5.23 27.96, 3.52 32.28, 0.42 41.75 M6.92 22.29 C5.21 28.39, 2.82 34.94, 0.42 41.75" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(142.31464317820974 320.9592408355813) rotate(0 110.05757116156975 32.177416550875904)"><path d="M16.09 0 C68.92 -1.7, 122.04 -1, 204.03 0 M16.09 0 C80.29 0.87, 144.99 1.15, 204.03 0 M204.03 0 C215.43 1.95, 218.13 7.33, 220.12 16.09 M204.03 0 C214.93 -1.95, 218.83 5.42, 220.12 16.09 M220.12 16.09 C221.88 25.12, 221.43 37.61, 220.12 48.27 M220.12 16.09 C220.48 25.32, 219.54 32.41, 220.12 48.27 M220.12 48.27 C218.99 60.86, 214.61 62.8, 204.03 64.35 M220.12 48.27 C222.35 58.55, 215.24 62.48, 204.03 64.35 M204.03 64.35 C143.16 64.12, 81.14 64.4, 16.09 64.35 M204.03 64.35 C154.66 63.28, 102.7 62.58, 16.09 64.35 M16.09 64.35 C7.04 63.71, -0.91 59.43, 0 48.27 M16.09 64.35 C6.88 66.01, 2 60.95, 0 48.27 M0 48.27 C1.8 37.39, 1.02 23.4, 0 16.09 M0 48.27 C0.55 38.86, -0.04 28.98, 0 16.09 M0 16.09 C0.59 5.15, 5.12 -1.08, 16.09 0 M0 16.09 C1.24 6.73, 6 0.76, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(203.58225920061932 340.63665738645716) rotate(0 48.78995513916015 12.5)"><text x="48.789955139160156" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">sharedKey</text></g><g stroke-linecap="round" transform="translate(551.7094295497407 22.989525621383052) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C73.2 -1.04, 126.96 0.24, 198.87 0 M21.25 0 C83.96 -0.75, 148.73 -2.58, 198.87 0 M198.87 0 C211.91 0.05, 220.37 7.31, 220.12 21.25 M198.87 0 C212.66 1.99, 218.93 8.56, 220.12 21.25 M220.12 21.25 C220.05 37.45, 221.24 51.28, 220.12 63.75 M220.12 21.25 C219.8 29.49, 220.85 39.09, 220.12 63.75 M220.12 63.75 C220.54 76.29, 213.59 83.94, 198.87 85 M220.12 63.75 C218.55 78.78, 214.24 85.4, 198.87 85 M198.87 85 C132.2 86.05, 69.77 82.61, 21.25 85 M198.87 85 C149.34 84.65, 101.39 85.15, 21.25 85 M21.25 85 C8.82 86.7, 1.36 79, 0 63.75 M21.25 85 C7.01 87.27, 1.12 79.29, 0 63.75 M0 63.75 C-0.27 54.51, 0.3 43.07, 0 21.25 M0 63.75 C-0.25 51.27, 0.42 40.46, 0 21.25 M0 21.25 C0.55 7.74, 8.6 -0.69, 21.25 0 M0 21.25 C-0.32 5.82, 5.22 -1.18, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(560.0371041659002 27.989525621383052) rotate(0 101.72989654541016 37.5)"><text x="101.72989654541016" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. Convert the </text><text x="101.72989654541016" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">privateKey to its </text><text x="101.72989654541016" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">bytes representation</text></g><g stroke-linecap="round" transform="translate(550.1254502962602 136.86405287536127) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C76.34 -0.8, 136.19 -3.46, 204.03 0 M16.09 0 C90.36 1.62, 165.88 1.71, 204.03 0 M204.03 0 C214.43 1.73, 219.08 6.64, 220.12 16.09 M204.03 0 C216.36 -0.75, 221 5.45, 220.12 16.09 M220.12 16.09 C218.56 25.39, 222.19 36.81, 220.12 48.27 M220.12 16.09 C220.64 22.42, 220.71 29.85, 220.12 48.27 M220.12 48.27 C218.75 59.74, 215.8 64.7, 204.03 64.35 M220.12 48.27 C221.63 58.24, 213.85 62.47, 204.03 64.35 M204.03 64.35 C130.72 64.45, 57.72 61.86, 16.09 64.35 M204.03 64.35 C144.44 66.56, 83.8 66.25, 16.09 64.35 M16.09 64.35 C5.3 66.33, 0.97 60.18, 0 48.27 M16.09 64.35 C4.01 64.28, -0.27 58.66, 0 48.27 M0 48.27 C-0.43 37.56, -0.26 25.45, 0 16.09 M0 48.27 C0.1 40.68, 0.58 32.08, 0 16.09 M0 16.09 C-0.28 4.26, 3.74 -1.02, 16.09 0 M0 16.09 C1.42 6.22, 4.93 1.22, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(567.1930922586112 144.04146942623714) rotate(0 92.98992919921875 25)"><text x="92.98992919921875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Perform scalar </text><text x="92.98992919921875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">multiplication</text></g><g stroke-linecap="round" transform="translate(554.5545838679946 220.6873664272789) rotate(0 110.05757116156974 55)"><path d="M27.5 0 C84.61 1.79, 136.09 0.52, 192.62 0 M27.5 0 C77.26 0.68, 126.83 0.46, 192.62 0 M192.62 0 C212.34 -0.66, 220.88 9.24, 220.12 27.5 M192.62 0 C211.51 1.45, 218.5 7.15, 220.12 27.5 M220.12 27.5 C219.07 42.83, 220.24 54.71, 220.12 82.5 M220.12 27.5 C219.59 39.89, 220.79 51.71, 220.12 82.5 M220.12 82.5 C221.44 100.18, 210.16 108.36, 192.62 110 M220.12 82.5 C222.13 101.92, 209.01 109.45, 192.62 110 M192.62 110 C129.67 110.56, 67.31 110.98, 27.5 110 M192.62 110 C129.01 111.88, 65.95 111.49, 27.5 110 M27.5 110 C7.99 109.93, -0.23 100.54, 0 82.5 M27.5 110 C10.34 110.33, -0.18 100.4, 0 82.5 M0 82.5 C-1.02 65.47, 1.25 46.83, 0 27.5 M0 82.5 C-0.56 63.63, -1.23 45.36, 0 27.5 M0 27.5 C1.23 9.92, 8.79 1.06, 27.5 0 M0 27.5 C1.76 9.55, 7.64 0.54, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(561.9422331545643 225.6873664272789) rotate(0 102.669921875 50)"><text x="102.669921875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. Shared Key is the</text><text x="102.669921875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">two output elements</text><text x="102.669921875" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">([0] and [1]) of the</text><text x="102.669921875" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">scalar multiplciation</text></g><g transform="translate(426.6654259855982 132.2871750764661) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(409.4888137255391 192.9214962134585) rotate(0 54.0494641083767 -0.8482636989667753)"><path d="M-0.62 0.77 C17.57 0.25, 90.74 -1.69, 108.94 -2.09 M1.26 0.13 C19.38 0.29, 90.63 -0.69, 108.43 -0.76" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(409.4888137255391 192.9214962134585) rotate(0 54.0494641083767 -0.8482636989667753)"><path d="M80.33 9.76 C89.5 8.32, 95.54 4.7, 108.43 -0.76 M80.33 9.76 C88.14 5.51, 96.81 4.13, 108.43 -0.76" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(409.4888137255391 192.9214962134585) rotate(0 54.0494641083767 -0.8482636989667753)"><path d="M80.14 -10.76 C89.54 -6.38, 95.64 -4.16, 108.43 -0.76 M80.14 -10.76 C88.06 -8.78, 96.79 -3.92, 108.43 -0.76" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(10 10.18696194196309) rotate(0 110.05757116156975 32.177416550875904)"><path d="M16.09 0 C90.84 2.6, 160.34 1.58, 204.03 0 M16.09 0 C74.22 2.66, 130.74 1.2, 204.03 0 M204.03 0 C214.98 1.36, 220.66 7.29, 220.12 16.09 M204.03 0 C212.74 -1.44, 218.46 5.7, 220.12 16.09 M220.12 16.09 C219.26 27.12, 219.4 35.44, 220.12 48.27 M220.12 16.09 C220.75 24.26, 220.72 32.98, 220.12 48.27 M220.12 48.27 C221.99 60.05, 213.33 65.67, 204.03 64.35 M220.12 48.27 C220.16 59.75, 216.2 62.19, 204.03 64.35 M204.03 64.35 C146.1 66.61, 87 65.08, 16.09 64.35 M204.03 64.35 C159.86 64.34, 114.42 64.35, 16.09 64.35 M16.09 64.35 C7.16 64.43, -1.57 60.74, 0 48.27 M16.09 64.35 C3.11 64.28, -2.29 59.8, 0 48.27 M0 48.27 C1.5 42.64, -1.67 34.87, 0 16.09 M0 48.27 C-0.06 35.34, 0.59 24.06, 0 16.09 M0 16.09 C0.97 6.51, 6.83 0.74, 16.09 0 M0 16.09 C-2.09 5.03, 7.04 1.8, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(69.32762121039787 29.864378492838966) rotate(0 50.729949951171875 12.5)"><text x="50.729949951171875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">privateKey</text></g><g stroke-linecap="round" transform="translate(853.1785794843897 135.00339353669267) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C77.06 -3.77, 135.77 -3.55, 204.03 0 M16.09 0 C68.34 0.66, 118.92 -0.64, 204.03 0 M204.03 0 C216.21 1.54, 218.98 4.24, 220.12 16.09 M204.03 0 C215.69 -0.48, 218.55 6.74, 220.12 16.09 M220.12 16.09 C219.77 23.6, 221.41 34.51, 220.12 48.27 M220.12 16.09 C218.99 28.53, 220.27 40.67, 220.12 48.27 M220.12 48.27 C220.59 60.82, 213.59 63.68, 204.03 64.35 M220.12 48.27 C220.34 58.71, 212.98 64.53, 204.03 64.35 M204.03 64.35 C139.45 65.33, 76.5 65.74, 16.09 64.35 M204.03 64.35 C153.36 64.66, 103.01 62.9, 16.09 64.35 M16.09 64.35 C5.44 63.59, 0.99 60.43, 0 48.27 M16.09 64.35 C7.61 66.12, -0.1 57.42, 0 48.27 M0 48.27 C1.75 38.04, -1.57 26.6, 0 16.09 M0 48.27 C-0.28 35.55, -0.33 23.33, 0 16.09 M0 16.09 C1.6 3.86, 6.82 -1.51, 16.09 0 M0 16.09 C-0.19 6.45, 4.38 -0.43, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(865.3662394521118 154.6808100875686) rotate(0 97.86991119384766 12.5)"><text x="97.86991119384766" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">pubKey * privateKey</text></g><g stroke-linecap="round"><g transform="translate(785.6942556521292 169.49482019809443) rotate(0 18.9027027744238 -0.6071622858810883)"><path d="M0.23 -0.47 C6.59 -0.64, 31.7 -1.17, 37.96 -1.32 M-0.32 0.48 C6 0.42, 31.32 -0.45, 37.61 -0.68" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(785.6942556521292 169.49482019809443) rotate(0 18.9027027744238 -0.6071622858810883)"><path d="M20.08 6.41 C23.97 4.75, 29.27 2.55, 37.61 -0.68 M20.08 6.41 C24.5 4.41, 29.66 2.77, 37.61 -0.68" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(785.6942556521292 169.49482019809443) rotate(0 18.9027027744238 -0.6071622858810883)"><path d="M19.62 -6.52 C23.6 -4.73, 29.02 -3.48, 37.61 -0.68 M19.62 -6.52 C24.18 -5.12, 29.46 -3.36, 37.61 -0.68" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask></svg>
21
+ <rect x="0" y="0" width="1083.2937218075292" height="395.3140739373331" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(141.5840218900487 153.8873057289922) rotate(0 114.33810379333897 33.80052213620306)"><path d="M16.9 0 C73.02 -2.42, 131.1 -1.65, 211.78 0 M16.9 0 C75.65 0.84, 135.27 0.54, 211.78 0 M211.78 0 C222.39 0.92, 229.73 5.59, 228.68 16.9 M211.78 0 C222.28 1.03, 228.23 5.62, 228.68 16.9 M228.68 16.9 C229.1 28.61, 229.5 41.98, 228.68 50.7 M228.68 16.9 C229.51 26.62, 229.06 36.14, 228.68 50.7 M228.68 50.7 C226.69 63.93, 223.2 65.9, 211.78 67.6 M228.68 50.7 C227.39 62.02, 223.33 67.86, 211.78 67.6 M211.78 67.6 C157.72 67.99, 100.44 67.37, 16.9 67.6 M211.78 67.6 C151.87 67.95, 92.8 69.76, 16.9 67.6 M16.9 67.6 C5.49 66.04, 1.94 61.58, 0 50.7 M16.9 67.6 C6.12 65.73, 0.64 60.75, 0 50.7 M0 50.7 C0.22 44.18, -0.78 34.23, 0 16.9 M0 50.7 C-1.14 43.1, 0.54 35.65, 0 16.9 M0 16.9 C-0.91 6.07, 6.95 1.44, 16.9 0 M0 16.9 C2 7.59, 7.2 1.25, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(229.4321430784072 175.18782786519523) rotate(0 26.48998260498047 12.5)"><text x="26.48998260498047" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">ECDH</text></g><g stroke-linecap="round" transform="translate(270.60606759988264 10) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C65.42 -0.18, 113.18 -0.2, 204.03 0 M16.09 0 C60.44 2.18, 105.98 1.7, 204.03 0 M204.03 0 C214.09 0.9, 219.73 5.35, 220.12 16.09 M204.03 0 C215.87 0.07, 219.21 5.84, 220.12 16.09 M220.12 16.09 C219.65 25.89, 220.87 36.7, 220.12 48.27 M220.12 16.09 C219.23 28.61, 220.3 38.32, 220.12 48.27 M220.12 48.27 C219 59.04, 215.01 64.58, 204.03 64.35 M220.12 48.27 C219.75 60.98, 213.57 65.83, 204.03 64.35 M204.03 64.35 C134.6 65.56, 66.28 63.67, 16.09 64.35 M204.03 64.35 C164.09 65.34, 125.27 65.92, 16.09 64.35 M16.09 64.35 C5.78 62.72, 0.56 57.93, 0 48.27 M16.09 64.35 C3.8 65.22, 1.21 59.39, 0 48.27 M0 48.27 C-1.54 38.24, 1.05 23.02, 0 16.09 M0 48.27 C-0.73 39.59, 0.39 31.21, 0 16.09 M0 16.09 C1.74 7.06, 6.73 1.08, 16.09 0 M0 16.09 C-0.07 7.63, 6.48 1.37, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(282.6637226847922 17.177416550875876) rotate(0 97.99991607666016 25)"><text x="97.99991607666016" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">publicKey (array of </text><text x="97.99991607666016" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">two elements)</text></g><g stroke-linecap="round"><g transform="translate(243.16721166972593 104.21769953343772) rotate(0 -0.44580281989499326 19.782500132839004)"><path d="M-0.05 -0.34 C-0.13 6.24, -0.35 32.37, -0.52 39.06 M-0.74 0.67 C-0.86 7.34, -0.63 33.13, -0.75 39.5" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(243.16721166972593 104.21769953343772) rotate(0 -0.44580281989499326 19.782500132839004)"><path d="M-7.45 20.88 C-6.18 27, -4.52 31.44, -0.75 39.5 M-7.45 20.88 C-5.25 27.55, -2.86 33.77, -0.75 39.5" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(243.16721166972593 104.21769953343772) rotate(0 -0.44580281989499326 19.782500132839004)"><path d="M6.08 20.93 C3.4 27.03, 1.11 31.45, -0.75 39.5 M6.08 20.93 C3.6 27.58, 1.3 33.79, -0.75 39.5" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(288.56892663291774 106.76455453228203) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(299.85516274492034 255.3314622387781) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(238.8742956262929 254.06110846868904) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-0.11 0 C0.04 6.8, 0.66 34.18, 0.71 41.04 M-0.82 -0.48 C-0.71 6.39, 0.32 34.7, 0.42 41.75" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(238.8742956262929 254.06110846868904) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-7.1 22.66 C-5.06 28.25, -3.02 32.46, 0.42 41.75 M-7.1 22.66 C-4.32 28.62, -2.21 35.04, 0.42 41.75" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(238.8742956262929 254.06110846868904) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M6.92 22.29 C5.23 27.96, 3.52 32.28, 0.42 41.75 M6.92 22.29 C5.21 28.39, 2.82 34.94, 0.42 41.75" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(142.31464317820974 320.9592408355813) rotate(0 110.05757116156975 32.177416550875904)"><path d="M16.09 0 C68.92 -1.7, 122.04 -1, 204.03 0 M16.09 0 C80.29 0.87, 144.99 1.15, 204.03 0 M204.03 0 C215.43 1.95, 218.13 7.33, 220.12 16.09 M204.03 0 C214.93 -1.95, 218.83 5.42, 220.12 16.09 M220.12 16.09 C221.88 25.12, 221.43 37.61, 220.12 48.27 M220.12 16.09 C220.48 25.32, 219.54 32.41, 220.12 48.27 M220.12 48.27 C218.99 60.86, 214.61 62.8, 204.03 64.35 M220.12 48.27 C222.35 58.55, 215.24 62.48, 204.03 64.35 M204.03 64.35 C143.16 64.12, 81.14 64.4, 16.09 64.35 M204.03 64.35 C154.66 63.28, 102.7 62.58, 16.09 64.35 M16.09 64.35 C7.04 63.71, -0.91 59.43, 0 48.27 M16.09 64.35 C6.88 66.01, 2 60.95, 0 48.27 M0 48.27 C1.8 37.39, 1.02 23.4, 0 16.09 M0 48.27 C0.55 38.86, -0.04 28.98, 0 16.09 M0 16.09 C0.59 5.15, 5.12 -1.08, 16.09 0 M0 16.09 C1.24 6.73, 6 0.76, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(203.58225920061932 340.63665738645716) rotate(0 48.78995513916015 12.5)"><text x="48.789955139160156" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">sharedKey</text></g><g stroke-linecap="round" transform="translate(551.7094295497407 22.989525621383052) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C73.2 -1.04, 126.96 0.24, 198.87 0 M21.25 0 C83.96 -0.75, 148.73 -2.58, 198.87 0 M198.87 0 C211.91 0.05, 220.37 7.31, 220.12 21.25 M198.87 0 C212.66 1.99, 218.93 8.56, 220.12 21.25 M220.12 21.25 C220.05 37.45, 221.24 51.28, 220.12 63.75 M220.12 21.25 C219.8 29.49, 220.85 39.09, 220.12 63.75 M220.12 63.75 C220.54 76.29, 213.59 83.94, 198.87 85 M220.12 63.75 C218.55 78.78, 214.24 85.4, 198.87 85 M198.87 85 C132.2 86.05, 69.77 82.61, 21.25 85 M198.87 85 C149.34 84.65, 101.39 85.15, 21.25 85 M21.25 85 C8.82 86.7, 1.36 79, 0 63.75 M21.25 85 C7.01 87.27, 1.12 79.29, 0 63.75 M0 63.75 C-0.27 54.51, 0.3 43.07, 0 21.25 M0 63.75 C-0.25 51.27, 0.42 40.46, 0 21.25 M0 21.25 C0.55 7.74, 8.6 -0.69, 21.25 0 M0 21.25 C-0.32 5.82, 5.22 -1.18, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(560.0371041659002 27.989525621383052) rotate(0 101.72989654541016 37.5)"><text x="101.72989654541016" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. Convert the </text><text x="101.72989654541016" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">privateKey to its </text><text x="101.72989654541016" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">bytes representation</text></g><g stroke-linecap="round" transform="translate(550.1254502962602 136.86405287536127) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C76.34 -0.8, 136.19 -3.46, 204.03 0 M16.09 0 C90.36 1.62, 165.88 1.71, 204.03 0 M204.03 0 C214.43 1.73, 219.08 6.64, 220.12 16.09 M204.03 0 C216.36 -0.75, 221 5.45, 220.12 16.09 M220.12 16.09 C218.56 25.39, 222.19 36.81, 220.12 48.27 M220.12 16.09 C220.64 22.42, 220.71 29.85, 220.12 48.27 M220.12 48.27 C218.75 59.74, 215.8 64.7, 204.03 64.35 M220.12 48.27 C221.63 58.24, 213.85 62.47, 204.03 64.35 M204.03 64.35 C130.72 64.45, 57.72 61.86, 16.09 64.35 M204.03 64.35 C144.44 66.56, 83.8 66.25, 16.09 64.35 M16.09 64.35 C5.3 66.33, 0.97 60.18, 0 48.27 M16.09 64.35 C4.01 64.28, -0.27 58.66, 0 48.27 M0 48.27 C-0.43 37.56, -0.26 25.45, 0 16.09 M0 48.27 C0.1 40.68, 0.58 32.08, 0 16.09 M0 16.09 C-0.28 4.26, 3.74 -1.02, 16.09 0 M0 16.09 C1.42 6.22, 4.93 1.22, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(567.1930922586112 144.04146942623714) rotate(0 92.98992919921875 25)"><text x="92.98992919921875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Perform scalar </text><text x="92.98992919921875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">multiplication</text></g><g stroke-linecap="round" transform="translate(554.5545838679946 220.6873664272789) rotate(0 110.05757116156974 55)"><path d="M27.5 0 C84.61 1.79, 136.09 0.52, 192.62 0 M27.5 0 C77.26 0.68, 126.83 0.46, 192.62 0 M192.62 0 C212.34 -0.66, 220.88 9.24, 220.12 27.5 M192.62 0 C211.51 1.45, 218.5 7.15, 220.12 27.5 M220.12 27.5 C219.07 42.83, 220.24 54.71, 220.12 82.5 M220.12 27.5 C219.59 39.89, 220.79 51.71, 220.12 82.5 M220.12 82.5 C221.44 100.18, 210.16 108.36, 192.62 110 M220.12 82.5 C222.13 101.92, 209.01 109.45, 192.62 110 M192.62 110 C129.67 110.56, 67.31 110.98, 27.5 110 M192.62 110 C129.01 111.88, 65.95 111.49, 27.5 110 M27.5 110 C7.99 109.93, -0.23 100.54, 0 82.5 M27.5 110 C10.34 110.33, -0.18 100.4, 0 82.5 M0 82.5 C-1.02 65.47, 1.25 46.83, 0 27.5 M0 82.5 C-0.56 63.63, -1.23 45.36, 0 27.5 M0 27.5 C1.23 9.92, 8.79 1.06, 27.5 0 M0 27.5 C1.76 9.55, 7.64 0.54, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(561.9422331545643 225.6873664272789) rotate(0 102.669921875 50)"><text x="102.669921875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. Shared Key is the</text><text x="102.669921875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">two output elements</text><text x="102.669921875" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">([0] and [1]) of the</text><text x="102.669921875" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">scalar multiplciation</text></g><g transform="translate(426.6654259855982 132.2871750764661) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(409.4888137255391 192.9214962134585) rotate(0 54.0494641083767 -0.8482636989667753)"><path d="M-0.62 0.77 C17.57 0.25, 90.74 -1.69, 108.94 -2.09 M1.26 0.13 C19.38 0.29, 90.63 -0.69, 108.43 -0.76" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(409.4888137255391 192.9214962134585) rotate(0 54.0494641083767 -0.8482636989667753)"><path d="M80.33 9.76 C89.5 8.32, 95.54 4.7, 108.43 -0.76 M80.33 9.76 C88.14 5.51, 96.81 4.13, 108.43 -0.76" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(409.4888137255391 192.9214962134585) rotate(0 54.0494641083767 -0.8482636989667753)"><path d="M80.14 -10.76 C89.54 -6.38, 95.64 -4.16, 108.43 -0.76 M80.14 -10.76 C88.06 -8.78, 96.79 -3.92, 108.43 -0.76" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(10 10.18696194196309) rotate(0 110.05757116156975 32.177416550875904)"><path d="M16.09 0 C90.84 2.6, 160.34 1.58, 204.03 0 M16.09 0 C74.22 2.66, 130.74 1.2, 204.03 0 M204.03 0 C214.98 1.36, 220.66 7.29, 220.12 16.09 M204.03 0 C212.74 -1.44, 218.46 5.7, 220.12 16.09 M220.12 16.09 C219.26 27.12, 219.4 35.44, 220.12 48.27 M220.12 16.09 C220.75 24.26, 220.72 32.98, 220.12 48.27 M220.12 48.27 C221.99 60.05, 213.33 65.67, 204.03 64.35 M220.12 48.27 C220.16 59.75, 216.2 62.19, 204.03 64.35 M204.03 64.35 C146.1 66.61, 87 65.08, 16.09 64.35 M204.03 64.35 C159.86 64.34, 114.42 64.35, 16.09 64.35 M16.09 64.35 C7.16 64.43, -1.57 60.74, 0 48.27 M16.09 64.35 C3.11 64.28, -2.29 59.8, 0 48.27 M0 48.27 C1.5 42.64, -1.67 34.87, 0 16.09 M0 48.27 C-0.06 35.34, 0.59 24.06, 0 16.09 M0 16.09 C0.97 6.51, 6.83 0.74, 16.09 0 M0 16.09 C-2.09 5.03, 7.04 1.8, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(69.32762121039787 29.864378492838966) rotate(0 50.729949951171875 12.5)"><text x="50.729949951171875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">privateKey</text></g><g stroke-linecap="round" transform="translate(853.1785794843897 135.00339353669267) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C77.06 -3.77, 135.77 -3.55, 204.03 0 M16.09 0 C68.34 0.66, 118.92 -0.64, 204.03 0 M204.03 0 C216.21 1.54, 218.98 4.24, 220.12 16.09 M204.03 0 C215.69 -0.48, 218.55 6.74, 220.12 16.09 M220.12 16.09 C219.77 23.6, 221.41 34.51, 220.12 48.27 M220.12 16.09 C218.99 28.53, 220.27 40.67, 220.12 48.27 M220.12 48.27 C220.59 60.82, 213.59 63.68, 204.03 64.35 M220.12 48.27 C220.34 58.71, 212.98 64.53, 204.03 64.35 M204.03 64.35 C139.45 65.33, 76.5 65.74, 16.09 64.35 M204.03 64.35 C153.36 64.66, 103.01 62.9, 16.09 64.35 M16.09 64.35 C5.44 63.59, 0.99 60.43, 0 48.27 M16.09 64.35 C7.61 66.12, -0.1 57.42, 0 48.27 M0 48.27 C1.75 38.04, -1.57 26.6, 0 16.09 M0 48.27 C-0.28 35.55, -0.33 23.33, 0 16.09 M0 16.09 C1.6 3.86, 6.82 -1.51, 16.09 0 M0 16.09 C-0.19 6.45, 4.38 -0.43, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(865.3662394521118 154.6808100875686) rotate(0 97.86991119384766 12.5)"><text x="97.86991119384766" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">publicKey * privateKey</text></g><g stroke-linecap="round"><g transform="translate(785.6942556521292 169.49482019809443) rotate(0 18.9027027744238 -0.6071622858810883)"><path d="M0.23 -0.47 C6.59 -0.64, 31.7 -1.17, 37.96 -1.32 M-0.32 0.48 C6 0.42, 31.32 -0.45, 37.61 -0.68" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(785.6942556521292 169.49482019809443) rotate(0 18.9027027744238 -0.6071622858810883)"><path d="M20.08 6.41 C23.97 4.75, 29.27 2.55, 37.61 -0.68 M20.08 6.41 C24.5 4.41, 29.66 2.77, 37.61 -0.68" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(785.6942556521292 169.49482019809443) rotate(0 18.9027027744238 -0.6071622858810883)"><path d="M19.62 -6.52 C23.6 -4.73, 29.02 -3.48, 37.61 -0.68 M19.62 -6.52 C24.18 -5.12, 29.46 -3.36, 37.61 -0.68" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask></svg>
@@ -18,4 +18,4 @@
18
18
  </style>
19
19
 
20
20
  </defs>
21
- <rect x="0" y="0" width="1538.6657771052182" height="633.5018016317143" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(371.71429967973427 147.9496847561644) rotate(0 114.33810379333886 33.80052213620306)"><path d="M16.9 0 C64.24 0.93, 109.59 1.39, 211.78 0 M16.9 0 C79.75 1.92, 144.09 0.62, 211.78 0 M211.78 0 C223.74 -1.1, 229.7 6.28, 228.68 16.9 M211.78 0 C221.1 0.7, 228.62 3.72, 228.68 16.9 M228.68 16.9 C228.71 23.35, 227.97 31.85, 228.68 50.7 M228.68 16.9 C228.16 26.09, 229.34 32.55, 228.68 50.7 M228.68 50.7 C229.57 62.75, 222.8 68.59, 211.78 67.6 M228.68 50.7 C229.98 64.14, 222.41 68.86, 211.78 67.6 M211.78 67.6 C134.32 66.77, 60.32 68.82, 16.9 67.6 M211.78 67.6 C158.56 67.94, 103.96 66.66, 16.9 67.6 M16.9 67.6 C3.97 68.05, 1.63 60.67, 0 50.7 M16.9 67.6 C3.79 69.6, 0.64 64.02, 0 50.7 M0 50.7 C-0.03 38.29, 1.3 23.39, 0 16.9 M0 50.7 C0.48 43.42, 0.46 36.31, 0 16.9 M0 16.9 C-1.76 4.2, 5.18 1.08, 16.9 0 M0 16.9 C-0.5 3.61, 5.72 -0.59, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(389.66248800676476 169.2502068923675) rotate(0 96.3899154663086 12.5)"><text x="96.3899154663086" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">MessageToCommand</text></g><g stroke-linecap="round"><g transform="translate(455.48358148558555 82.3282042460105) rotate(0 1.2190670056115778 27.226474553228996)"><path d="M1.2 0.33 C1.28 9.35, 1.36 44.53, 1.38 53.68 M0.37 -0.55 C0.73 8.66, 2.99 45.83, 3.53 54.81" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(455.48358148558555 82.3282042460105) rotate(0 1.2190670056115778 27.226474553228996)"><path d="M-7.31 29.81 C-2.78 37.36, -0.53 46.68, 3.53 54.81 M-7.31 29.81 C-3.08 38.5, 1.07 48.55, 3.53 54.81" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(455.48358148558555 82.3282042460105) rotate(0 1.2190670056115778 27.226474553228996)"><path d="M11.3 28.69 C8.81 36.84, 4.06 46.59, 3.53 54.81 M11.3 28.69 C8.7 37.67, 6.02 48.13, 3.53 54.81" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(518.6992044226031 100.82693355945446) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(529.9854405346059 249.3938412659503) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(469.28086667984144 234.70897316761432) rotate(0 0.2229014099473261 20.511057519056408)"><path d="M-0.2 -0.35 C-0.01 6.37, 0.48 33.79, 0.64 40.72 M0.7 0.66 C0.88 7.42, 0.33 34.67, 0.3 41.26" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(469.28086667984144 234.70897316761432) rotate(0 0.2229014099473261 20.511057519056408)"><path d="M-6.47 21.9 C-5.64 26.27, -4.15 30.45, 0.3 41.26 M-6.47 21.9 C-4.31 27.9, -2.38 34.58, 0.3 41.26" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(469.28086667984144 234.70897316761432) rotate(0 0.2229014099473261 20.511057519056408)"><path d="M7.56 22.08 C5.48 26.39, 4.06 30.53, 0.3 41.26 M7.56 22.08 C5.06 28.04, 2.33 34.66, 0.3 41.26" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(372.4449209678951 300.6353154340226) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C64.48 0.38, 115.71 -2.35, 204.03 0 M16.09 0 C77.51 1.23, 139.5 1.64, 204.03 0 M204.03 0 C213.29 -0.6, 219.25 4.25, 220.12 16.09 M204.03 0 C216.64 -1.59, 218.3 7.49, 220.12 16.09 M220.12 16.09 C220.61 26.75, 220.82 39.02, 220.12 48.27 M220.12 16.09 C220.91 28.72, 219.89 40.59, 220.12 48.27 M220.12 48.27 C219.55 58.88, 216.24 63.85, 204.03 64.35 M220.12 48.27 C218.77 58.48, 215.56 66.13, 204.03 64.35 M204.03 64.35 C160.85 64.42, 115.49 61.2, 16.09 64.35 M204.03 64.35 C132.3 65.25, 58.76 65.88, 16.09 64.35 M16.09 64.35 C6.35 65.39, -0.52 57.43, 0 48.27 M16.09 64.35 C6.15 63.76, 1.37 59.47, 0 48.27 M0 48.27 C-1.63 36.31, 0.89 24.82, 0 16.09 M0 48.27 C0.05 41.09, -0.04 34.74, 0 16.09 M0 16.09 C-1.08 3.41, 4.81 0.65, 16.09 0 M0 16.09 C1.1 6.82, 5.17 1.68, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(426.7325412627656 320.3127319848985) rotate(0 55.76995086669922 12.5)"><text x="55.76995086669922" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">stateIndex</text></g><g stroke-linecap="round" transform="translate(924.3800221482911 75.60378386474531) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C84.27 1.45, 144.41 0.18, 198.87 0 M21.25 0 C67.88 -0.43, 115.55 -0.68, 198.87 0 M198.87 0 C214.67 -1.39, 218.53 8.94, 220.12 21.25 M198.87 0 C213.92 -2.03, 221.14 7.98, 220.12 21.25 M220.12 21.25 C222.22 32.94, 221.42 47.49, 220.12 63.75 M220.12 21.25 C219.77 33.68, 220.8 45.97, 220.12 63.75 M220.12 63.75 C218.94 77.47, 213.74 86.55, 198.87 85 M220.12 63.75 C218.55 76.74, 211.12 85.51, 198.87 85 M198.87 85 C132.86 84.13, 65.17 85.51, 21.25 85 M198.87 85 C159.95 85.25, 119.78 83.95, 21.25 85 M21.25 85 C7.77 84.48, 1.19 78.34, 0 63.75 M21.25 85 C8.41 86.38, -2.03 76.26, 0 63.75 M0 63.75 C-1.99 52.03, -0.74 40.29, 0 21.25 M0 63.75 C-0.53 51.51, -0.27 41.56, 0 21.25 M0 21.25 C0.96 8.35, 6.91 1.46, 21.25 0 M0 21.25 C-0.8 7.32, 8.73 1.07, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(952.3376482415015 93.10378386474531) rotate(0 82.09994506835938 25)"><text x="82.09994506835938" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. Generate the </text><text x="82.09994506835938" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">shared key</text></g><g transform="translate(706.9132752497453 131.4276138530763) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(661.1031904551542 192.01567736077197) rotate(0 109.03693600044221 -0.06959360580904672)"><path d="M-0.95 1.11 C35.31 1.05, 181.95 -1.07, 218.54 -1.2 M0.75 0.65 C36.81 0.77, 181.61 0.18, 217.83 -0.22" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(661.1031904551542 192.01567736077197) rotate(0 109.03693600044221 -0.06959360580904672)"><path d="M189.72 10.24 C202.38 7.24, 209.5 3.36, 217.83 -0.22 M189.72 10.24 C199.82 7.5, 208.51 3.56, 217.83 -0.22" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(661.1031904551542 192.01567736077197) rotate(0 109.03693600044221 -0.06959360580904672)"><path d="M189.57 -10.29 C202.15 -5.44, 209.33 -1.48, 217.83 -0.22 M189.57 -10.29 C199.71 -6.07, 208.44 -3.05, 217.83 -0.22" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(260.0561922263171 10) rotate(0 110.05757116156985 32.177416550875904)"><path d="M16.09 0 C55.84 0.16, 99.91 -0.97, 204.03 0 M16.09 0 C81.5 -1.23, 148.35 -1.84, 204.03 0 M204.03 0 C214.47 -1.78, 219.55 5.25, 220.12 16.09 M204.03 0 C216.47 -0.58, 218.77 4.85, 220.12 16.09 M220.12 16.09 C219.34 25.22, 220.81 39.29, 220.12 48.27 M220.12 16.09 C220.14 24.55, 220.82 30.45, 220.12 48.27 M220.12 48.27 C220.34 58.69, 215.74 65.39, 204.03 64.35 M220.12 48.27 C219.52 57.19, 215.54 63.76, 204.03 64.35 M204.03 64.35 C137.68 63.68, 67.5 64.99, 16.09 64.35 M204.03 64.35 C137.5 62.45, 70.97 62.35, 16.09 64.35 M16.09 64.35 C5.32 64.6, -1.08 57.04, 0 48.27 M16.09 64.35 C4.72 65.1, 1.1 60.45, 0 48.27 M0 48.27 C-0.03 40.32, 0.7 30.55, 0 16.09 M0 48.27 C0.38 37.96, 0.11 27.09, 0 16.09 M0 16.09 C1.18 6.28, 5.6 1.61, 16.09 0 M0 16.09 C2.2 3.79, 5.98 1.61, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(310.8738113004845 29.677416550875932) rotate(0 59.23995208740246 12.5)"><text x="59.239952087402344" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">message[13]</text></g><g transform="translate(10 154.95864255311096) rotate(0 169.63987731933594 25)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Convert a Message to a Command</text><text x="0" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">and decrypt it</text></g><g stroke-linecap="round" transform="translate(28.833320294445457 12.14022262568983) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C74.87 -1.01, 130.26 -0.29, 204.03 0 M16.09 0 C69.69 0.56, 124.53 0.56, 204.03 0 M204.03 0 C214.63 -1.98, 219.17 3.62, 220.12 16.09 M204.03 0 C215.35 -0.42, 220.61 6.36, 220.12 16.09 M220.12 16.09 C219.59 26.73, 219.73 41.18, 220.12 48.27 M220.12 16.09 C220.97 25.05, 220.4 32.84, 220.12 48.27 M220.12 48.27 C222.12 60.78, 216.57 65.37, 204.03 64.35 M220.12 48.27 C220.52 58.46, 216.2 64.33, 204.03 64.35 M204.03 64.35 C165.79 65.05, 126.36 63.46, 16.09 64.35 M204.03 64.35 C153.04 61.81, 101.79 61.82, 16.09 64.35 M16.09 64.35 C3.93 65.44, 1.18 58.88, 0 48.27 M16.09 64.35 C3.47 63.43, -0.2 58.94, 0 48.27 M0 48.27 C-1.63 38.88, -1.56 33.95, 0 16.09 M0 48.27 C-0.58 40.11, 0 32.96, 0 16.09 M0 16.09 C0.2 5.55, 5.68 0.74, 16.09 0 M0 16.09 C0.52 4.07, 6.48 -1.97, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(39.35098972261676 31.817639176565763) rotate(0 99.53990173339844 12.5)"><text x="99.53990173339844" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">encryptionPrivateKey</text></g><g stroke-linecap="round" transform="translate(500.4915278113094 10.485227444192901) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C75.54 0.87, 132.08 -1.22, 204.03 0 M16.09 0 C85.47 -0.9, 154.86 0.49, 204.03 0 M204.03 0 C214.96 0.7, 218.6 7.34, 220.12 16.09 M204.03 0 C212.69 -0.18, 221.93 5.38, 220.12 16.09 M220.12 16.09 C219.5 26.84, 219.36 33.32, 220.12 48.27 M220.12 16.09 C220.11 27.08, 220.7 36.79, 220.12 48.27 M220.12 48.27 C219.03 58.37, 213.68 63.86, 204.03 64.35 M220.12 48.27 C221.65 58.46, 214.13 63.76, 204.03 64.35 M204.03 64.35 C151.63 64.13, 101.46 67.19, 16.09 64.35 M204.03 64.35 C162.42 66.12, 119.47 65.79, 16.09 64.35 M16.09 64.35 C3.81 64.81, -0.64 58.55, 0 48.27 M16.09 64.35 C4.1 63.29, 0.1 58.67, 0 48.27 M0 48.27 C-0.65 35.95, 0.26 28.09, 0 16.09 M0 48.27 C-0.27 39.23, -0.38 29.31, 0 16.09 M0 16.09 C1.59 5.56, 7.11 -0.61, 16.09 0 M0 16.09 C-2.02 7.08, 5.78 0.42, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(519.9191932721956 30.162643995068834) rotate(0 90.6299057006836 12.5)"><text x="90.6299057006836" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">encryptionPublicKey</text></g><g stroke-linecap="round" transform="translate(127.20273886174391 296.994703833528) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C81.37 1.76, 145 2.31, 204.03 0 M16.09 0 C61.76 0.44, 108.94 0.23, 204.03 0 M204.03 0 C216.19 1.09, 222.02 4.2, 220.12 16.09 M204.03 0 C214.56 -1.54, 218.22 6.42, 220.12 16.09 M220.12 16.09 C220.37 23.85, 219.66 35.72, 220.12 48.27 M220.12 16.09 C220.92 25.25, 220.34 35.26, 220.12 48.27 M220.12 48.27 C219 60.26, 213.1 63.54, 204.03 64.35 M220.12 48.27 C222.07 56.94, 214.54 62.48, 204.03 64.35 M204.03 64.35 C161.87 63.96, 123.46 64.41, 16.09 64.35 M204.03 64.35 C162.01 63.33, 119.76 64.53, 16.09 64.35 M16.09 64.35 C4.92 65.58, -0.16 58.84, 0 48.27 M16.09 64.35 C6.05 63.12, -1.11 59.62, 0 48.27 M0 48.27 C1.01 36.43, 0.62 24.9, 0 16.09 M0 48.27 C-0.8 41.83, -0.72 33.93, 0 16.09 M0 16.09 C1.62 6.89, 4.71 0.75, 16.09 0 M0 16.09 C-1.73 6.38, 4.39 -1.7, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(187.3703564100324 316.6721203844039) rotate(0 49.88995361328125 12.5)"><text x="49.88995361328125" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">newPubKey</text></g><g stroke-linecap="round" transform="translate(615.8220771206579 300.86492548466845) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C90.93 0.16, 166.05 -1.24, 204.03 0 M16.09 0 C80.61 -1.11, 144.03 -0.88, 204.03 0 M204.03 0 C214.41 -0.21, 218.73 6.53, 220.12 16.09 M204.03 0 C216.56 -0.65, 218.7 4.19, 220.12 16.09 M220.12 16.09 C221.26 24.29, 220.73 34.46, 220.12 48.27 M220.12 16.09 C219.13 27.56, 219.21 38.14, 220.12 48.27 M220.12 48.27 C220.42 59.58, 215.36 63.48, 204.03 64.35 M220.12 48.27 C222.35 57.47, 212.89 64.62, 204.03 64.35 M204.03 64.35 C138.78 65.9, 72.02 63.58, 16.09 64.35 M204.03 64.35 C140.33 65.1, 78.5 65.84, 16.09 64.35 M16.09 64.35 C5.83 63.31, -1.79 59.79, 0 48.27 M16.09 64.35 C4.08 64.82, 1.1 58.74, 0 48.27 M0 48.27 C-1.02 40.86, 1.61 32.08, 0 16.09 M0 48.27 C0.59 38.41, 0.76 30.69, 0 16.09 M0 16.09 C1.3 5.78, 4.33 0.51, 16.09 0 M0 16.09 C-1.7 3.69, 6.91 -0.03, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(646.8497257968761 320.5423420355444) rotate(0 79.02992248535156 12.5)"><text x="79.02992248535156" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">voteOptionIndex</text></g><g stroke-linecap="round" transform="translate(138.34568778561265 385.6397407753848) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C85.59 -1.67, 154.01 -0.24, 204.03 0 M16.09 0 C82.43 1.57, 148.16 1.45, 204.03 0 M204.03 0 C216.28 1.21, 221.49 7.23, 220.12 16.09 M204.03 0 C216.49 1.29, 218.74 4.49, 220.12 16.09 M220.12 16.09 C218.81 25.97, 218.58 38.94, 220.12 48.27 M220.12 16.09 C220.93 25.77, 220.66 33.59, 220.12 48.27 M220.12 48.27 C221.97 60.03, 213.41 63.63, 204.03 64.35 M220.12 48.27 C221.17 60.08, 216.07 64.48, 204.03 64.35 M204.03 64.35 C163.72 61.42, 126.39 61.66, 16.09 64.35 M204.03 64.35 C145.65 64.49, 87.64 64.95, 16.09 64.35 M16.09 64.35 C7.09 62.54, 0.73 58.3, 0 48.27 M16.09 64.35 C4.37 64.8, -0.35 58.63, 0 48.27 M0 48.27 C-1.38 35.08, -0.25 26.52, 0 16.09 M0 48.27 C-0.75 39.56, -0.6 29.55, 0 16.09 M0 16.09 C1.28 4.69, 4.76 1.12, 16.09 0 M0 16.09 C2.15 5.22, 3.28 -1.72, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(179.62332120304177 405.3171573262607) rotate(0 68.77993774414062 12.5)"><text x="68.77993774414062" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">newVoteWeight</text></g><g stroke-linecap="round" transform="translate(380.17029427452917 384.77626502851683) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C55.62 -1.89, 97.96 -0.2, 204.03 0 M16.09 0 C66.32 -2.59, 116.81 -1.31, 204.03 0 M204.03 0 C216.02 -1.6, 219.54 7.23, 220.12 16.09 M204.03 0 C213.87 -1.53, 219.76 3.37, 220.12 16.09 M220.12 16.09 C221.53 22.17, 219.2 29.34, 220.12 48.27 M220.12 16.09 C220.31 25.16, 220.23 33.92, 220.12 48.27 M220.12 48.27 C219.12 58.69, 212.81 64.22, 204.03 64.35 M220.12 48.27 C218.79 61.1, 212.91 62.17, 204.03 64.35 M204.03 64.35 C153.48 64.47, 101.13 61, 16.09 64.35 M204.03 64.35 C148.84 66.77, 93.61 66.71, 16.09 64.35 M16.09 64.35 C3.52 65.16, 0.83 60.94, 0 48.27 M16.09 64.35 C5.08 66.55, 0.47 59.98, 0 48.27 M0 48.27 C0.93 41.27, 0.52 31.21, 0 16.09 M0 48.27 C-0.63 38.18, 0.16 29.98, 0 16.09 M0 16.09 C0.2 4, 5.31 0.59, 16.09 0 M0 16.09 C1.94 4.47, 5.14 1.01, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(464.8578855777005 404.45368157939276) rotate(0 25.369979858398438 12.5)"><text x="25.369979858398438" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">nonce</text></g><g stroke-linecap="round" transform="translate(625.7777468925829 382.02136621708087) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C83.38 3.06, 150.82 1.37, 204.03 0 M16.09 0 C76.6 -1.42, 137.18 -1.1, 204.03 0 M204.03 0 C216.46 0.49, 219.13 5.51, 220.12 16.09 M204.03 0 C214.55 -1.6, 218.55 4.9, 220.12 16.09 M220.12 16.09 C219.4 26.82, 218.23 38.8, 220.12 48.27 M220.12 16.09 C219.99 24.96, 219.59 34.09, 220.12 48.27 M220.12 48.27 C220.42 60.12, 215.86 64.03, 204.03 64.35 M220.12 48.27 C219.35 57.72, 215.9 64.43, 204.03 64.35 M204.03 64.35 C163.47 65.84, 125.27 67.02, 16.09 64.35 M204.03 64.35 C149.76 63.89, 95.89 62.77, 16.09 64.35 M16.09 64.35 C6.32 64.56, -1.41 58.02, 0 48.27 M16.09 64.35 C3.62 64.92, 0.71 59, 0 48.27 M0 48.27 C1.37 39.37, 1.33 25.76, 0 16.09 M0 48.27 C0.05 39.76, -0.89 29.45, 0 16.09 M0 16.09 C1.34 5.04, 6.72 -1.73, 16.09 0 M0 16.09 C0.25 7.4, 5.7 -1.97, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(708.9653458251487 401.6987827679568) rotate(0 26.869972229003906 12.5)"><text x="26.869972229003906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">pollId</text></g><g stroke-linecap="round" transform="translate(141.1108660702248 473.57035433144017) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C56.2 0.83, 98.36 0.01, 204.03 0 M16.09 0 C74.74 -0.12, 134.58 0.78, 204.03 0 M204.03 0 C215.58 1.36, 219.4 6.02, 220.12 16.09 M204.03 0 C213.04 -1.6, 218.77 5.06, 220.12 16.09 M220.12 16.09 C220.1 26.04, 218.1 35.76, 220.12 48.27 M220.12 16.09 C219.68 27.43, 220.47 38.42, 220.12 48.27 M220.12 48.27 C220.6 57.66, 216.06 63.59, 204.03 64.35 M220.12 48.27 C220.52 57.83, 215.34 62.06, 204.03 64.35 M204.03 64.35 C166.96 62.99, 129.06 64.17, 16.09 64.35 M204.03 64.35 C141.76 64.98, 80.51 64, 16.09 64.35 M16.09 64.35 C6.56 64.49, -1.02 60.48, 0 48.27 M16.09 64.35 C4.25 62.07, -0.81 58.8, 0 48.27 M0 48.27 C1.01 41.02, 1.25 34.12, 0 16.09 M0 48.27 C0.42 37.09, 0.79 28.07, 0 16.09 M0 16.09 C-0.69 4.86, 4.79 1.73, 16.09 0 M0 16.09 C-0.8 6.18, 3.44 1.37, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(230.78845523716564 493.2477708823161) rotate(0 20.379981994628906 12.5)"><text x="20.379981994628906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">salt</text></g><g stroke-linecap="round" transform="translate(378.1709367416031 473.62175169732507) rotate(0 110.05757116156985 32.177416550875904)"><path d="M16.09 0 C69.35 -1.44, 125.22 -1.45, 204.03 0 M16.09 0 C87.05 1.14, 160.19 1.54, 204.03 0 M204.03 0 C213.77 0.53, 219.51 4.65, 220.12 16.09 M204.03 0 C213.4 0.09, 221.56 6.65, 220.12 16.09 M220.12 16.09 C220.74 25.1, 219.18 34.78, 220.12 48.27 M220.12 16.09 C220.5 24.26, 220.12 33.58, 220.12 48.27 M220.12 48.27 C219.34 59.3, 216.32 63.4, 204.03 64.35 M220.12 48.27 C219.9 58.95, 214.26 65.58, 204.03 64.35 M204.03 64.35 C157.31 66.39, 112.54 66.89, 16.09 64.35 M204.03 64.35 C142.94 66.02, 82.63 65.99, 16.09 64.35 M16.09 64.35 C4.26 64.32, -1 57.41, 0 48.27 M16.09 64.35 C3.83 65.37, -0.35 58.51, 0 48.27 M0 48.27 C1.51 35.21, -0.34 21.41, 0 16.09 M0 48.27 C-0.1 35.35, 0.43 23.54, 0 16.09 M0 16.09 C0.36 4.33, 5.07 -0.64, 16.09 0 M0 16.09 C-0.85 5.47, 7.16 0.02, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(436.37855520541916 493.299168248201) rotate(0 51.849952697753906 12.5)"><text x="51.849952697753906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureR</text></g><g stroke-linecap="round" transform="translate(621.964062343915 473.8581795803959) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C73.63 -0.37, 127.99 2.16, 204.03 0 M16.09 0 C75.07 -0.4, 133.78 0.39, 204.03 0 M204.03 0 C213.33 0.88, 219.12 3.41, 220.12 16.09 M204.03 0 C214.53 0.01, 221.86 6.45, 220.12 16.09 M220.12 16.09 C221.08 21.46, 222.04 28.59, 220.12 48.27 M220.12 16.09 C220.84 27.7, 220.48 40.27, 220.12 48.27 M220.12 48.27 C220.83 59.66, 215.72 63.7, 204.03 64.35 M220.12 48.27 C218.8 57.65, 214.11 66.53, 204.03 64.35 M204.03 64.35 C139.9 61.18, 74.37 64.58, 16.09 64.35 M204.03 64.35 C132.49 64.23, 60.65 64.26, 16.09 64.35 M16.09 64.35 C6.84 65.67, -1.33 58.6, 0 48.27 M16.09 64.35 C6.16 64.17, -0.52 61.16, 0 48.27 M0 48.27 C-1.78 35.29, 0.83 23.03, 0 16.09 M0 48.27 C0.69 34.67, -0.38 22.07, 0 16.09 M0 16.09 C1.13 5.03, 6.97 0.8, 16.09 0 M0 16.09 C0.96 3.38, 3.3 -0.35, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(680.8716853853675 493.53559613127186) rotate(0 51.14994812011719 12.5)"><text x="51.14994812011719" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureS</text></g><g stroke-linecap="round" transform="translate(379.2091635324789 559.1469685299625) rotate(0 110.05757116156985 32.177416550875904)"><path d="M16.09 0 C79.62 0.18, 148.36 -0.6, 204.03 0 M16.09 0 C78.3 0.89, 141.24 0.16, 204.03 0 M204.03 0 C216.65 0.91, 218.72 7.18, 220.12 16.09 M204.03 0 C215.4 -0.84, 221.98 3.09, 220.12 16.09 M220.12 16.09 C219.36 25.41, 218 32.58, 220.12 48.27 M220.12 16.09 C219.63 28.46, 219.36 41.77, 220.12 48.27 M220.12 48.27 C221.42 60.6, 213.29 63.73, 204.03 64.35 M220.12 48.27 C220.56 56.95, 217.01 62.89, 204.03 64.35 M204.03 64.35 C129.86 66.12, 60.38 64.21, 16.09 64.35 M204.03 64.35 C159.2 65.74, 113.04 64.79, 16.09 64.35 M16.09 64.35 C3.73 65.34, 1.61 57.2, 0 48.27 M16.09 64.35 C4.22 66.56, 1.58 60.22, 0 48.27 M0 48.27 C1.36 36.64, -2.17 27.85, 0 16.09 M0 48.27 C0.35 37.35, -0.71 28.05, 0 16.09 M0 16.09 C-0.85 5.07, 7.22 1.38, 16.09 0 M0 16.09 C-0.87 5.33, 3.38 -0.7, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(414.9467960343809 578.8243850808384) rotate(0 74.31993865966797 12.5)"><text x="74.31993865966797" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">packedCommand</text></g><g stroke-linecap="round" transform="translate(1230.3032849587566 76.83755565584613) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C74.41 1.61, 130.93 0.72, 198.87 0 M21.25 0 C72.15 -0.47, 120.83 -1.51, 198.87 0 M198.87 0 C212.42 1.62, 218.29 5.92, 220.12 21.25 M198.87 0 C214.49 -1.16, 220.17 8.46, 220.12 21.25 M220.12 21.25 C221.08 34.4, 220.76 49.79, 220.12 63.75 M220.12 21.25 C220.99 30.74, 220.1 41.97, 220.12 63.75 M220.12 63.75 C218.67 76.52, 212.64 85.63, 198.87 85 M220.12 63.75 C219.07 77.15, 214.43 83.96, 198.87 85 M198.87 85 C161.53 85.51, 124.45 86.6, 21.25 85 M198.87 85 C135.61 84.88, 71.72 83.82, 21.25 85 M21.25 85 C5.39 86.19, -0.55 78.87, 0 63.75 M21.25 85 C7.66 87.07, -1.19 77.86, 0 63.75 M0 63.75 C0.41 53.48, -2 38.85, 0 21.25 M0 63.75 C-0.46 51.69, 0.23 41.41, 0 21.25 M0 21.25 C-0.26 8.33, 8.9 -0.03, 21.25 0 M0 21.25 C-0.59 8.3, 9.29 1.27, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(1244.4909372970842 106.83755565584613) rotate(0 95.86991882324219 12.5)"><text x="95.86991882324219" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">use ECDH template</text></g><g stroke-linecap="round"><g transform="translate(1168.5394619667768 127.34012552414043) rotate(0 26.477353035656733 -1.5878260443664374)"><path d="M-0.81 -0.16 C8.23 -0.61, 44.38 -3.33, 53.5 -3.68 M0.96 -1.29 C9.96 -1.49, 44.06 -1.94, 52.84 -2.41" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1168.5394619667768 127.34012552414043) rotate(0 26.477353035656733 -1.5878260443664374)"><path d="M28.21 7.43 C33.88 6.17, 39.16 4.52, 52.84 -2.41 M28.21 7.43 C36.76 3.1, 47.36 -0.75, 52.84 -2.41" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1168.5394619667768 127.34012552414043) rotate(0 26.477353035656733 -1.5878260443664374)"><path d="M27.65 -10.71 C33.31 -7.65, 38.71 -4.98, 52.84 -2.41 M27.65 -10.71 C36.56 -8.25, 47.37 -5.31, 52.84 -2.41" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(933.9512130024445 180.2079379237549) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C84.69 0.56, 146.63 -0.27, 198.87 0 M21.25 0 C71.27 -0.99, 118.54 -0.96, 198.87 0 M198.87 0 C211.12 -0.7, 219.3 6.55, 220.12 21.25 M198.87 0 C212.96 0.49, 221.87 8.21, 220.12 21.25 M220.12 21.25 C220.47 30.7, 222.43 41.28, 220.12 63.75 M220.12 21.25 C220.4 34.86, 220.45 48.41, 220.12 63.75 M220.12 63.75 C218.46 78.17, 214.93 83.05, 198.87 85 M220.12 63.75 C221.22 76.11, 211.49 85.7, 198.87 85 M198.87 85 C133.15 87.13, 67.58 86.17, 21.25 85 M198.87 85 C129.03 83.28, 60.52 83.58, 21.25 85 M21.25 85 C6.63 86.1, 1.44 79.66, 0 63.75 M21.25 85 C5.85 87.25, 1.88 80.07, 0 63.75 M0 63.75 C0.59 53.26, 0.65 47.65, 0 21.25 M0 63.75 C-0.05 48.59, 0.07 35.57, 0 21.25 M0 21.25 C1.98 8.31, 8.67 -0.42, 21.25 0 M0 21.25 C1.48 7.71, 6.83 -0.46, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(952.6088818202643 197.7079379237549) rotate(0 91.39990234375 25)"><text x="91.39990234375" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Decrypt using </text><text x="91.39990234375" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">PoseidonDecryption</text></g><g stroke-linecap="round" transform="translate(1243.132067483653 181.27330894849) rotate(0 139.13306104271328 67.5)"><path d="M32 0 C83.11 -0.14, 131.75 -1.82, 246.27 0 M32 0 C83.23 0.57, 134.42 1.36, 246.27 0 M246.27 0 C266.54 1.37, 277.32 9.03, 278.27 32 M246.27 0 C269.27 -1.05, 278.72 12.57, 278.27 32 M278.27 32 C279.36 58.82, 277.23 84.25, 278.27 103 M278.27 32 C277.22 47.31, 278.79 61.15, 278.27 103 M278.27 103 C276.97 123.83, 267.18 133.22, 246.27 135 M278.27 103 C279.65 125.82, 267.98 134.69, 246.27 135 M246.27 135 C176.23 132.52, 103.45 132.56, 32 135 M246.27 135 C194.55 137.5, 141.51 137.32, 32 135 M32 135 C11.66 135.03, 0.14 123.55, 0 103 M32 135 C9.41 136.65, -1.01 125.51, 0 103 M0 103 C1.49 85.28, -1.4 65.93, 0 32 M0 103 C-0.82 83.67, 0.49 63.58, 0 32 M0 32 C0.21 10.62, 9.34 0.94, 32 0 M0 32 C-2.02 8.94, 8.81 -1.47, 32 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(1250.7552103134753 186.27330894849) rotate(0 131.50991821289062 62.5)"><text x="131.50991821289062" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">we pass all parts of the </text><text x="131.50991821289062" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">message but not the first</text><text x="131.50991821289062" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">item which is the message </text><text x="131.50991821289062" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">type + the nonce and the </text><text x="131.50991821289062" y="100" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">shared key</text></g><g stroke-linecap="round"><g transform="translate(1164.8336907311464 223.3455833495584) rotate(0 31.108255701895132 -1.3475780830112285)"><path d="M0.82 -0.49 C11.05 -0.56, 51.12 -1.32, 61.25 -1.5 M-0.2 -1.79 C10.41 -2.07, 53.33 -2.74, 63.45 -2.99" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1164.8336907311464 223.3455833495584) rotate(0 31.108255701895132 -1.3475780830112285)"><path d="M35.47 7.82 C42.81 2.9, 53.67 0.38, 63.45 -2.99 M35.47 7.82 C47.03 2.9, 56.45 -1.81, 63.45 -2.99" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1164.8336907311464 223.3455833495584) rotate(0 31.108255701895132 -1.3475780830112285)"><path d="M35.06 -12.69 C42.33 -11.71, 53.31 -8.33, 63.45 -2.99 M35.06 -12.69 C46.89 -9.56, 56.47 -6.22, 63.45 -2.99" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(931.3710652350173 292.1939642649051) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C65.72 -2.02, 107.85 0.18, 198.87 0 M21.25 0 C62.63 -0.81, 105.04 -0.49, 198.87 0 M198.87 0 C214.28 1.34, 218.9 8.31, 220.12 21.25 M198.87 0 C214.84 0.38, 218.77 9.15, 220.12 21.25 M220.12 21.25 C219.67 31.04, 219.9 44.65, 220.12 63.75 M220.12 21.25 C219.48 32.88, 221.2 45.59, 220.12 63.75 M220.12 63.75 C220.55 78.65, 212.73 85.91, 198.87 85 M220.12 63.75 C221.94 77.16, 213.77 83.03, 198.87 85 M198.87 85 C136.85 83.66, 77.92 83.05, 21.25 85 M198.87 85 C135.71 85.12, 71.02 86.05, 21.25 85 M21.25 85 C8.1 86.3, 0.24 79.47, 0 63.75 M21.25 85 C8 84.12, -0.98 78.05, 0 63.75 M0 63.75 C1.08 47.38, 1.1 36.62, 0 21.25 M0 63.75 C-0.69 54.91, -0.23 46.06, 0 21.25 M0 21.25 C-1.12 6.2, 7.23 -1.47, 21.25 0 M0 21.25 C-1.12 8.78, 7.54 -0.39, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(968.9786852247121 309.6939642649051) rotate(0 72.449951171875 25)"><text x="72.449951171875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. unpack the </text><text x="72.449951171875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">output </text></g><g stroke-linecap="round" transform="translate(937.8317141267621 405.95689391476054) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C66.74 -1.21, 114.46 -1.82, 198.87 0 M21.25 0 C80.21 -0.67, 139.49 -0.77, 198.87 0 M198.87 0 C212.68 -1.69, 219.02 8.49, 220.12 21.25 M198.87 0 C211.84 0.61, 217.88 7.21, 220.12 21.25 M220.12 21.25 C219.54 29.07, 220.48 38.41, 220.12 63.75 M220.12 21.25 C220.37 29.95, 220.33 40.4, 220.12 63.75 M220.12 63.75 C221.92 77.44, 211.68 84.55, 198.87 85 M220.12 63.75 C219.25 76.96, 213.57 86.81, 198.87 85 M198.87 85 C157.64 82.39, 119.98 81.63, 21.25 85 M198.87 85 C147.63 84.54, 96.31 85.39, 21.25 85 M21.25 85 C6.51 86.48, -0.31 78.56, 0 63.75 M21.25 85 C7.6 86.89, -0.25 78.94, 0 63.75 M0 63.75 C-0.32 51.06, -0.23 33.51, 0 21.25 M0 63.75 C0.87 49.29, 0.72 33.68, 0 21.25 M0 21.25 C-1.82 8.88, 5.46 -0.2, 21.25 0 M0 21.25 C-0.23 8.64, 5.1 0.61, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(946.8893768410662 423.45689391476054) rotate(0 100.99990844726562 25)"><text x="100.99990844726562" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">4. wire everything to</text><text x="100.99990844726562" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">the output signals</text></g><g stroke-linecap="round" transform="translate(1250.3996550197917 338.759817139945) rotate(0 139.13306104271328 55)"><path d="M27.5 0 C88.41 0.71, 148.09 -2.28, 250.77 0 M27.5 0 C75.03 -0.67, 121.12 -1.14, 250.77 0 M250.77 0 C269.31 1.74, 278.5 7.76, 278.27 27.5 M250.77 0 C269.91 -1.91, 277.95 9.48, 278.27 27.5 M278.27 27.5 C276.85 39.04, 278.86 52.37, 278.27 82.5 M278.27 27.5 C277.39 45.87, 277.73 63.12, 278.27 82.5 M278.27 82.5 C279.91 101.72, 270.05 111.44, 250.77 110 M278.27 82.5 C279.01 102.86, 270.54 112.14, 250.77 110 M250.77 110 C159.86 111.04, 70.61 110.39, 27.5 110 M250.77 110 C163.73 111.28, 77.44 111.59, 27.5 110 M27.5 110 C10.27 111.45, 1.53 101.09, 0 82.5 M27.5 110 C10.16 107.93, 0.49 101.47, 0 82.5 M0 82.5 C0.7 61.95, -0.73 41.13, 0 27.5 M0 82.5 C0.35 66.29, 0.33 49.98, 0 27.5 M0 27.5 C1.27 10.1, 9.94 0.79, 27.5 0 M0 27.5 C1.2 11.27, 9.95 1.32, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(1268.9228070048875 368.759817139945) rotate(0 120.60990905761719 25)"><text x="120.60990905761719" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Also we pass the nonce </text><text x="120.60990905761719" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">and the shared key</text></g><g stroke-linecap="round"><g transform="translate(1171.4485528758678 344.0757943149472) rotate(0 33.212977834885805 28.31014262848322)"><path d="M0.9 -0.74 C12.12 8.92, 56.07 47.88, 67.03 57.56 M-0.09 1.48 C11.06 10.86, 55.38 46.95, 66.41 55.94" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1171.4485528758678 344.0757943149472) rotate(0 33.212977834885805 28.31014262848322)"><path d="M38.07 46.08 C44.56 49.58, 55.14 51.72, 66.41 55.94 M38.07 46.08 C49.28 50.25, 58.09 52.56, 66.41 55.94" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1171.4485528758678 344.0757943149472) rotate(0 33.212977834885805 28.31014262848322)"><path d="M51.04 30.17 C53.92 38.13, 60.94 44.63, 66.41 55.94 M51.04 30.17 C57.53 40.19, 61.63 48.28, 66.41 55.94" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask></svg>
21
+ <rect x="0" y="0" width="1538.6657771052182" height="633.5018016317143" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(371.71429967973427 147.9496847561644) rotate(0 114.33810379333886 33.80052213620306)"><path d="M16.9 0 C64.24 0.93, 109.59 1.39, 211.78 0 M16.9 0 C79.75 1.92, 144.09 0.62, 211.78 0 M211.78 0 C223.74 -1.1, 229.7 6.28, 228.68 16.9 M211.78 0 C221.1 0.7, 228.62 3.72, 228.68 16.9 M228.68 16.9 C228.71 23.35, 227.97 31.85, 228.68 50.7 M228.68 16.9 C228.16 26.09, 229.34 32.55, 228.68 50.7 M228.68 50.7 C229.57 62.75, 222.8 68.59, 211.78 67.6 M228.68 50.7 C229.98 64.14, 222.41 68.86, 211.78 67.6 M211.78 67.6 C134.32 66.77, 60.32 68.82, 16.9 67.6 M211.78 67.6 C158.56 67.94, 103.96 66.66, 16.9 67.6 M16.9 67.6 C3.97 68.05, 1.63 60.67, 0 50.7 M16.9 67.6 C3.79 69.6, 0.64 64.02, 0 50.7 M0 50.7 C-0.03 38.29, 1.3 23.39, 0 16.9 M0 50.7 C0.48 43.42, 0.46 36.31, 0 16.9 M0 16.9 C-1.76 4.2, 5.18 1.08, 16.9 0 M0 16.9 C-0.5 3.61, 5.72 -0.59, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(389.66248800676476 169.2502068923675) rotate(0 96.3899154663086 12.5)"><text x="96.3899154663086" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">MessageToCommand</text></g><g stroke-linecap="round"><g transform="translate(455.48358148558555 82.3282042460105) rotate(0 1.2190670056115778 27.226474553228996)"><path d="M1.2 0.33 C1.28 9.35, 1.36 44.53, 1.38 53.68 M0.37 -0.55 C0.73 8.66, 2.99 45.83, 3.53 54.81" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(455.48358148558555 82.3282042460105) rotate(0 1.2190670056115778 27.226474553228996)"><path d="M-7.31 29.81 C-2.78 37.36, -0.53 46.68, 3.53 54.81 M-7.31 29.81 C-3.08 38.5, 1.07 48.55, 3.53 54.81" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(455.48358148558555 82.3282042460105) rotate(0 1.2190670056115778 27.226474553228996)"><path d="M11.3 28.69 C8.81 36.84, 4.06 46.59, 3.53 54.81 M11.3 28.69 C8.7 37.67, 6.02 48.13, 3.53 54.81" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(518.6992044226031 100.82693355945446) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(529.9854405346059 249.3938412659503) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(469.28086667984144 234.70897316761432) rotate(0 0.2229014099473261 20.511057519056408)"><path d="M-0.2 -0.35 C-0.01 6.37, 0.48 33.79, 0.64 40.72 M0.7 0.66 C0.88 7.42, 0.33 34.67, 0.3 41.26" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(469.28086667984144 234.70897316761432) rotate(0 0.2229014099473261 20.511057519056408)"><path d="M-6.47 21.9 C-5.64 26.27, -4.15 30.45, 0.3 41.26 M-6.47 21.9 C-4.31 27.9, -2.38 34.58, 0.3 41.26" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(469.28086667984144 234.70897316761432) rotate(0 0.2229014099473261 20.511057519056408)"><path d="M7.56 22.08 C5.48 26.39, 4.06 30.53, 0.3 41.26 M7.56 22.08 C5.06 28.04, 2.33 34.66, 0.3 41.26" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(372.4449209678951 300.6353154340226) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C64.48 0.38, 115.71 -2.35, 204.03 0 M16.09 0 C77.51 1.23, 139.5 1.64, 204.03 0 M204.03 0 C213.29 -0.6, 219.25 4.25, 220.12 16.09 M204.03 0 C216.64 -1.59, 218.3 7.49, 220.12 16.09 M220.12 16.09 C220.61 26.75, 220.82 39.02, 220.12 48.27 M220.12 16.09 C220.91 28.72, 219.89 40.59, 220.12 48.27 M220.12 48.27 C219.55 58.88, 216.24 63.85, 204.03 64.35 M220.12 48.27 C218.77 58.48, 215.56 66.13, 204.03 64.35 M204.03 64.35 C160.85 64.42, 115.49 61.2, 16.09 64.35 M204.03 64.35 C132.3 65.25, 58.76 65.88, 16.09 64.35 M16.09 64.35 C6.35 65.39, -0.52 57.43, 0 48.27 M16.09 64.35 C6.15 63.76, 1.37 59.47, 0 48.27 M0 48.27 C-1.63 36.31, 0.89 24.82, 0 16.09 M0 48.27 C0.05 41.09, -0.04 34.74, 0 16.09 M0 16.09 C-1.08 3.41, 4.81 0.65, 16.09 0 M0 16.09 C1.1 6.82, 5.17 1.68, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(426.7325412627656 320.3127319848985) rotate(0 55.76995086669922 12.5)"><text x="55.76995086669922" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">stateIndex</text></g><g stroke-linecap="round" transform="translate(924.3800221482911 75.60378386474531) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C84.27 1.45, 144.41 0.18, 198.87 0 M21.25 0 C67.88 -0.43, 115.55 -0.68, 198.87 0 M198.87 0 C214.67 -1.39, 218.53 8.94, 220.12 21.25 M198.87 0 C213.92 -2.03, 221.14 7.98, 220.12 21.25 M220.12 21.25 C222.22 32.94, 221.42 47.49, 220.12 63.75 M220.12 21.25 C219.77 33.68, 220.8 45.97, 220.12 63.75 M220.12 63.75 C218.94 77.47, 213.74 86.55, 198.87 85 M220.12 63.75 C218.55 76.74, 211.12 85.51, 198.87 85 M198.87 85 C132.86 84.13, 65.17 85.51, 21.25 85 M198.87 85 C159.95 85.25, 119.78 83.95, 21.25 85 M21.25 85 C7.77 84.48, 1.19 78.34, 0 63.75 M21.25 85 C8.41 86.38, -2.03 76.26, 0 63.75 M0 63.75 C-1.99 52.03, -0.74 40.29, 0 21.25 M0 63.75 C-0.53 51.51, -0.27 41.56, 0 21.25 M0 21.25 C0.96 8.35, 6.91 1.46, 21.25 0 M0 21.25 C-0.8 7.32, 8.73 1.07, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(952.3376482415015 93.10378386474531) rotate(0 82.09994506835938 25)"><text x="82.09994506835938" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. Generate the </text><text x="82.09994506835938" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">shared key</text></g><g transform="translate(706.9132752497453 131.4276138530763) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(661.1031904551542 192.01567736077197) rotate(0 109.03693600044221 -0.06959360580904672)"><path d="M-0.95 1.11 C35.31 1.05, 181.95 -1.07, 218.54 -1.2 M0.75 0.65 C36.81 0.77, 181.61 0.18, 217.83 -0.22" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(661.1031904551542 192.01567736077197) rotate(0 109.03693600044221 -0.06959360580904672)"><path d="M189.72 10.24 C202.38 7.24, 209.5 3.36, 217.83 -0.22 M189.72 10.24 C199.82 7.5, 208.51 3.56, 217.83 -0.22" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(661.1031904551542 192.01567736077197) rotate(0 109.03693600044221 -0.06959360580904672)"><path d="M189.57 -10.29 C202.15 -5.44, 209.33 -1.48, 217.83 -0.22 M189.57 -10.29 C199.71 -6.07, 208.44 -3.05, 217.83 -0.22" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(260.0561922263171 10) rotate(0 110.05757116156985 32.177416550875904)"><path d="M16.09 0 C55.84 0.16, 99.91 -0.97, 204.03 0 M16.09 0 C81.5 -1.23, 148.35 -1.84, 204.03 0 M204.03 0 C214.47 -1.78, 219.55 5.25, 220.12 16.09 M204.03 0 C216.47 -0.58, 218.77 4.85, 220.12 16.09 M220.12 16.09 C219.34 25.22, 220.81 39.29, 220.12 48.27 M220.12 16.09 C220.14 24.55, 220.82 30.45, 220.12 48.27 M220.12 48.27 C220.34 58.69, 215.74 65.39, 204.03 64.35 M220.12 48.27 C219.52 57.19, 215.54 63.76, 204.03 64.35 M204.03 64.35 C137.68 63.68, 67.5 64.99, 16.09 64.35 M204.03 64.35 C137.5 62.45, 70.97 62.35, 16.09 64.35 M16.09 64.35 C5.32 64.6, -1.08 57.04, 0 48.27 M16.09 64.35 C4.72 65.1, 1.1 60.45, 0 48.27 M0 48.27 C-0.03 40.32, 0.7 30.55, 0 16.09 M0 48.27 C0.38 37.96, 0.11 27.09, 0 16.09 M0 16.09 C1.18 6.28, 5.6 1.61, 16.09 0 M0 16.09 C2.2 3.79, 5.98 1.61, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(310.8738113004845 29.677416550875932) rotate(0 59.23995208740246 12.5)"><text x="59.239952087402344" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">message[13]</text></g><g transform="translate(10 154.95864255311096) rotate(0 169.63987731933594 25)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Convert a Message to a Command</text><text x="0" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">and decrypt it</text></g><g stroke-linecap="round" transform="translate(28.833320294445457 12.14022262568983) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C74.87 -1.01, 130.26 -0.29, 204.03 0 M16.09 0 C69.69 0.56, 124.53 0.56, 204.03 0 M204.03 0 C214.63 -1.98, 219.17 3.62, 220.12 16.09 M204.03 0 C215.35 -0.42, 220.61 6.36, 220.12 16.09 M220.12 16.09 C219.59 26.73, 219.73 41.18, 220.12 48.27 M220.12 16.09 C220.97 25.05, 220.4 32.84, 220.12 48.27 M220.12 48.27 C222.12 60.78, 216.57 65.37, 204.03 64.35 M220.12 48.27 C220.52 58.46, 216.2 64.33, 204.03 64.35 M204.03 64.35 C165.79 65.05, 126.36 63.46, 16.09 64.35 M204.03 64.35 C153.04 61.81, 101.79 61.82, 16.09 64.35 M16.09 64.35 C3.93 65.44, 1.18 58.88, 0 48.27 M16.09 64.35 C3.47 63.43, -0.2 58.94, 0 48.27 M0 48.27 C-1.63 38.88, -1.56 33.95, 0 16.09 M0 48.27 C-0.58 40.11, 0 32.96, 0 16.09 M0 16.09 C0.2 5.55, 5.68 0.74, 16.09 0 M0 16.09 C0.52 4.07, 6.48 -1.97, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(39.35098972261676 31.817639176565763) rotate(0 99.53990173339844 12.5)"><text x="99.53990173339844" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">encryptionPrivateKey</text></g><g stroke-linecap="round" transform="translate(500.4915278113094 10.485227444192901) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C75.54 0.87, 132.08 -1.22, 204.03 0 M16.09 0 C85.47 -0.9, 154.86 0.49, 204.03 0 M204.03 0 C214.96 0.7, 218.6 7.34, 220.12 16.09 M204.03 0 C212.69 -0.18, 221.93 5.38, 220.12 16.09 M220.12 16.09 C219.5 26.84, 219.36 33.32, 220.12 48.27 M220.12 16.09 C220.11 27.08, 220.7 36.79, 220.12 48.27 M220.12 48.27 C219.03 58.37, 213.68 63.86, 204.03 64.35 M220.12 48.27 C221.65 58.46, 214.13 63.76, 204.03 64.35 M204.03 64.35 C151.63 64.13, 101.46 67.19, 16.09 64.35 M204.03 64.35 C162.42 66.12, 119.47 65.79, 16.09 64.35 M16.09 64.35 C3.81 64.81, -0.64 58.55, 0 48.27 M16.09 64.35 C4.1 63.29, 0.1 58.67, 0 48.27 M0 48.27 C-0.65 35.95, 0.26 28.09, 0 16.09 M0 48.27 C-0.27 39.23, -0.38 29.31, 0 16.09 M0 16.09 C1.59 5.56, 7.11 -0.61, 16.09 0 M0 16.09 C-2.02 7.08, 5.78 0.42, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(519.9191932721956 30.162643995068834) rotate(0 90.6299057006836 12.5)"><text x="90.6299057006836" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">encryptionPublicKey</text></g><g stroke-linecap="round" transform="translate(127.20273886174391 296.994703833528) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C81.37 1.76, 145 2.31, 204.03 0 M16.09 0 C61.76 0.44, 108.94 0.23, 204.03 0 M204.03 0 C216.19 1.09, 222.02 4.2, 220.12 16.09 M204.03 0 C214.56 -1.54, 218.22 6.42, 220.12 16.09 M220.12 16.09 C220.37 23.85, 219.66 35.72, 220.12 48.27 M220.12 16.09 C220.92 25.25, 220.34 35.26, 220.12 48.27 M220.12 48.27 C219 60.26, 213.1 63.54, 204.03 64.35 M220.12 48.27 C222.07 56.94, 214.54 62.48, 204.03 64.35 M204.03 64.35 C161.87 63.96, 123.46 64.41, 16.09 64.35 M204.03 64.35 C162.01 63.33, 119.76 64.53, 16.09 64.35 M16.09 64.35 C4.92 65.58, -0.16 58.84, 0 48.27 M16.09 64.35 C6.05 63.12, -1.11 59.62, 0 48.27 M0 48.27 C1.01 36.43, 0.62 24.9, 0 16.09 M0 48.27 C-0.8 41.83, -0.72 33.93, 0 16.09 M0 16.09 C1.62 6.89, 4.71 0.75, 16.09 0 M0 16.09 C-1.73 6.38, 4.39 -1.7, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(187.3703564100324 316.6721203844039) rotate(0 49.88995361328125 12.5)"><text x="49.88995361328125" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">newPublicKey</text></g><g stroke-linecap="round" transform="translate(615.8220771206579 300.86492548466845) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C90.93 0.16, 166.05 -1.24, 204.03 0 M16.09 0 C80.61 -1.11, 144.03 -0.88, 204.03 0 M204.03 0 C214.41 -0.21, 218.73 6.53, 220.12 16.09 M204.03 0 C216.56 -0.65, 218.7 4.19, 220.12 16.09 M220.12 16.09 C221.26 24.29, 220.73 34.46, 220.12 48.27 M220.12 16.09 C219.13 27.56, 219.21 38.14, 220.12 48.27 M220.12 48.27 C220.42 59.58, 215.36 63.48, 204.03 64.35 M220.12 48.27 C222.35 57.47, 212.89 64.62, 204.03 64.35 M204.03 64.35 C138.78 65.9, 72.02 63.58, 16.09 64.35 M204.03 64.35 C140.33 65.1, 78.5 65.84, 16.09 64.35 M16.09 64.35 C5.83 63.31, -1.79 59.79, 0 48.27 M16.09 64.35 C4.08 64.82, 1.1 58.74, 0 48.27 M0 48.27 C-1.02 40.86, 1.61 32.08, 0 16.09 M0 48.27 C0.59 38.41, 0.76 30.69, 0 16.09 M0 16.09 C1.3 5.78, 4.33 0.51, 16.09 0 M0 16.09 C-1.7 3.69, 6.91 -0.03, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(646.8497257968761 320.5423420355444) rotate(0 79.02992248535156 12.5)"><text x="79.02992248535156" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">voteOptionIndex</text></g><g stroke-linecap="round" transform="translate(138.34568778561265 385.6397407753848) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C85.59 -1.67, 154.01 -0.24, 204.03 0 M16.09 0 C82.43 1.57, 148.16 1.45, 204.03 0 M204.03 0 C216.28 1.21, 221.49 7.23, 220.12 16.09 M204.03 0 C216.49 1.29, 218.74 4.49, 220.12 16.09 M220.12 16.09 C218.81 25.97, 218.58 38.94, 220.12 48.27 M220.12 16.09 C220.93 25.77, 220.66 33.59, 220.12 48.27 M220.12 48.27 C221.97 60.03, 213.41 63.63, 204.03 64.35 M220.12 48.27 C221.17 60.08, 216.07 64.48, 204.03 64.35 M204.03 64.35 C163.72 61.42, 126.39 61.66, 16.09 64.35 M204.03 64.35 C145.65 64.49, 87.64 64.95, 16.09 64.35 M16.09 64.35 C7.09 62.54, 0.73 58.3, 0 48.27 M16.09 64.35 C4.37 64.8, -0.35 58.63, 0 48.27 M0 48.27 C-1.38 35.08, -0.25 26.52, 0 16.09 M0 48.27 C-0.75 39.56, -0.6 29.55, 0 16.09 M0 16.09 C1.28 4.69, 4.76 1.12, 16.09 0 M0 16.09 C2.15 5.22, 3.28 -1.72, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(179.62332120304177 405.3171573262607) rotate(0 68.77993774414062 12.5)"><text x="68.77993774414062" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">newVoteWeight</text></g><g stroke-linecap="round" transform="translate(380.17029427452917 384.77626502851683) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C55.62 -1.89, 97.96 -0.2, 204.03 0 M16.09 0 C66.32 -2.59, 116.81 -1.31, 204.03 0 M204.03 0 C216.02 -1.6, 219.54 7.23, 220.12 16.09 M204.03 0 C213.87 -1.53, 219.76 3.37, 220.12 16.09 M220.12 16.09 C221.53 22.17, 219.2 29.34, 220.12 48.27 M220.12 16.09 C220.31 25.16, 220.23 33.92, 220.12 48.27 M220.12 48.27 C219.12 58.69, 212.81 64.22, 204.03 64.35 M220.12 48.27 C218.79 61.1, 212.91 62.17, 204.03 64.35 M204.03 64.35 C153.48 64.47, 101.13 61, 16.09 64.35 M204.03 64.35 C148.84 66.77, 93.61 66.71, 16.09 64.35 M16.09 64.35 C3.52 65.16, 0.83 60.94, 0 48.27 M16.09 64.35 C5.08 66.55, 0.47 59.98, 0 48.27 M0 48.27 C0.93 41.27, 0.52 31.21, 0 16.09 M0 48.27 C-0.63 38.18, 0.16 29.98, 0 16.09 M0 16.09 C0.2 4, 5.31 0.59, 16.09 0 M0 16.09 C1.94 4.47, 5.14 1.01, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(464.8578855777005 404.45368157939276) rotate(0 25.369979858398438 12.5)"><text x="25.369979858398438" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">nonce</text></g><g stroke-linecap="round" transform="translate(625.7777468925829 382.02136621708087) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C83.38 3.06, 150.82 1.37, 204.03 0 M16.09 0 C76.6 -1.42, 137.18 -1.1, 204.03 0 M204.03 0 C216.46 0.49, 219.13 5.51, 220.12 16.09 M204.03 0 C214.55 -1.6, 218.55 4.9, 220.12 16.09 M220.12 16.09 C219.4 26.82, 218.23 38.8, 220.12 48.27 M220.12 16.09 C219.99 24.96, 219.59 34.09, 220.12 48.27 M220.12 48.27 C220.42 60.12, 215.86 64.03, 204.03 64.35 M220.12 48.27 C219.35 57.72, 215.9 64.43, 204.03 64.35 M204.03 64.35 C163.47 65.84, 125.27 67.02, 16.09 64.35 M204.03 64.35 C149.76 63.89, 95.89 62.77, 16.09 64.35 M16.09 64.35 C6.32 64.56, -1.41 58.02, 0 48.27 M16.09 64.35 C3.62 64.92, 0.71 59, 0 48.27 M0 48.27 C1.37 39.37, 1.33 25.76, 0 16.09 M0 48.27 C0.05 39.76, -0.89 29.45, 0 16.09 M0 16.09 C1.34 5.04, 6.72 -1.73, 16.09 0 M0 16.09 C0.25 7.4, 5.7 -1.97, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(708.9653458251487 401.6987827679568) rotate(0 26.869972229003906 12.5)"><text x="26.869972229003906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">pollId</text></g><g stroke-linecap="round" transform="translate(141.1108660702248 473.57035433144017) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C56.2 0.83, 98.36 0.01, 204.03 0 M16.09 0 C74.74 -0.12, 134.58 0.78, 204.03 0 M204.03 0 C215.58 1.36, 219.4 6.02, 220.12 16.09 M204.03 0 C213.04 -1.6, 218.77 5.06, 220.12 16.09 M220.12 16.09 C220.1 26.04, 218.1 35.76, 220.12 48.27 M220.12 16.09 C219.68 27.43, 220.47 38.42, 220.12 48.27 M220.12 48.27 C220.6 57.66, 216.06 63.59, 204.03 64.35 M220.12 48.27 C220.52 57.83, 215.34 62.06, 204.03 64.35 M204.03 64.35 C166.96 62.99, 129.06 64.17, 16.09 64.35 M204.03 64.35 C141.76 64.98, 80.51 64, 16.09 64.35 M16.09 64.35 C6.56 64.49, -1.02 60.48, 0 48.27 M16.09 64.35 C4.25 62.07, -0.81 58.8, 0 48.27 M0 48.27 C1.01 41.02, 1.25 34.12, 0 16.09 M0 48.27 C0.42 37.09, 0.79 28.07, 0 16.09 M0 16.09 C-0.69 4.86, 4.79 1.73, 16.09 0 M0 16.09 C-0.8 6.18, 3.44 1.37, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(230.78845523716564 493.2477708823161) rotate(0 20.379981994628906 12.5)"><text x="20.379981994628906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">salt</text></g><g stroke-linecap="round" transform="translate(378.1709367416031 473.62175169732507) rotate(0 110.05757116156985 32.177416550875904)"><path d="M16.09 0 C69.35 -1.44, 125.22 -1.45, 204.03 0 M16.09 0 C87.05 1.14, 160.19 1.54, 204.03 0 M204.03 0 C213.77 0.53, 219.51 4.65, 220.12 16.09 M204.03 0 C213.4 0.09, 221.56 6.65, 220.12 16.09 M220.12 16.09 C220.74 25.1, 219.18 34.78, 220.12 48.27 M220.12 16.09 C220.5 24.26, 220.12 33.58, 220.12 48.27 M220.12 48.27 C219.34 59.3, 216.32 63.4, 204.03 64.35 M220.12 48.27 C219.9 58.95, 214.26 65.58, 204.03 64.35 M204.03 64.35 C157.31 66.39, 112.54 66.89, 16.09 64.35 M204.03 64.35 C142.94 66.02, 82.63 65.99, 16.09 64.35 M16.09 64.35 C4.26 64.32, -1 57.41, 0 48.27 M16.09 64.35 C3.83 65.37, -0.35 58.51, 0 48.27 M0 48.27 C1.51 35.21, -0.34 21.41, 0 16.09 M0 48.27 C-0.1 35.35, 0.43 23.54, 0 16.09 M0 16.09 C0.36 4.33, 5.07 -0.64, 16.09 0 M0 16.09 C-0.85 5.47, 7.16 0.02, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(436.37855520541916 493.299168248201) rotate(0 51.849952697753906 12.5)"><text x="51.849952697753906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureR</text></g><g stroke-linecap="round" transform="translate(621.964062343915 473.8581795803959) rotate(0 110.05757116156974 32.177416550875904)"><path d="M16.09 0 C73.63 -0.37, 127.99 2.16, 204.03 0 M16.09 0 C75.07 -0.4, 133.78 0.39, 204.03 0 M204.03 0 C213.33 0.88, 219.12 3.41, 220.12 16.09 M204.03 0 C214.53 0.01, 221.86 6.45, 220.12 16.09 M220.12 16.09 C221.08 21.46, 222.04 28.59, 220.12 48.27 M220.12 16.09 C220.84 27.7, 220.48 40.27, 220.12 48.27 M220.12 48.27 C220.83 59.66, 215.72 63.7, 204.03 64.35 M220.12 48.27 C218.8 57.65, 214.11 66.53, 204.03 64.35 M204.03 64.35 C139.9 61.18, 74.37 64.58, 16.09 64.35 M204.03 64.35 C132.49 64.23, 60.65 64.26, 16.09 64.35 M16.09 64.35 C6.84 65.67, -1.33 58.6, 0 48.27 M16.09 64.35 C6.16 64.17, -0.52 61.16, 0 48.27 M0 48.27 C-1.78 35.29, 0.83 23.03, 0 16.09 M0 48.27 C0.69 34.67, -0.38 22.07, 0 16.09 M0 16.09 C1.13 5.03, 6.97 0.8, 16.09 0 M0 16.09 C0.96 3.38, 3.3 -0.35, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(680.8716853853675 493.53559613127186) rotate(0 51.14994812011719 12.5)"><text x="51.14994812011719" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureS</text></g><g stroke-linecap="round" transform="translate(379.2091635324789 559.1469685299625) rotate(0 110.05757116156985 32.177416550875904)"><path d="M16.09 0 C79.62 0.18, 148.36 -0.6, 204.03 0 M16.09 0 C78.3 0.89, 141.24 0.16, 204.03 0 M204.03 0 C216.65 0.91, 218.72 7.18, 220.12 16.09 M204.03 0 C215.4 -0.84, 221.98 3.09, 220.12 16.09 M220.12 16.09 C219.36 25.41, 218 32.58, 220.12 48.27 M220.12 16.09 C219.63 28.46, 219.36 41.77, 220.12 48.27 M220.12 48.27 C221.42 60.6, 213.29 63.73, 204.03 64.35 M220.12 48.27 C220.56 56.95, 217.01 62.89, 204.03 64.35 M204.03 64.35 C129.86 66.12, 60.38 64.21, 16.09 64.35 M204.03 64.35 C159.2 65.74, 113.04 64.79, 16.09 64.35 M16.09 64.35 C3.73 65.34, 1.61 57.2, 0 48.27 M16.09 64.35 C4.22 66.56, 1.58 60.22, 0 48.27 M0 48.27 C1.36 36.64, -2.17 27.85, 0 16.09 M0 48.27 C0.35 37.35, -0.71 28.05, 0 16.09 M0 16.09 C-0.85 5.07, 7.22 1.38, 16.09 0 M0 16.09 C-0.87 5.33, 3.38 -0.7, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(414.9467960343809 578.8243850808384) rotate(0 74.31993865966797 12.5)"><text x="74.31993865966797" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">packedCommand</text></g><g stroke-linecap="round" transform="translate(1230.3032849587566 76.83755565584613) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C74.41 1.61, 130.93 0.72, 198.87 0 M21.25 0 C72.15 -0.47, 120.83 -1.51, 198.87 0 M198.87 0 C212.42 1.62, 218.29 5.92, 220.12 21.25 M198.87 0 C214.49 -1.16, 220.17 8.46, 220.12 21.25 M220.12 21.25 C221.08 34.4, 220.76 49.79, 220.12 63.75 M220.12 21.25 C220.99 30.74, 220.1 41.97, 220.12 63.75 M220.12 63.75 C218.67 76.52, 212.64 85.63, 198.87 85 M220.12 63.75 C219.07 77.15, 214.43 83.96, 198.87 85 M198.87 85 C161.53 85.51, 124.45 86.6, 21.25 85 M198.87 85 C135.61 84.88, 71.72 83.82, 21.25 85 M21.25 85 C5.39 86.19, -0.55 78.87, 0 63.75 M21.25 85 C7.66 87.07, -1.19 77.86, 0 63.75 M0 63.75 C0.41 53.48, -2 38.85, 0 21.25 M0 63.75 C-0.46 51.69, 0.23 41.41, 0 21.25 M0 21.25 C-0.26 8.33, 8.9 -0.03, 21.25 0 M0 21.25 C-0.59 8.3, 9.29 1.27, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(1244.4909372970842 106.83755565584613) rotate(0 95.86991882324219 12.5)"><text x="95.86991882324219" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">use ECDH template</text></g><g stroke-linecap="round"><g transform="translate(1168.5394619667768 127.34012552414043) rotate(0 26.477353035656733 -1.5878260443664374)"><path d="M-0.81 -0.16 C8.23 -0.61, 44.38 -3.33, 53.5 -3.68 M0.96 -1.29 C9.96 -1.49, 44.06 -1.94, 52.84 -2.41" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1168.5394619667768 127.34012552414043) rotate(0 26.477353035656733 -1.5878260443664374)"><path d="M28.21 7.43 C33.88 6.17, 39.16 4.52, 52.84 -2.41 M28.21 7.43 C36.76 3.1, 47.36 -0.75, 52.84 -2.41" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1168.5394619667768 127.34012552414043) rotate(0 26.477353035656733 -1.5878260443664374)"><path d="M27.65 -10.71 C33.31 -7.65, 38.71 -4.98, 52.84 -2.41 M27.65 -10.71 C36.56 -8.25, 47.37 -5.31, 52.84 -2.41" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(933.9512130024445 180.2079379237549) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C84.69 0.56, 146.63 -0.27, 198.87 0 M21.25 0 C71.27 -0.99, 118.54 -0.96, 198.87 0 M198.87 0 C211.12 -0.7, 219.3 6.55, 220.12 21.25 M198.87 0 C212.96 0.49, 221.87 8.21, 220.12 21.25 M220.12 21.25 C220.47 30.7, 222.43 41.28, 220.12 63.75 M220.12 21.25 C220.4 34.86, 220.45 48.41, 220.12 63.75 M220.12 63.75 C218.46 78.17, 214.93 83.05, 198.87 85 M220.12 63.75 C221.22 76.11, 211.49 85.7, 198.87 85 M198.87 85 C133.15 87.13, 67.58 86.17, 21.25 85 M198.87 85 C129.03 83.28, 60.52 83.58, 21.25 85 M21.25 85 C6.63 86.1, 1.44 79.66, 0 63.75 M21.25 85 C5.85 87.25, 1.88 80.07, 0 63.75 M0 63.75 C0.59 53.26, 0.65 47.65, 0 21.25 M0 63.75 C-0.05 48.59, 0.07 35.57, 0 21.25 M0 21.25 C1.98 8.31, 8.67 -0.42, 21.25 0 M0 21.25 C1.48 7.71, 6.83 -0.46, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(952.6088818202643 197.7079379237549) rotate(0 91.39990234375 25)"><text x="91.39990234375" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Decrypt using </text><text x="91.39990234375" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">PoseidonDecryption</text></g><g stroke-linecap="round" transform="translate(1243.132067483653 181.27330894849) rotate(0 139.13306104271328 67.5)"><path d="M32 0 C83.11 -0.14, 131.75 -1.82, 246.27 0 M32 0 C83.23 0.57, 134.42 1.36, 246.27 0 M246.27 0 C266.54 1.37, 277.32 9.03, 278.27 32 M246.27 0 C269.27 -1.05, 278.72 12.57, 278.27 32 M278.27 32 C279.36 58.82, 277.23 84.25, 278.27 103 M278.27 32 C277.22 47.31, 278.79 61.15, 278.27 103 M278.27 103 C276.97 123.83, 267.18 133.22, 246.27 135 M278.27 103 C279.65 125.82, 267.98 134.69, 246.27 135 M246.27 135 C176.23 132.52, 103.45 132.56, 32 135 M246.27 135 C194.55 137.5, 141.51 137.32, 32 135 M32 135 C11.66 135.03, 0.14 123.55, 0 103 M32 135 C9.41 136.65, -1.01 125.51, 0 103 M0 103 C1.49 85.28, -1.4 65.93, 0 32 M0 103 C-0.82 83.67, 0.49 63.58, 0 32 M0 32 C0.21 10.62, 9.34 0.94, 32 0 M0 32 C-2.02 8.94, 8.81 -1.47, 32 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(1250.7552103134753 186.27330894849) rotate(0 131.50991821289062 62.5)"><text x="131.50991821289062" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">we pass all parts of the </text><text x="131.50991821289062" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">message but not the first</text><text x="131.50991821289062" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">item which is the message </text><text x="131.50991821289062" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">type + the nonce and the </text><text x="131.50991821289062" y="100" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">shared key</text></g><g stroke-linecap="round"><g transform="translate(1164.8336907311464 223.3455833495584) rotate(0 31.108255701895132 -1.3475780830112285)"><path d="M0.82 -0.49 C11.05 -0.56, 51.12 -1.32, 61.25 -1.5 M-0.2 -1.79 C10.41 -2.07, 53.33 -2.74, 63.45 -2.99" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1164.8336907311464 223.3455833495584) rotate(0 31.108255701895132 -1.3475780830112285)"><path d="M35.47 7.82 C42.81 2.9, 53.67 0.38, 63.45 -2.99 M35.47 7.82 C47.03 2.9, 56.45 -1.81, 63.45 -2.99" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1164.8336907311464 223.3455833495584) rotate(0 31.108255701895132 -1.3475780830112285)"><path d="M35.06 -12.69 C42.33 -11.71, 53.31 -8.33, 63.45 -2.99 M35.06 -12.69 C46.89 -9.56, 56.47 -6.22, 63.45 -2.99" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(931.3710652350173 292.1939642649051) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C65.72 -2.02, 107.85 0.18, 198.87 0 M21.25 0 C62.63 -0.81, 105.04 -0.49, 198.87 0 M198.87 0 C214.28 1.34, 218.9 8.31, 220.12 21.25 M198.87 0 C214.84 0.38, 218.77 9.15, 220.12 21.25 M220.12 21.25 C219.67 31.04, 219.9 44.65, 220.12 63.75 M220.12 21.25 C219.48 32.88, 221.2 45.59, 220.12 63.75 M220.12 63.75 C220.55 78.65, 212.73 85.91, 198.87 85 M220.12 63.75 C221.94 77.16, 213.77 83.03, 198.87 85 M198.87 85 C136.85 83.66, 77.92 83.05, 21.25 85 M198.87 85 C135.71 85.12, 71.02 86.05, 21.25 85 M21.25 85 C8.1 86.3, 0.24 79.47, 0 63.75 M21.25 85 C8 84.12, -0.98 78.05, 0 63.75 M0 63.75 C1.08 47.38, 1.1 36.62, 0 21.25 M0 63.75 C-0.69 54.91, -0.23 46.06, 0 21.25 M0 21.25 C-1.12 6.2, 7.23 -1.47, 21.25 0 M0 21.25 C-1.12 8.78, 7.54 -0.39, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(968.9786852247121 309.6939642649051) rotate(0 72.449951171875 25)"><text x="72.449951171875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. unpack the </text><text x="72.449951171875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">output </text></g><g stroke-linecap="round" transform="translate(937.8317141267621 405.95689391476054) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C66.74 -1.21, 114.46 -1.82, 198.87 0 M21.25 0 C80.21 -0.67, 139.49 -0.77, 198.87 0 M198.87 0 C212.68 -1.69, 219.02 8.49, 220.12 21.25 M198.87 0 C211.84 0.61, 217.88 7.21, 220.12 21.25 M220.12 21.25 C219.54 29.07, 220.48 38.41, 220.12 63.75 M220.12 21.25 C220.37 29.95, 220.33 40.4, 220.12 63.75 M220.12 63.75 C221.92 77.44, 211.68 84.55, 198.87 85 M220.12 63.75 C219.25 76.96, 213.57 86.81, 198.87 85 M198.87 85 C157.64 82.39, 119.98 81.63, 21.25 85 M198.87 85 C147.63 84.54, 96.31 85.39, 21.25 85 M21.25 85 C6.51 86.48, -0.31 78.56, 0 63.75 M21.25 85 C7.6 86.89, -0.25 78.94, 0 63.75 M0 63.75 C-0.32 51.06, -0.23 33.51, 0 21.25 M0 63.75 C0.87 49.29, 0.72 33.68, 0 21.25 M0 21.25 C-1.82 8.88, 5.46 -0.2, 21.25 0 M0 21.25 C-0.23 8.64, 5.1 0.61, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(946.8893768410662 423.45689391476054) rotate(0 100.99990844726562 25)"><text x="100.99990844726562" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">4. wire everything to</text><text x="100.99990844726562" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">the output signals</text></g><g stroke-linecap="round" transform="translate(1250.3996550197917 338.759817139945) rotate(0 139.13306104271328 55)"><path d="M27.5 0 C88.41 0.71, 148.09 -2.28, 250.77 0 M27.5 0 C75.03 -0.67, 121.12 -1.14, 250.77 0 M250.77 0 C269.31 1.74, 278.5 7.76, 278.27 27.5 M250.77 0 C269.91 -1.91, 277.95 9.48, 278.27 27.5 M278.27 27.5 C276.85 39.04, 278.86 52.37, 278.27 82.5 M278.27 27.5 C277.39 45.87, 277.73 63.12, 278.27 82.5 M278.27 82.5 C279.91 101.72, 270.05 111.44, 250.77 110 M278.27 82.5 C279.01 102.86, 270.54 112.14, 250.77 110 M250.77 110 C159.86 111.04, 70.61 110.39, 27.5 110 M250.77 110 C163.73 111.28, 77.44 111.59, 27.5 110 M27.5 110 C10.27 111.45, 1.53 101.09, 0 82.5 M27.5 110 C10.16 107.93, 0.49 101.47, 0 82.5 M0 82.5 C0.7 61.95, -0.73 41.13, 0 27.5 M0 82.5 C0.35 66.29, 0.33 49.98, 0 27.5 M0 27.5 C1.27 10.1, 9.94 0.79, 27.5 0 M0 27.5 C1.2 11.27, 9.95 1.32, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(1268.9228070048875 368.759817139945) rotate(0 120.60990905761719 25)"><text x="120.60990905761719" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Also we pass the nonce </text><text x="120.60990905761719" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">and the shared key</text></g><g stroke-linecap="round"><g transform="translate(1171.4485528758678 344.0757943149472) rotate(0 33.212977834885805 28.31014262848322)"><path d="M0.9 -0.74 C12.12 8.92, 56.07 47.88, 67.03 57.56 M-0.09 1.48 C11.06 10.86, 55.38 46.95, 66.41 55.94" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1171.4485528758678 344.0757943149472) rotate(0 33.212977834885805 28.31014262848322)"><path d="M38.07 46.08 C44.56 49.58, 55.14 51.72, 66.41 55.94 M38.07 46.08 C49.28 50.25, 58.09 52.56, 66.41 55.94" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(1171.4485528758678 344.0757943149472) rotate(0 33.212977834885805 28.31014262848322)"><path d="M51.04 30.17 C53.92 38.13, 60.94 44.63, 66.41 55.94 M51.04 30.17 C57.53 40.19, 61.63 48.28, 66.41 55.94" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask></svg>
@@ -18,4 +18,4 @@
18
18
  </style>
19
19
 
20
20
  </defs>
21
- <rect x="0" y="0" width="962.581525322702" height="409.41444389171056" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(321.0041776352655 169.08716412264084) rotate(0 114.33810379333897 33.800522136203085)"><path d="M16.9 0 C82.86 0.39, 146.7 -1.28, 211.78 0 M16.9 0 C66.45 -0.25, 116.15 0.32, 211.78 0 M211.78 0 C221.98 -0.36, 227.29 6.53, 228.68 16.9 M211.78 0 C222.51 -2.12, 230.51 7.34, 228.68 16.9 M228.68 16.9 C229.05 28.15, 230.29 35.27, 228.68 50.7 M228.68 16.9 C229.33 26.76, 229.32 36.76, 228.68 50.7 M228.68 50.7 C227.67 62.04, 222.28 68.68, 211.78 67.6 M228.68 50.7 C227.76 61.18, 224.14 66.14, 211.78 67.6 M211.78 67.6 C164.76 66.77, 119.2 69.29, 16.9 67.6 M211.78 67.6 C138.6 67.23, 64.98 67.09, 16.9 67.6 M16.9 67.6 C3.82 68.66, 0.1 61.37, 0 50.7 M16.9 67.6 C4.12 69.61, -1.56 62.53, 0 50.7 M0 50.7 C1.88 40.4, 1.27 27.71, 0 16.9 M0 50.7 C0.95 42.17, 1.02 33.91, 0 16.9 M0 16.9 C1.53 5.48, 5.26 1.05, 16.9 0 M0 16.9 C0.73 6.51, 3.73 0.43, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(369.7723503983311 190.38768625884381) rotate(0 65.56993103027344 12.5)"><text x="65.56993103027344" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">PrivToPubKey</text></g><g stroke-linecap="round"><g transform="translate(420.34275347662606 86.66141639417106) rotate(0 -2.312345687166726 39.34347104050323)"><path d="M-0.21 -0.57 C-0.99 12.38, -3.21 65.53, -3.88 78.7 M-1.78 1.75 C-2.72 14.82, -3.93 67.27, -4.43 80.24" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(420.34275347662606 86.66141639417106) rotate(0 -2.312345687166726 39.34347104050323)"><path d="M-13.83 51.75 C-11.1 63.43, -6.7 73.26, -4.43 80.24 M-13.83 51.75 C-11.53 59.42, -9.1 67.92, -4.43 80.24" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(420.34275347662606 86.66141639417106) rotate(0 -2.312345687166726 39.34347104050323)"><path d="M6.68 52.38 C1.9 63.8, -1.2 73.39, -4.43 80.24 M6.68 52.38 C3.3 59.94, 0.06 68.27, -4.43 80.24" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(467.98908237813475 121.9644129259309) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(479.2753184901371 270.53132063242674) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(418.5707446353731 255.84645253409008) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M0.44 0.18 C0.43 7.02, 0.22 34.08, 0.15 40.92 M0 -0.2 C0.16 6.74, 1.04 34.82, 1.24 41.57" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 255.84645253409008) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-6.36 22.52 C-3.52 28.29, -1.51 34.46, 1.24 41.57 M-6.36 22.52 C-3.36 29.49, -1.26 35.28, 1.24 41.57" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 255.84645253409008) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M7.67 22.09 C5.84 28.06, 3.19 34.38, 1.24 41.57 M7.67 22.09 C5.82 29.15, 3.09 35.08, 1.24 41.57" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(321.73479892342675 321.772794800499) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C87.08 -0.39, 159.69 0.54, 204.03 0 M16.09 0 C54.91 -2.22, 93.64 -1.07, 204.03 0 M204.03 0 C216.69 1.9, 219.86 5.48, 220.12 16.09 M204.03 0 C216.97 -1.12, 220.87 4.26, 220.12 16.09 M220.12 16.09 C219.93 26, 220.93 36.64, 220.12 48.27 M220.12 16.09 C219.65 24.82, 220.78 32.89, 220.12 48.27 M220.12 48.27 C218.29 59.22, 215.45 65.93, 204.03 64.35 M220.12 48.27 C218.95 58.37, 216.26 64.71, 204.03 64.35 M204.03 64.35 C132.13 62.75, 57.52 61.33, 16.09 64.35 M204.03 64.35 C131.33 64.21, 57.94 65.65, 16.09 64.35 M16.09 64.35 C5.55 65.42, -2 57.83, 0 48.27 M16.09 64.35 C3.17 64.26, 1.43 58.18, 0 48.27 M0 48.27 C-0.01 36, 1.19 25.11, 0 16.09 M0 48.27 C-0.04 37.27, 0.83 25.68, 0 16.09 M0 16.09 C-0.35 3.43, 4.98 0.62, 16.09 0 M0 16.09 C-1.97 3.46, 4.7 -0.7, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(399.81240487503555 341.45021135137495) rotate(0 31.979965209960938 12.5)"><text x="31.979965209960938" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">pubKey</text></g><g transform="translate(604.304562327331 160.36322829268988) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(610.3930684106849 210.9033280264407) rotate(0 49.41329770489415 0.8767946582686363)"><path d="M0.96 0.89 C17.42 1.2, 82.34 0.55, 98.53 0.76 M0 0.31 C16.31 0.83, 81.26 1.82, 97.43 1.77" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.3930684106849 210.9033280264407) rotate(0 49.41329770489415 0.8767946582686363)"><path d="M69.16 11.81 C78.57 8.31, 83.25 4.88, 97.43 1.77 M69.16 11.81 C78.34 8.26, 88.84 4.37, 97.43 1.77" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.3930684106849 210.9033280264407) rotate(0 49.41329770489415 0.8767946582686363)"><path d="M69.32 -8.71 C78.49 -6.52, 83.14 -4.27, 97.43 1.77 M69.32 -8.71 C78.65 -5.43, 89.09 -2.49, 97.43 1.77" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(10 168.86997719411306) rotate(0 138.84988403320312 25)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Generate a public key from </text><text x="0" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">a privateKey</text></g><g stroke-linecap="round" transform="translate(310.6766454753915 10) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C89.6 0.02, 163.41 -1.62, 204.03 0 M16.09 0 C72.75 -1.36, 130.68 -1.65, 204.03 0 M204.03 0 C213.51 0.35, 221.13 4.75, 220.12 16.09 M204.03 0 C212.66 0.26, 220.92 7.18, 220.12 16.09 M220.12 16.09 C220.34 25.88, 220.06 30.32, 220.12 48.27 M220.12 16.09 C219.47 28.32, 219.45 39.04, 220.12 48.27 M220.12 48.27 C220.33 57.78, 213.8 66.03, 204.03 64.35 M220.12 48.27 C220.34 60.22, 212.46 63.02, 204.03 64.35 M204.03 64.35 C164.9 66.92, 126.33 67.05, 16.09 64.35 M204.03 64.35 C149.38 65.72, 93.28 65.53, 16.09 64.35 M16.09 64.35 C4.76 64.12, 1.14 57.33, 0 48.27 M16.09 64.35 C4.96 62.14, -0.44 59.7, 0 48.27 M0 48.27 C-0.35 42.59, -1 32.72, 0 16.09 M0 48.27 C-0.32 39.47, 0.17 32.2, 0 16.09 M0 16.09 C-0.18 4.55, 5.77 0.01, 16.09 0 M0 16.09 C0.08 6.32, 3.39 1.87, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(387.79425234252767 29.677416550875932) rotate(0 32.939964294433594 12.5)"><text x="32.939964294433594" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">privKey</text></g><g stroke-linecap="round" transform="translate(732.4663829995625 55.109525900509425) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C67.11 1.66, 113.07 -0.53, 198.87 0 M21.25 0 C76.75 0.66, 134.43 1.34, 198.87 0 M198.87 0 C212.02 -0.54, 221.43 7.4, 220.12 21.25 M198.87 0 C215.06 0.04, 218.03 8.3, 220.12 21.25 M220.12 21.25 C221.74 32.87, 220.48 47.41, 220.12 63.75 M220.12 21.25 C220.01 31.97, 218.91 41.04, 220.12 63.75 M220.12 63.75 C218.2 77.83, 214.28 84.3, 198.87 85 M220.12 63.75 C221.72 76.94, 214.79 84.83, 198.87 85 M198.87 85 C149.64 83.91, 99.26 84.96, 21.25 85 M198.87 85 C147.48 82.56, 96.26 83.83, 21.25 85 M21.25 85 C5.37 83.35, -0.57 77.31, 0 63.75 M21.25 85 C8.49 83.54, -2.01 77.07, 0 63.75 M0 63.75 C-0.41 48.82, 2 32.12, 0 21.25 M0 63.75 C-0.05 53.14, -0.95 42.51, 0 21.25 M0 21.25 C-1.63 5.86, 6.57 0.1, 21.25 0 M0 21.25 C-1.67 9.36, 4.94 0.43, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(748.5140435776361 72.60952590050942) rotate(0 94.0099105834961 25)"><text x="94.0099105834961" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. Convert the </text><text x="94.0099105834961" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">private key to bits</text></g><g stroke-linecap="round" transform="translate(730.1645237312086 163.6504075083801) rotate(0 110.05757116156974 55)"><path d="M27.5 0 C85.27 2.04, 141.72 -0.8, 192.62 0 M27.5 0 C78.42 -1.57, 131 -1.15, 192.62 0 M192.62 0 C212.71 0.03, 218.3 10.22, 220.12 27.5 M192.62 0 C211.07 -0.69, 218.6 11.18, 220.12 27.5 M220.12 27.5 C219.04 39.32, 221.93 53.23, 220.12 82.5 M220.12 27.5 C218.61 46.89, 220.19 66.02, 220.12 82.5 M220.12 82.5 C221.51 99.98, 212.47 109.85, 192.62 110 M220.12 82.5 C219.69 102.04, 211.68 110.87, 192.62 110 M192.62 110 C156.48 110.64, 119.15 109.15, 27.5 110 M192.62 110 C158.16 109.68, 125.12 110.21, 27.5 110 M27.5 110 C10.39 108.73, -1.75 100.1, 0 82.5 M27.5 110 C10.77 108.67, -0.23 100.08, 0 82.5 M0 82.5 C-1.29 64.23, -0.47 45.23, 0 27.5 M0 82.5 C-0.34 63.1, 0.22 44.97, 0 27.5 M0 27.5 C-1.45 11.15, 7.3 0.37, 27.5 0 M0 27.5 C0.54 9.04, 8.41 1, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(747.2321656935596 168.6504075083801) rotate(0 92.98992919921875 50)"><text x="92.98992919921875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Perform scalar </text><text x="92.98992919921875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">multiplication with </text><text x="92.98992919921875" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">baby jubjub </text><text x="92.98992919921875" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">basepoint</text></g><g stroke-linecap="round" transform="translate(731.0369673181135 314.41444389171056) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C83.8 2.32, 147.47 0.61, 198.87 0 M21.25 0 C70.63 -0.26, 117.34 0.25, 198.87 0 M198.87 0 C213.14 -0.6, 218.8 8.83, 220.12 21.25 M198.87 0 C211.47 0.56, 220.36 5.7, 220.12 21.25 M220.12 21.25 C221.54 29.98, 219.31 40.78, 220.12 63.75 M220.12 21.25 C221.08 33.39, 221.14 46.31, 220.12 63.75 M220.12 63.75 C219.74 78.97, 213.67 85.76, 198.87 85 M220.12 63.75 C218.22 78.35, 212.33 84.73, 198.87 85 M198.87 85 C133.54 84.3, 72.7 82.98, 21.25 85 M198.87 85 C160.88 83.82, 120.81 84.09, 21.25 85 M21.25 85 C8.48 83.84, -0.2 77.26, 0 63.75 M21.25 85 C7.99 87.01, -0.21 76.98, 0 63.75 M0 63.75 C0.83 48.42, 1.63 34.9, 0 21.25 M0 63.75 C-0.62 54.6, -0.83 43.66, 0 21.25 M0 21.25 C0.47 6.97, 6.42 0.87, 21.25 0 M0 21.25 C-2.26 7.56, 8.55 -0.6, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(737.4046199616168 331.91444389171056) rotate(0 103.6899185180664 25)"><text x="103.6899185180664" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. Return the public </text><text x="103.6899185180664" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">key </text></g><g stroke-linecap="round" transform="translate(11.165819158557497 236.84458773187225) rotate(0 121.92637087557455 75.12971569299202)"><path d="M32 0 C80.33 -0.63, 127.72 0.44, 211.85 0 M32 0 C94.26 0.5, 155.49 0.36, 211.85 0 M211.85 0 C232.61 -0.85, 244.96 10.41, 243.85 32 M211.85 0 C233.19 2.3, 244.73 12.3, 243.85 32 M243.85 32 C243.76 65.71, 244.42 102.56, 243.85 118.26 M243.85 32 C244.06 50.29, 243.51 67.95, 243.85 118.26 M243.85 118.26 C242.27 140.17, 233.56 148.32, 211.85 150.26 M243.85 118.26 C245.01 138.24, 231.88 149.78, 211.85 150.26 M211.85 150.26 C142.36 150.6, 73.32 150.88, 32 150.26 M211.85 150.26 C168.91 148.74, 125.46 149.01, 32 150.26 M32 150.26 C9.8 149.72, 0.37 139.56, 0 118.26 M32 150.26 C9.29 151.84, 1.51 137.44, 0 118.26 M0 118.26 C-0.44 84.77, -0.41 53.06, 0 32 M0 118.26 C-0.73 86.59, 0.83 57.05, 0 32 M0 32 C-1.37 9.83, 12.44 1.58, 32 0 M0 32 C-1.74 9.14, 11.15 1.39, 32 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(17.372295624952358 249.47430342486427) rotate(0 115.71989440917969 62.5)"><text x="115.71989440917969" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Base point = point on </text><text x="115.71989440917969" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">an elliptic curve which </text><text x="115.71989440917969" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">multiplied by any number</text><text x="115.71989440917969" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">results in a point on </text><text x="115.71989440917969" y="100" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">the curve.</text></g></svg>
21
+ <rect x="0" y="0" width="962.581525322702" height="409.41444389171056" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(321.0041776352655 169.08716412264084) rotate(0 114.33810379333897 33.800522136203085)"><path d="M16.9 0 C82.86 0.39, 146.7 -1.28, 211.78 0 M16.9 0 C66.45 -0.25, 116.15 0.32, 211.78 0 M211.78 0 C221.98 -0.36, 227.29 6.53, 228.68 16.9 M211.78 0 C222.51 -2.12, 230.51 7.34, 228.68 16.9 M228.68 16.9 C229.05 28.15, 230.29 35.27, 228.68 50.7 M228.68 16.9 C229.33 26.76, 229.32 36.76, 228.68 50.7 M228.68 50.7 C227.67 62.04, 222.28 68.68, 211.78 67.6 M228.68 50.7 C227.76 61.18, 224.14 66.14, 211.78 67.6 M211.78 67.6 C164.76 66.77, 119.2 69.29, 16.9 67.6 M211.78 67.6 C138.6 67.23, 64.98 67.09, 16.9 67.6 M16.9 67.6 C3.82 68.66, 0.1 61.37, 0 50.7 M16.9 67.6 C4.12 69.61, -1.56 62.53, 0 50.7 M0 50.7 C1.88 40.4, 1.27 27.71, 0 16.9 M0 50.7 C0.95 42.17, 1.02 33.91, 0 16.9 M0 16.9 C1.53 5.48, 5.26 1.05, 16.9 0 M0 16.9 C0.73 6.51, 3.73 0.43, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(369.7723503983311 190.38768625884381) rotate(0 65.56993103027344 12.5)"><text x="65.56993103027344" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">PrivToPubKey</text></g><g stroke-linecap="round"><g transform="translate(420.34275347662606 86.66141639417106) rotate(0 -2.312345687166726 39.34347104050323)"><path d="M-0.21 -0.57 C-0.99 12.38, -3.21 65.53, -3.88 78.7 M-1.78 1.75 C-2.72 14.82, -3.93 67.27, -4.43 80.24" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(420.34275347662606 86.66141639417106) rotate(0 -2.312345687166726 39.34347104050323)"><path d="M-13.83 51.75 C-11.1 63.43, -6.7 73.26, -4.43 80.24 M-13.83 51.75 C-11.53 59.42, -9.1 67.92, -4.43 80.24" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(420.34275347662606 86.66141639417106) rotate(0 -2.312345687166726 39.34347104050323)"><path d="M6.68 52.38 C1.9 63.8, -1.2 73.39, -4.43 80.24 M6.68 52.38 C3.3 59.94, 0.06 68.27, -4.43 80.24" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(467.98908237813475 121.9644129259309) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(479.2753184901371 270.53132063242674) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(418.5707446353731 255.84645253409008) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M0.44 0.18 C0.43 7.02, 0.22 34.08, 0.15 40.92 M0 -0.2 C0.16 6.74, 1.04 34.82, 1.24 41.57" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 255.84645253409008) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-6.36 22.52 C-3.52 28.29, -1.51 34.46, 1.24 41.57 M-6.36 22.52 C-3.36 29.49, -1.26 35.28, 1.24 41.57" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 255.84645253409008) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M7.67 22.09 C5.84 28.06, 3.19 34.38, 1.24 41.57 M7.67 22.09 C5.82 29.15, 3.09 35.08, 1.24 41.57" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(321.73479892342675 321.772794800499) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C87.08 -0.39, 159.69 0.54, 204.03 0 M16.09 0 C54.91 -2.22, 93.64 -1.07, 204.03 0 M204.03 0 C216.69 1.9, 219.86 5.48, 220.12 16.09 M204.03 0 C216.97 -1.12, 220.87 4.26, 220.12 16.09 M220.12 16.09 C219.93 26, 220.93 36.64, 220.12 48.27 M220.12 16.09 C219.65 24.82, 220.78 32.89, 220.12 48.27 M220.12 48.27 C218.29 59.22, 215.45 65.93, 204.03 64.35 M220.12 48.27 C218.95 58.37, 216.26 64.71, 204.03 64.35 M204.03 64.35 C132.13 62.75, 57.52 61.33, 16.09 64.35 M204.03 64.35 C131.33 64.21, 57.94 65.65, 16.09 64.35 M16.09 64.35 C5.55 65.42, -2 57.83, 0 48.27 M16.09 64.35 C3.17 64.26, 1.43 58.18, 0 48.27 M0 48.27 C-0.01 36, 1.19 25.11, 0 16.09 M0 48.27 C-0.04 37.27, 0.83 25.68, 0 16.09 M0 16.09 C-0.35 3.43, 4.98 0.62, 16.09 0 M0 16.09 C-1.97 3.46, 4.7 -0.7, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(399.81240487503555 341.45021135137495) rotate(0 31.979965209960938 12.5)"><text x="31.979965209960938" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">publicKey</text></g><g transform="translate(604.304562327331 160.36322829268988) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(610.3930684106849 210.9033280264407) rotate(0 49.41329770489415 0.8767946582686363)"><path d="M0.96 0.89 C17.42 1.2, 82.34 0.55, 98.53 0.76 M0 0.31 C16.31 0.83, 81.26 1.82, 97.43 1.77" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.3930684106849 210.9033280264407) rotate(0 49.41329770489415 0.8767946582686363)"><path d="M69.16 11.81 C78.57 8.31, 83.25 4.88, 97.43 1.77 M69.16 11.81 C78.34 8.26, 88.84 4.37, 97.43 1.77" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.3930684106849 210.9033280264407) rotate(0 49.41329770489415 0.8767946582686363)"><path d="M69.32 -8.71 C78.49 -6.52, 83.14 -4.27, 97.43 1.77 M69.32 -8.71 C78.65 -5.43, 89.09 -2.49, 97.43 1.77" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(10 168.86997719411306) rotate(0 138.84988403320312 25)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Generate a public key from </text><text x="0" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">a privateKey</text></g><g stroke-linecap="round" transform="translate(310.6766454753915 10) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C89.6 0.02, 163.41 -1.62, 204.03 0 M16.09 0 C72.75 -1.36, 130.68 -1.65, 204.03 0 M204.03 0 C213.51 0.35, 221.13 4.75, 220.12 16.09 M204.03 0 C212.66 0.26, 220.92 7.18, 220.12 16.09 M220.12 16.09 C220.34 25.88, 220.06 30.32, 220.12 48.27 M220.12 16.09 C219.47 28.32, 219.45 39.04, 220.12 48.27 M220.12 48.27 C220.33 57.78, 213.8 66.03, 204.03 64.35 M220.12 48.27 C220.34 60.22, 212.46 63.02, 204.03 64.35 M204.03 64.35 C164.9 66.92, 126.33 67.05, 16.09 64.35 M204.03 64.35 C149.38 65.72, 93.28 65.53, 16.09 64.35 M16.09 64.35 C4.76 64.12, 1.14 57.33, 0 48.27 M16.09 64.35 C4.96 62.14, -0.44 59.7, 0 48.27 M0 48.27 C-0.35 42.59, -1 32.72, 0 16.09 M0 48.27 C-0.32 39.47, 0.17 32.2, 0 16.09 M0 16.09 C-0.18 4.55, 5.77 0.01, 16.09 0 M0 16.09 C0.08 6.32, 3.39 1.87, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(387.79425234252767 29.677416550875932) rotate(0 32.939964294433594 12.5)"><text x="32.939964294433594" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">privateKey</text></g><g stroke-linecap="round" transform="translate(732.4663829995625 55.109525900509425) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C67.11 1.66, 113.07 -0.53, 198.87 0 M21.25 0 C76.75 0.66, 134.43 1.34, 198.87 0 M198.87 0 C212.02 -0.54, 221.43 7.4, 220.12 21.25 M198.87 0 C215.06 0.04, 218.03 8.3, 220.12 21.25 M220.12 21.25 C221.74 32.87, 220.48 47.41, 220.12 63.75 M220.12 21.25 C220.01 31.97, 218.91 41.04, 220.12 63.75 M220.12 63.75 C218.2 77.83, 214.28 84.3, 198.87 85 M220.12 63.75 C221.72 76.94, 214.79 84.83, 198.87 85 M198.87 85 C149.64 83.91, 99.26 84.96, 21.25 85 M198.87 85 C147.48 82.56, 96.26 83.83, 21.25 85 M21.25 85 C5.37 83.35, -0.57 77.31, 0 63.75 M21.25 85 C8.49 83.54, -2.01 77.07, 0 63.75 M0 63.75 C-0.41 48.82, 2 32.12, 0 21.25 M0 63.75 C-0.05 53.14, -0.95 42.51, 0 21.25 M0 21.25 C-1.63 5.86, 6.57 0.1, 21.25 0 M0 21.25 C-1.67 9.36, 4.94 0.43, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(748.5140435776361 72.60952590050942) rotate(0 94.0099105834961 25)"><text x="94.0099105834961" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. Convert the </text><text x="94.0099105834961" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">private key to bits</text></g><g stroke-linecap="round" transform="translate(730.1645237312086 163.6504075083801) rotate(0 110.05757116156974 55)"><path d="M27.5 0 C85.27 2.04, 141.72 -0.8, 192.62 0 M27.5 0 C78.42 -1.57, 131 -1.15, 192.62 0 M192.62 0 C212.71 0.03, 218.3 10.22, 220.12 27.5 M192.62 0 C211.07 -0.69, 218.6 11.18, 220.12 27.5 M220.12 27.5 C219.04 39.32, 221.93 53.23, 220.12 82.5 M220.12 27.5 C218.61 46.89, 220.19 66.02, 220.12 82.5 M220.12 82.5 C221.51 99.98, 212.47 109.85, 192.62 110 M220.12 82.5 C219.69 102.04, 211.68 110.87, 192.62 110 M192.62 110 C156.48 110.64, 119.15 109.15, 27.5 110 M192.62 110 C158.16 109.68, 125.12 110.21, 27.5 110 M27.5 110 C10.39 108.73, -1.75 100.1, 0 82.5 M27.5 110 C10.77 108.67, -0.23 100.08, 0 82.5 M0 82.5 C-1.29 64.23, -0.47 45.23, 0 27.5 M0 82.5 C-0.34 63.1, 0.22 44.97, 0 27.5 M0 27.5 C-1.45 11.15, 7.3 0.37, 27.5 0 M0 27.5 C0.54 9.04, 8.41 1, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(747.2321656935596 168.6504075083801) rotate(0 92.98992919921875 50)"><text x="92.98992919921875" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Perform scalar </text><text x="92.98992919921875" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">multiplication with </text><text x="92.98992919921875" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">baby jubjub </text><text x="92.98992919921875" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">basepoint</text></g><g stroke-linecap="round" transform="translate(731.0369673181135 314.41444389171056) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C83.8 2.32, 147.47 0.61, 198.87 0 M21.25 0 C70.63 -0.26, 117.34 0.25, 198.87 0 M198.87 0 C213.14 -0.6, 218.8 8.83, 220.12 21.25 M198.87 0 C211.47 0.56, 220.36 5.7, 220.12 21.25 M220.12 21.25 C221.54 29.98, 219.31 40.78, 220.12 63.75 M220.12 21.25 C221.08 33.39, 221.14 46.31, 220.12 63.75 M220.12 63.75 C219.74 78.97, 213.67 85.76, 198.87 85 M220.12 63.75 C218.22 78.35, 212.33 84.73, 198.87 85 M198.87 85 C133.54 84.3, 72.7 82.98, 21.25 85 M198.87 85 C160.88 83.82, 120.81 84.09, 21.25 85 M21.25 85 C8.48 83.84, -0.2 77.26, 0 63.75 M21.25 85 C7.99 87.01, -0.21 76.98, 0 63.75 M0 63.75 C0.83 48.42, 1.63 34.9, 0 21.25 M0 63.75 C-0.62 54.6, -0.83 43.66, 0 21.25 M0 21.25 C0.47 6.97, 6.42 0.87, 21.25 0 M0 21.25 C-2.26 7.56, 8.55 -0.6, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(737.4046199616168 331.91444389171056) rotate(0 103.6899185180664 25)"><text x="103.6899185180664" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. Return the public </text><text x="103.6899185180664" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">key </text></g><g stroke-linecap="round" transform="translate(11.165819158557497 236.84458773187225) rotate(0 121.92637087557455 75.12971569299202)"><path d="M32 0 C80.33 -0.63, 127.72 0.44, 211.85 0 M32 0 C94.26 0.5, 155.49 0.36, 211.85 0 M211.85 0 C232.61 -0.85, 244.96 10.41, 243.85 32 M211.85 0 C233.19 2.3, 244.73 12.3, 243.85 32 M243.85 32 C243.76 65.71, 244.42 102.56, 243.85 118.26 M243.85 32 C244.06 50.29, 243.51 67.95, 243.85 118.26 M243.85 118.26 C242.27 140.17, 233.56 148.32, 211.85 150.26 M243.85 118.26 C245.01 138.24, 231.88 149.78, 211.85 150.26 M211.85 150.26 C142.36 150.6, 73.32 150.88, 32 150.26 M211.85 150.26 C168.91 148.74, 125.46 149.01, 32 150.26 M32 150.26 C9.8 149.72, 0.37 139.56, 0 118.26 M32 150.26 C9.29 151.84, 1.51 137.44, 0 118.26 M0 118.26 C-0.44 84.77, -0.41 53.06, 0 32 M0 118.26 C-0.73 86.59, 0.83 57.05, 0 32 M0 32 C-1.37 9.83, 12.44 1.58, 32 0 M0 32 C-1.74 9.14, 11.15 1.39, 32 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(17.372295624952358 249.47430342486427) rotate(0 115.71989440917969 62.5)"><text x="115.71989440917969" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Base point = point on </text><text x="115.71989440917969" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">an elliptic curve which </text><text x="115.71989440917969" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">multiplied by any number</text><text x="115.71989440917969" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">results in a point on </text><text x="115.71989440917969" y="100" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">the curve.</text></g></svg>
@@ -18,4 +18,4 @@
18
18
  </style>
19
19
 
20
20
  </defs>
21
- <rect x="0" y="0" width="1217.3312986646956" height="496.83961586464534" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(321.0041776352655 269.2483868541449) rotate(0 114.33810379333897 33.800522136203085)"><path d="M16.9 0 C88.76 -0.11, 158 0.44, 211.78 0 M16.9 0 C71.53 0.82, 127.07 1.75, 211.78 0 M211.78 0 C223.68 -0.9, 227.92 5.41, 228.68 16.9 M211.78 0 C225.18 -0.9, 226.79 5.25, 228.68 16.9 M228.68 16.9 C227.74 23.13, 228.84 30.7, 228.68 50.7 M228.68 16.9 C227.98 29.02, 228.54 40.3, 228.68 50.7 M228.68 50.7 C228.21 60.46, 222 67.03, 211.78 67.6 M228.68 50.7 C228.75 64.04, 223.87 66.73, 211.78 67.6 M211.78 67.6 C168.98 65.25, 127.31 68.09, 16.9 67.6 M211.78 67.6 C163.66 70.17, 117.7 68.45, 16.9 67.6 M16.9 67.6 C6.89 68.79, 0.74 63.11, 0 50.7 M16.9 67.6 C6.18 66.16, 1.05 63.67, 0 50.7 M0 50.7 C1.57 41.72, -1.05 32.87, 0 16.9 M0 50.7 C-1.02 41.13, -0.71 32.91, 0 16.9 M0 16.9 C-1.23 6.5, 4.23 -0.32, 16.9 0 M0 16.9 C0.42 4.17, 5.24 -0.28, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(362.94235619667086 290.54890899034785) rotate(0 72.3999252319336 12.5)"><text x="72.3999252319336" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">VerifySignature</text></g><g stroke-linecap="round"><g transform="translate(421.4347549620111 183.87817598008132) rotate(0 -2.731305301702662 40.81570261330023)"><path d="M1.15 -0.19 C-0.03 13.24, -5.01 67.39, -6.26 80.99 M0.29 -1.34 C-0.58 12.2, -3.27 68.21, -3.96 82.19" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(421.4347549620111 183.87817598008132) rotate(0 -2.731305301702662 40.81570261330023)"><path d="M-12.83 53.53 C-9.79 62.65, -7.29 73.06, -3.96 82.19 M-12.83 53.53 C-10.21 60.96, -8.45 69.25, -3.96 82.19" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(421.4347549620111 183.87817598008132) rotate(0 -2.731305301702662 40.81570261330023)"><path d="M7.67 54.53 C3.17 63.48, -1.86 73.52, -3.96 82.19 M7.67 54.53 C4.61 61.83, 0.68 69.84, -3.96 82.19" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(467.98908237813475 222.12563565743494) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(479.2753184901371 370.6925433639308) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(418.5707446353731 356.0076752655941) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-0.3 0.39 C-0.13 7.21, 0.53 34.01, 0.62 40.77 M0.54 0.11 C0.69 7.01, 0.41 34.44, 0.28 41.35" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 356.0076752655941) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-6.48 21.98 C-4.26 26.72, -3.88 30.42, 0.28 41.35 M-6.48 21.98 C-4.85 27.51, -2.89 33.64, 0.28 41.35" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 356.0076752655941) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M7.55 22.17 C6.58 26.82, 3.77 30.49, 0.28 41.35 M7.55 22.17 C5.13 27.61, 3.03 33.69, 0.28 41.35" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(321.73479892342675 421.93401753200305) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C61.23 -1.36, 107.97 1.26, 204.03 0 M16.09 0 C64.31 1.22, 113.35 -0.31, 204.03 0 M204.03 0 C213.58 -0.15, 219.1 6.12, 220.12 16.09 M204.03 0 C212.78 -0.82, 219.17 6.98, 220.12 16.09 M220.12 16.09 C218.79 25.21, 219.73 36.48, 220.12 48.27 M220.12 16.09 C219.36 28.22, 219.51 40.52, 220.12 48.27 M220.12 48.27 C219.18 57.48, 216.66 63.23, 204.03 64.35 M220.12 48.27 C221.16 60.86, 213.23 66.63, 204.03 64.35 M204.03 64.35 C133.07 66.27, 60.87 66.01, 16.09 64.35 M204.03 64.35 C159.24 65.69, 114.06 66.52, 16.09 64.35 M16.09 64.35 C5.93 63.28, 1.28 58.4, 0 48.27 M16.09 64.35 C7.06 65.69, -1.77 58, 0 48.27 M0 48.27 C0.71 38.68, -0.47 32.27, 0 16.09 M0 48.27 C0.5 40.12, -0.75 32.37, 0 16.09 M0 16.09 C-0.54 6.98, 6.78 -1.23, 16.09 0 M0 16.09 C-1.55 4.33, 5.09 1.94, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(409.3823893110707 441.611434082879) rotate(0 22.40998077392578 12.5)"><text x="22.40998077392578" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">valid</text></g><g transform="translate(604.3045623273312 260.52445102419415) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(610.393068410685 311.06455075794474) rotate(0 93.97450351338216 1.8903043869634075)"><path d="M-0.98 -0.2 C29.99 0.69, 155.65 4.33, 186.98 4.87 M0.7 -1.35 C31.95 -0.73, 157.73 2.44, 189.18 3.32" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.393068410685 311.06455075794474) rotate(0 93.97450351338216 1.8903043869634075)"><path d="M160.73 12.84 C171.61 7.71, 184.95 4, 189.18 3.32 M160.73 12.84 C167.04 10.98, 173.45 7.98, 189.18 3.32" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.393068410685 311.06455075794474) rotate(0 93.97450351338216 1.8903043869634075)"><path d="M161.27 -7.68 C171.86 -4.74, 184.99 -0.39, 189.18 3.32 M161.27 -7.68 C167.33 -4.66, 173.62 -2.78, 189.18 3.32" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(10 269.0311999256169) rotate(0 126.28990173339844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Verify a EdDSA signature</text></g><g stroke-linecap="round" transform="translate(312.12392397068345 107.21675958591004) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C56.02 0.32, 98.3 0.48, 204.03 0 M16.09 0 C79.15 1.37, 143.18 1.24, 204.03 0 M204.03 0 C214.29 -1.51, 219.08 4.79, 220.12 16.09 M204.03 0 C214.83 2.07, 220.94 4.49, 220.12 16.09 M220.12 16.09 C218.66 22, 218.47 31.69, 220.12 48.27 M220.12 16.09 C219.6 24.91, 221.1 31.02, 220.12 48.27 M220.12 48.27 C221.37 60.18, 215.49 65.5, 204.03 64.35 M220.12 48.27 C220.66 57.55, 215.8 66.06, 204.03 64.35 M204.03 64.35 C152.45 63.52, 96.71 64.23, 16.09 64.35 M204.03 64.35 C152.46 65.02, 101.97 65.93, 16.09 64.35 M16.09 64.35 C4.13 65.22, -1.4 58.67, 0 48.27 M16.09 64.35 C5.78 62.89, -0.39 58.71, 0 48.27 M0 48.27 C-1.2 36.64, 1.79 27.5, 0 16.09 M0 48.27 C0.1 41.44, -0.53 33.73, 0 16.09 M0 16.09 C-1.02 7.29, 3.92 -0.5, 16.09 0 M0 16.09 C1.22 6.57, 5.1 1.21, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(390.20152992229225 126.89417613678597) rotate(0 31.979965209960938 12.5)"><text x="31.979965209960938" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">pubKey</text></g><g stroke-linecap="round" transform="translate(821.4290949205064 156.92763297834836) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C64.85 -0.82, 106.22 0.08, 198.87 0 M21.25 0 C86.8 -1.76, 152.3 -1.29, 198.87 0 M198.87 0 C213.1 1.8, 220.83 6.33, 220.12 21.25 M198.87 0 C211.03 -0.95, 218.45 5.57, 220.12 21.25 M220.12 21.25 C218.66 32.92, 221.42 41.45, 220.12 63.75 M220.12 21.25 C221.1 38.8, 220.84 55.72, 220.12 63.75 M220.12 63.75 C220.59 76.66, 213.95 86.48, 198.87 85 M220.12 63.75 C219.72 77.8, 211.31 86.78, 198.87 85 M198.87 85 C139.94 87.61, 83.36 84.6, 21.25 85 M198.87 85 C152.62 86.28, 106.9 85.69, 21.25 85 M21.25 85 C7.45 83.73, -0.34 77.67, 0 63.75 M21.25 85 C8.11 83.74, -1.84 76.34, 0 63.75 M0 63.75 C-1.57 50.79, -1.24 40.29, 0 21.25 M0 63.75 C-0.19 48.37, -0.4 30.81, 0 21.25 M0 21.25 C1.06 8.14, 6.86 1.06, 21.25 0 M0 21.25 C-1.74 9, 5.48 -1.54, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(829.3667472588339 174.42763297834836) rotate(0 102.11991882324219 25)"><text x="102.11991882324219" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. hash the preImage</text><text x="102.11991882324219" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">using Poseidon</text></g><g stroke-linecap="round" transform="translate(819.2869353481848 267.96382233672193) rotate(0 194.02218165825548 55)"><path d="M27.5 0 C99.75 1.14, 170.87 0.61, 360.54 0 M27.5 0 C102.25 1.25, 177.2 0.39, 360.54 0 M360.54 0 C377.13 -0.82, 386.6 7.85, 388.04 27.5 M360.54 0 C377.8 -1.74, 390.23 7.87, 388.04 27.5 M388.04 27.5 C390.47 48.17, 387.02 66.74, 388.04 82.5 M388.04 27.5 C388.49 46.65, 388.7 67.8, 388.04 82.5 M388.04 82.5 C387.7 100.73, 377.38 111.55, 360.54 110 M388.04 82.5 C388.7 99.6, 380.35 109.32, 360.54 110 M360.54 110 C235.51 107.65, 112.3 107.43, 27.5 110 M360.54 110 C246.4 109.21, 131.89 109.56, 27.5 110 M27.5 110 C10.06 108.91, -1.6 99.46, 0 82.5 M27.5 110 C8.55 111.86, 1.62 99.42, 0 82.5 M0 82.5 C1.94 68.21, 1.87 55.87, 0 27.5 M0 82.5 C0.93 61.22, 0.28 39.42, 0 27.5 M0 27.5 C-1.51 10.83, 7.77 -1.34, 27.5 0 M0 27.5 C0.21 10.77, 10.3 -1.48, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(831.4892470113231 272.96382233672193) rotate(0 181.8198699951172 50)"><text x="181.8198699951172" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Verify using </text><text x="181.8198699951172" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">EdDSAPoseidonVerifier_patched</text><text x="181.8198699951172" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">which takes all inputs and the hash </text><text x="181.8198699951172" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">of the preImage of the signature</text></g><g stroke-linecap="round" transform="translate(818.1681233501882 401.83961586464534) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C75.84 -0.63, 132.88 0.48, 198.87 0 M21.25 0 C89.63 0.26, 159.03 0.01, 198.87 0 M198.87 0 C212.09 -1.52, 222.02 5.95, 220.12 21.25 M198.87 0 C214.07 1.87, 218.6 9.36, 220.12 21.25 M220.12 21.25 C220.99 38.3, 220.95 54.36, 220.12 63.75 M220.12 21.25 C220.14 31.29, 219.56 42.2, 220.12 63.75 M220.12 63.75 C220.68 76.85, 214.31 84.41, 198.87 85 M220.12 63.75 C221.81 79.26, 211.27 84.01, 198.87 85 M198.87 85 C154.56 82.5, 108.21 84.27, 21.25 85 M198.87 85 C157.35 84.24, 114.13 84.1, 21.25 85 M21.25 85 C6.55 86.62, 1.41 76.69, 0 63.75 M21.25 85 C5.54 83.96, -0.27 79.86, 0 63.75 M0 63.75 C1.58 52.71, -0.85 45.62, 0 21.25 M0 63.75 C-0.71 49.6, -0.65 33.11, 0 21.25 M0 21.25 C0.19 8.48, 8.07 -1.28, 21.25 0 M0 21.25 C1.8 5.83, 7.43 -0.4, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(826.6457766040431 419.33961586464534) rotate(0 101.57991790771484 25)"><text x="101.57991790771484" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. Return whether is</text><text x="101.57991790771484" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">valid or not</text></g><g stroke-linecap="round" transform="translate(61.99469259540717 105.26086868321454) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C55.1 -0.82, 97.29 -0.92, 204.03 0 M16.09 0 C60.06 -0.54, 104.77 -0.21, 204.03 0 M204.03 0 C215.56 0.02, 221.19 3.66, 220.12 16.09 M204.03 0 C212.7 -0.46, 219.69 7.48, 220.12 16.09 M220.12 16.09 C218.9 24.79, 222.29 30.57, 220.12 48.27 M220.12 16.09 C219.82 25.65, 220.33 36.12, 220.12 48.27 M220.12 48.27 C220.67 59.81, 214.06 64.01, 204.03 64.35 M220.12 48.27 C218.84 57.11, 215.53 65.49, 204.03 64.35 M204.03 64.35 C134.44 65.69, 64.81 63.6, 16.09 64.35 M204.03 64.35 C143.77 63.08, 84.22 63.05, 16.09 64.35 M16.09 64.35 C3.45 63.62, -0.75 60.78, 0 48.27 M16.09 64.35 C6.47 65.87, -1.2 57.38, 0 48.27 M0 48.27 C-2.21 38.1, 1.4 31.59, 0 16.09 M0 48.27 C0.64 35.13, -1.24 22.69, 0 16.09 M0 16.09 C-1.63 6.15, 6.4 0.31, 16.09 0 M0 16.09 C-1.72 5.89, 4.62 -0.88, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(120.202311059223 124.93828523409047) rotate(0 51.849952697753906 12.5)"><text x="51.849952697753906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureR</text></g><g stroke-linecap="round" transform="translate(552.8217271194076 104.8566288276329) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C92.23 0.62, 166.8 -1.05, 204.03 0 M16.09 0 C64.87 1.81, 113.62 1.49, 204.03 0 M204.03 0 C214.38 -0.92, 220.6 5.98, 220.12 16.09 M204.03 0 C216.62 0.01, 221 5.33, 220.12 16.09 M220.12 16.09 C218.65 23.6, 220.85 34.37, 220.12 48.27 M220.12 16.09 C220.16 26.13, 220.33 37.13, 220.12 48.27 M220.12 48.27 C219.07 59.89, 216.63 66.01, 204.03 64.35 M220.12 48.27 C222.26 60.44, 215.63 64, 204.03 64.35 M204.03 64.35 C146.66 63.06, 85.76 65.02, 16.09 64.35 M204.03 64.35 C148.04 63.62, 91.25 62.28, 16.09 64.35 M16.09 64.35 C4.39 63.79, 0.45 57.77, 0 48.27 M16.09 64.35 C3.07 64.5, 0.29 58.04, 0 48.27 M0 48.27 C-1.58 36.6, -0.76 24, 0 16.09 M0 48.27 C-0.94 36.5, -0.41 25.6, 0 16.09 M0 16.09 C1.69 6.74, 3.6 -1.36, 16.09 0 M0 16.09 C-1.76 5.43, 3.32 1.68, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(611.7293501608601 124.53404537850884) rotate(0 51.14994812011719 12.5)"><text x="51.14994812011719" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureS</text></g><g stroke-linecap="round" transform="translate(319.9645984579398 10) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C56.1 -3.17, 96.71 -3.37, 204.03 0 M16.09 0 C67.11 -0.94, 117.53 -0.81, 204.03 0 M204.03 0 C216.63 -1.52, 218.55 5.29, 220.12 16.09 M204.03 0 C213.59 0.13, 219.04 5.35, 220.12 16.09 M220.12 16.09 C220.84 26.31, 218.45 37.31, 220.12 48.27 M220.12 16.09 C221.15 28.91, 219.9 40.65, 220.12 48.27 M220.12 48.27 C218.34 58.62, 215.88 65.94, 204.03 64.35 M220.12 48.27 C221.98 60.4, 216.18 62.69, 204.03 64.35 M204.03 64.35 C154.41 64.6, 108.46 63.64, 16.09 64.35 M204.03 64.35 C142.34 64.99, 81.51 64.34, 16.09 64.35 M16.09 64.35 C3.84 64.21, -1.05 57.06, 0 48.27 M16.09 64.35 C6.55 66.09, -1.49 61.09, 0 48.27 M0 48.27 C0.34 36.09, -0.03 24.79, 0 16.09 M0 48.27 C-1.02 39.7, -0.21 30.88, 0 16.09 M0 16.09 C1.6 3.93, 6.96 0.4, 16.09 0 M0 16.09 C-1.78 5.13, 4.26 -1.6, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(365.8422227200955 17.177416550875932) rotate(0 64.17994689941406 25)"><text x="64.17994689941406" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">preImage (4 </text><text x="64.17994689941406" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">elements)</text></g></svg>
21
+ <rect x="0" y="0" width="1217.3312986646956" height="496.83961586464534" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(321.0041776352655 269.2483868541449) rotate(0 114.33810379333897 33.800522136203085)"><path d="M16.9 0 C88.76 -0.11, 158 0.44, 211.78 0 M16.9 0 C71.53 0.82, 127.07 1.75, 211.78 0 M211.78 0 C223.68 -0.9, 227.92 5.41, 228.68 16.9 M211.78 0 C225.18 -0.9, 226.79 5.25, 228.68 16.9 M228.68 16.9 C227.74 23.13, 228.84 30.7, 228.68 50.7 M228.68 16.9 C227.98 29.02, 228.54 40.3, 228.68 50.7 M228.68 50.7 C228.21 60.46, 222 67.03, 211.78 67.6 M228.68 50.7 C228.75 64.04, 223.87 66.73, 211.78 67.6 M211.78 67.6 C168.98 65.25, 127.31 68.09, 16.9 67.6 M211.78 67.6 C163.66 70.17, 117.7 68.45, 16.9 67.6 M16.9 67.6 C6.89 68.79, 0.74 63.11, 0 50.7 M16.9 67.6 C6.18 66.16, 1.05 63.67, 0 50.7 M0 50.7 C1.57 41.72, -1.05 32.87, 0 16.9 M0 50.7 C-1.02 41.13, -0.71 32.91, 0 16.9 M0 16.9 C-1.23 6.5, 4.23 -0.32, 16.9 0 M0 16.9 C0.42 4.17, 5.24 -0.28, 16.9 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(362.94235619667086 290.54890899034785) rotate(0 72.3999252319336 12.5)"><text x="72.3999252319336" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#e03131" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">VerifySignature</text></g><g stroke-linecap="round"><g transform="translate(421.4347549620111 183.87817598008132) rotate(0 -2.731305301702662 40.81570261330023)"><path d="M1.15 -0.19 C-0.03 13.24, -5.01 67.39, -6.26 80.99 M0.29 -1.34 C-0.58 12.2, -3.27 68.21, -3.96 82.19" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(421.4347549620111 183.87817598008132) rotate(0 -2.731305301702662 40.81570261330023)"><path d="M-12.83 53.53 C-9.79 62.65, -7.29 73.06, -3.96 82.19 M-12.83 53.53 C-10.21 60.96, -8.45 69.25, -3.96 82.19" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(421.4347549620111 183.87817598008132) rotate(0 -2.731305301702662 40.81570261330023)"><path d="M7.67 54.53 C3.17 63.48, -1.86 73.52, -3.96 82.19 M7.67 54.53 C4.61 61.83, 0.68 69.84, -3.96 82.19" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(467.98908237813475 222.12563565743494) rotate(0 31.809967041015625 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inputs</text></g><g transform="translate(479.2753184901371 370.6925433639308) rotate(0 34.84996032714844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Output</text></g><g stroke-linecap="round"><g transform="translate(418.5707446353731 356.0076752655941) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-0.3 0.39 C-0.13 7.21, 0.53 34.01, 0.62 40.77 M0.54 0.11 C0.69 7.01, 0.41 34.44, 0.28 41.35" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 356.0076752655941) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M-6.48 21.98 C-4.26 26.72, -3.88 30.42, 0.28 41.35 M-6.48 21.98 C-4.85 27.51, -2.89 33.64, 0.28 41.35" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(418.5707446353731 356.0076752655941) rotate(0 0.2229014099474398 20.511057519056408)"><path d="M7.55 22.17 C6.58 26.82, 3.77 30.49, 0.28 41.35 M7.55 22.17 C5.13 27.61, 3.03 33.69, 0.28 41.35" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(321.73479892342675 421.93401753200305) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C61.23 -1.36, 107.97 1.26, 204.03 0 M16.09 0 C64.31 1.22, 113.35 -0.31, 204.03 0 M204.03 0 C213.58 -0.15, 219.1 6.12, 220.12 16.09 M204.03 0 C212.78 -0.82, 219.17 6.98, 220.12 16.09 M220.12 16.09 C218.79 25.21, 219.73 36.48, 220.12 48.27 M220.12 16.09 C219.36 28.22, 219.51 40.52, 220.12 48.27 M220.12 48.27 C219.18 57.48, 216.66 63.23, 204.03 64.35 M220.12 48.27 C221.16 60.86, 213.23 66.63, 204.03 64.35 M204.03 64.35 C133.07 66.27, 60.87 66.01, 16.09 64.35 M204.03 64.35 C159.24 65.69, 114.06 66.52, 16.09 64.35 M16.09 64.35 C5.93 63.28, 1.28 58.4, 0 48.27 M16.09 64.35 C7.06 65.69, -1.77 58, 0 48.27 M0 48.27 C0.71 38.68, -0.47 32.27, 0 16.09 M0 48.27 C0.5 40.12, -0.75 32.37, 0 16.09 M0 16.09 C-0.54 6.98, 6.78 -1.23, 16.09 0 M0 16.09 C-1.55 4.33, 5.09 1.94, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(409.3823893110707 441.611434082879) rotate(0 22.40998077392578 12.5)"><text x="22.40998077392578" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#2f9e44" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">valid</text></g><g transform="translate(604.3045623273312 260.52445102419415) rotate(0 49.669944763183594 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Processing</text></g><g stroke-linecap="round"><g transform="translate(610.393068410685 311.06455075794474) rotate(0 93.97450351338216 1.8903043869634075)"><path d="M-0.98 -0.2 C29.99 0.69, 155.65 4.33, 186.98 4.87 M0.7 -1.35 C31.95 -0.73, 157.73 2.44, 189.18 3.32" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.393068410685 311.06455075794474) rotate(0 93.97450351338216 1.8903043869634075)"><path d="M160.73 12.84 C171.61 7.71, 184.95 4, 189.18 3.32 M160.73 12.84 C167.04 10.98, 173.45 7.98, 189.18 3.32" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g><g transform="translate(610.393068410685 311.06455075794474) rotate(0 93.97450351338216 1.8903043869634075)"><path d="M161.27 -7.68 C171.86 -4.74, 184.99 -0.39, 189.18 3.32 M161.27 -7.68 C167.33 -4.66, 173.62 -2.78, 189.18 3.32" stroke="#1e1e1e" stroke-width="1" fill="none"></path></g></g><mask></mask><g transform="translate(10 269.0311999256169) rotate(0 126.28990173339844 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Verify a EdDSA signature</text></g><g stroke-linecap="round" transform="translate(312.12392397068345 107.21675958591004) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C56.02 0.32, 98.3 0.48, 204.03 0 M16.09 0 C79.15 1.37, 143.18 1.24, 204.03 0 M204.03 0 C214.29 -1.51, 219.08 4.79, 220.12 16.09 M204.03 0 C214.83 2.07, 220.94 4.49, 220.12 16.09 M220.12 16.09 C218.66 22, 218.47 31.69, 220.12 48.27 M220.12 16.09 C219.6 24.91, 221.1 31.02, 220.12 48.27 M220.12 48.27 C221.37 60.18, 215.49 65.5, 204.03 64.35 M220.12 48.27 C220.66 57.55, 215.8 66.06, 204.03 64.35 M204.03 64.35 C152.45 63.52, 96.71 64.23, 16.09 64.35 M204.03 64.35 C152.46 65.02, 101.97 65.93, 16.09 64.35 M16.09 64.35 C4.13 65.22, -1.4 58.67, 0 48.27 M16.09 64.35 C5.78 62.89, -0.39 58.71, 0 48.27 M0 48.27 C-1.2 36.64, 1.79 27.5, 0 16.09 M0 48.27 C0.1 41.44, -0.53 33.73, 0 16.09 M0 16.09 C-1.02 7.29, 3.92 -0.5, 16.09 0 M0 16.09 C1.22 6.57, 5.1 1.21, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(390.20152992229225 126.89417613678597) rotate(0 31.979965209960938 12.5)"><text x="31.979965209960938" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">publicKey</text></g><g stroke-linecap="round" transform="translate(821.4290949205064 156.92763297834836) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C64.85 -0.82, 106.22 0.08, 198.87 0 M21.25 0 C86.8 -1.76, 152.3 -1.29, 198.87 0 M198.87 0 C213.1 1.8, 220.83 6.33, 220.12 21.25 M198.87 0 C211.03 -0.95, 218.45 5.57, 220.12 21.25 M220.12 21.25 C218.66 32.92, 221.42 41.45, 220.12 63.75 M220.12 21.25 C221.1 38.8, 220.84 55.72, 220.12 63.75 M220.12 63.75 C220.59 76.66, 213.95 86.48, 198.87 85 M220.12 63.75 C219.72 77.8, 211.31 86.78, 198.87 85 M198.87 85 C139.94 87.61, 83.36 84.6, 21.25 85 M198.87 85 C152.62 86.28, 106.9 85.69, 21.25 85 M21.25 85 C7.45 83.73, -0.34 77.67, 0 63.75 M21.25 85 C8.11 83.74, -1.84 76.34, 0 63.75 M0 63.75 C-1.57 50.79, -1.24 40.29, 0 21.25 M0 63.75 C-0.19 48.37, -0.4 30.81, 0 21.25 M0 21.25 C1.06 8.14, 6.86 1.06, 21.25 0 M0 21.25 C-1.74 9, 5.48 -1.54, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(829.3667472588339 174.42763297834836) rotate(0 102.11991882324219 25)"><text x="102.11991882324219" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1. hash the preImage</text><text x="102.11991882324219" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">using Poseidon</text></g><g stroke-linecap="round" transform="translate(819.2869353481848 267.96382233672193) rotate(0 194.02218165825548 55)"><path d="M27.5 0 C99.75 1.14, 170.87 0.61, 360.54 0 M27.5 0 C102.25 1.25, 177.2 0.39, 360.54 0 M360.54 0 C377.13 -0.82, 386.6 7.85, 388.04 27.5 M360.54 0 C377.8 -1.74, 390.23 7.87, 388.04 27.5 M388.04 27.5 C390.47 48.17, 387.02 66.74, 388.04 82.5 M388.04 27.5 C388.49 46.65, 388.7 67.8, 388.04 82.5 M388.04 82.5 C387.7 100.73, 377.38 111.55, 360.54 110 M388.04 82.5 C388.7 99.6, 380.35 109.32, 360.54 110 M360.54 110 C235.51 107.65, 112.3 107.43, 27.5 110 M360.54 110 C246.4 109.21, 131.89 109.56, 27.5 110 M27.5 110 C10.06 108.91, -1.6 99.46, 0 82.5 M27.5 110 C8.55 111.86, 1.62 99.42, 0 82.5 M0 82.5 C1.94 68.21, 1.87 55.87, 0 27.5 M0 82.5 C0.93 61.22, 0.28 39.42, 0 27.5 M0 27.5 C-1.51 10.83, 7.77 -1.34, 27.5 0 M0 27.5 C0.21 10.77, 10.3 -1.48, 27.5 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(831.4892470113231 272.96382233672193) rotate(0 181.8198699951172 50)"><text x="181.8198699951172" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2. Verify using </text><text x="181.8198699951172" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">EdDSAPoseidonVerifier_patched</text><text x="181.8198699951172" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">which takes all inputs and the hash </text><text x="181.8198699951172" y="75" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">of the preImage of the signature</text></g><g stroke-linecap="round" transform="translate(818.1681233501882 401.83961586464534) rotate(0 110.05757116156974 42.5)"><path d="M21.25 0 C75.84 -0.63, 132.88 0.48, 198.87 0 M21.25 0 C89.63 0.26, 159.03 0.01, 198.87 0 M198.87 0 C212.09 -1.52, 222.02 5.95, 220.12 21.25 M198.87 0 C214.07 1.87, 218.6 9.36, 220.12 21.25 M220.12 21.25 C220.99 38.3, 220.95 54.36, 220.12 63.75 M220.12 21.25 C220.14 31.29, 219.56 42.2, 220.12 63.75 M220.12 63.75 C220.68 76.85, 214.31 84.41, 198.87 85 M220.12 63.75 C221.81 79.26, 211.27 84.01, 198.87 85 M198.87 85 C154.56 82.5, 108.21 84.27, 21.25 85 M198.87 85 C157.35 84.24, 114.13 84.1, 21.25 85 M21.25 85 C6.55 86.62, 1.41 76.69, 0 63.75 M21.25 85 C5.54 83.96, -0.27 79.86, 0 63.75 M0 63.75 C1.58 52.71, -0.85 45.62, 0 21.25 M0 63.75 C-0.71 49.6, -0.65 33.11, 0 21.25 M0 21.25 C0.19 8.48, 8.07 -1.28, 21.25 0 M0 21.25 C1.8 5.83, 7.43 -0.4, 21.25 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(826.6457766040431 419.33961586464534) rotate(0 101.57991790771484 25)"><text x="101.57991790771484" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3. Return whether is</text><text x="101.57991790771484" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">valid or not</text></g><g stroke-linecap="round" transform="translate(61.99469259540717 105.26086868321454) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C55.1 -0.82, 97.29 -0.92, 204.03 0 M16.09 0 C60.06 -0.54, 104.77 -0.21, 204.03 0 M204.03 0 C215.56 0.02, 221.19 3.66, 220.12 16.09 M204.03 0 C212.7 -0.46, 219.69 7.48, 220.12 16.09 M220.12 16.09 C218.9 24.79, 222.29 30.57, 220.12 48.27 M220.12 16.09 C219.82 25.65, 220.33 36.12, 220.12 48.27 M220.12 48.27 C220.67 59.81, 214.06 64.01, 204.03 64.35 M220.12 48.27 C218.84 57.11, 215.53 65.49, 204.03 64.35 M204.03 64.35 C134.44 65.69, 64.81 63.6, 16.09 64.35 M204.03 64.35 C143.77 63.08, 84.22 63.05, 16.09 64.35 M16.09 64.35 C3.45 63.62, -0.75 60.78, 0 48.27 M16.09 64.35 C6.47 65.87, -1.2 57.38, 0 48.27 M0 48.27 C-2.21 38.1, 1.4 31.59, 0 16.09 M0 48.27 C0.64 35.13, -1.24 22.69, 0 16.09 M0 16.09 C-1.63 6.15, 6.4 0.31, 16.09 0 M0 16.09 C-1.72 5.89, 4.62 -0.88, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(120.202311059223 124.93828523409047) rotate(0 51.849952697753906 12.5)"><text x="51.849952697753906" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureR</text></g><g stroke-linecap="round" transform="translate(552.8217271194076 104.8566288276329) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C92.23 0.62, 166.8 -1.05, 204.03 0 M16.09 0 C64.87 1.81, 113.62 1.49, 204.03 0 M204.03 0 C214.38 -0.92, 220.6 5.98, 220.12 16.09 M204.03 0 C216.62 0.01, 221 5.33, 220.12 16.09 M220.12 16.09 C218.65 23.6, 220.85 34.37, 220.12 48.27 M220.12 16.09 C220.16 26.13, 220.33 37.13, 220.12 48.27 M220.12 48.27 C219.07 59.89, 216.63 66.01, 204.03 64.35 M220.12 48.27 C222.26 60.44, 215.63 64, 204.03 64.35 M204.03 64.35 C146.66 63.06, 85.76 65.02, 16.09 64.35 M204.03 64.35 C148.04 63.62, 91.25 62.28, 16.09 64.35 M16.09 64.35 C4.39 63.79, 0.45 57.77, 0 48.27 M16.09 64.35 C3.07 64.5, 0.29 58.04, 0 48.27 M0 48.27 C-1.58 36.6, -0.76 24, 0 16.09 M0 48.27 C-0.94 36.5, -0.41 25.6, 0 16.09 M0 16.09 C1.69 6.74, 3.6 -1.36, 16.09 0 M0 16.09 C-1.76 5.43, 3.32 1.68, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(611.7293501608601 124.53404537850884) rotate(0 51.14994812011719 12.5)"><text x="51.14994812011719" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">signatureS</text></g><g stroke-linecap="round" transform="translate(319.9645984579398 10) rotate(0 110.05757116156974 32.17741655087593)"><path d="M16.09 0 C56.1 -3.17, 96.71 -3.37, 204.03 0 M16.09 0 C67.11 -0.94, 117.53 -0.81, 204.03 0 M204.03 0 C216.63 -1.52, 218.55 5.29, 220.12 16.09 M204.03 0 C213.59 0.13, 219.04 5.35, 220.12 16.09 M220.12 16.09 C220.84 26.31, 218.45 37.31, 220.12 48.27 M220.12 16.09 C221.15 28.91, 219.9 40.65, 220.12 48.27 M220.12 48.27 C218.34 58.62, 215.88 65.94, 204.03 64.35 M220.12 48.27 C221.98 60.4, 216.18 62.69, 204.03 64.35 M204.03 64.35 C154.41 64.6, 108.46 63.64, 16.09 64.35 M204.03 64.35 C142.34 64.99, 81.51 64.34, 16.09 64.35 M16.09 64.35 C3.84 64.21, -1.05 57.06, 0 48.27 M16.09 64.35 C6.55 66.09, -1.49 61.09, 0 48.27 M0 48.27 C0.34 36.09, -0.03 24.79, 0 16.09 M0 48.27 C-1.02 39.7, -0.21 30.88, 0 16.09 M0 16.09 C1.6 3.93, 6.96 0.4, 16.09 0 M0 16.09 C-1.78 5.13, 4.26 -1.6, 16.09 0" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(365.8422227200955 17.177416550875932) rotate(0 64.17994689941406 25)"><text x="64.17994689941406" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">preImage (4 </text><text x="64.17994689941406" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1971c2" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">elements)</text></g></svg>
Binary file
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: Coordinator Service
3
+ description: The Coordinator Service is a service that allows to automate MACI coordinator tasks.
4
+ sidebar_label: Coordinator Service
5
+ sidebar_position: 10
6
+ ---
7
+
8
+ # Coordinator Service
9
+
10
+ MACI’s coordinator service is a backend service that aims to automate MACI-related operations, such as contracts deployment, proof generation and poll finalisation.
11
+
12
+ Up until now, users of MACI have had to manually deploy the smart contracts using some scripts, which while pretty straightforward, they require the manual step of running them from a command line. The same goes for the finalisation of polls, which requires coordinators to check when a poll ends, and then run a number of scripts to process votes and tally them, as well as sending the results on chain. This prevents (or at a minimum makes it very difficult) non technical users from being coordinators of MACI.
13
+
14
+ With the coordinator service, a number of REST endpoints are exposed that allow client applications to perform the above tasks. For instance, now we can have frontend applications with intuitive interfaces to deploy and configure smart contracts. For poll finalisation, this can either be automated with a cron job, or triggered by a client application request.
15
+
16
+ For more details on how to use and integrate the coordinator service into your application, please refer to this [guide](/docs/technical-references/coordinator-service).
@@ -79,8 +79,8 @@ As seen above, we expect the first vote weight 9 to not be counted, but instead
79
79
  ```ts
80
80
  const maciState: MaciState = new MaciState(STATE_TREE_DEPTH);
81
81
  // Sign up
82
- user1StateIndex = maciState.signUp(user1Keypair.pubKey, voiceCreditBalance, BigInt(Math.floor(Date.now() / 1000)));
83
- user2StateIndex = maciState.signUp(user2Keypair.pubKey, voiceCreditBalance, BigInt(Math.floor(Date.now() / 1000)));
82
+ user1StateIndex = maciState.signUp(user1Keypair.publicKey, voiceCreditBalance, BigInt(Math.floor(Date.now() / 1000)));
83
+ user2StateIndex = maciState.signUp(user2Keypair.publicKey, voiceCreditBalance, BigInt(Math.floor(Date.now() / 1000)));
84
84
  // deploy a poll
85
85
  pollId = maciState.deployPoll(
86
86
  duration,
@@ -97,37 +97,37 @@ pollId = maciState.deployPoll(
97
97
  const poll = maciState.polls[pollId];
98
98
  const command1 = new PCommand(
99
99
  BigInt(user1StateIndex),
100
- user1Keypair.pubKey,
100
+ user1Keypair.publicKey,
101
101
  user1VoteOptionIndex,
102
102
  user1VoteWeight,
103
103
  BigInt(1),
104
104
  BigInt(pollId),
105
105
  );
106
106
 
107
- const signature1 = command1.sign(user1Keypair.privKey);
107
+ const signature1 = command1.sign(user1Keypair.privateKey);
108
108
 
109
109
  const ecdhKeypair1 = new Keypair();
110
- const sharedKey1 = Keypair.genEcdhSharedKey(ecdhKeypair1.privKey, coordinatorKeypair.pubKey);
110
+ const sharedKey1 = Keypair.genEcdhSharedKey(ecdhKeypair1.privateKey, coordinatorKeypair.publicKey);
111
111
 
112
112
  const message1 = command1.encrypt(signature1, sharedKey1);
113
- poll.publishMessage(message1, ecdhKeypair1.pubKey);
113
+ poll.publishMessage(message1, ecdhKeypair1.publicKey);
114
114
 
115
115
  const command2 = new PCommand(
116
116
  BigInt(user2StateIndex),
117
- user2Keypair.pubKey,
117
+ user2Keypair.publicKey,
118
118
  user2VoteOptionIndex,
119
119
  user2VoteWeight,
120
120
  BigInt(1),
121
121
  BigInt(pollId),
122
122
  );
123
123
 
124
- const signature2 = command2.sign(user2Keypair.privKey);
124
+ const signature2 = command2.sign(user2Keypair.privateKey);
125
125
 
126
126
  const ecdhKeypair2 = new Keypair();
127
- const sharedKey2 = Keypair.genEcdhSharedKey(ecdhKeypair2.privKey, coordinatorKeypair.pubKey);
127
+ const sharedKey2 = Keypair.genEcdhSharedKey(ecdhKeypair2.privateKey, coordinatorKeypair.publicKey);
128
128
 
129
129
  const message2 = command2.encrypt(signature2, sharedKey2);
130
- poll.publishMessage(message2, ecdhKeypair2.pubKey);
130
+ poll.publishMessage(message2, ecdhKeypair2.publicKey);
131
131
  ```
132
132
 
133
133
  - User1 submits a key change message with the new vote
@@ -136,20 +136,20 @@ poll.publishMessage(message2, ecdhKeypair2.pubKey);
136
136
  const poll = maciState.polls[pollId];
137
137
  const command = new PCommand(
138
138
  BigInt(user1StateIndex),
139
- secondKeyPair.pubKey,
139
+ secondKeyPair.publicKey,
140
140
  user1VoteOptionIndex,
141
141
  user1NewVoteWeight,
142
142
  BigInt(1),
143
143
  BigInt(pollId),
144
144
  );
145
145
 
146
- const signature = command.sign(user1Keypair.privKey);
146
+ const signature = command.sign(user1Keypair.privateKey);
147
147
 
148
148
  const ecdhKeypair = new Keypair();
149
- const sharedKey = Keypair.genEcdhSharedKey(ecdhKeypair.privKey, coordinatorKeypair.pubKey);
149
+ const sharedKey = Keypair.genEcdhSharedKey(ecdhKeypair.privateKey, coordinatorKeypair.publicKey);
150
150
 
151
151
  const message = command.encrypt(signature, sharedKey);
152
- poll.publishMessage(message, ecdhKeypair.pubKey);
152
+ poll.publishMessage(message, ecdhKeypair.publicKey);
153
153
  ```
154
154
 
155
155
  - We process the votes and check that the result is as expected (`user1NewVoteWeight` was 5 and `user2VoteWeight` 3)
@@ -168,8 +168,8 @@ expect(poll.perVOSpentVoiceCredits[1].toString()).to.eq((user2VoteWeight * user2
168
168
  const poll = maciState.polls[pollId];
169
169
  const stateLeaf1 = poll.stateLeaves[user1StateIndex];
170
170
  const stateLeaf2 = poll.stateLeaves[user2StateIndex];
171
- expect(stateLeaf1.pubKey.equals(user1SecondKeypair.pubKey)).to.eq(true);
172
- expect(stateLeaf2.pubKey.equals(user2Keypair.pubKey)).to.eq(true);
171
+ expect(stateLeaf1.publicKey.equals(user1SecondKeypair.publicKey)).to.eq(true);
172
+ expect(stateLeaf2.publicKey.equals(user2Keypair.publicKey)).to.eq(true);
173
173
  ```
174
174
 
175
175
  We see that is important that we set the final message (the one with the new vote) with nonce 1, as this vote would be counted as the first vote.
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: Offchain Voting
3
+ description: The Offchain Voting is a service that allows users to vote on MACI polls free of charge.
4
+ sidebar_label: Offchain Voting
5
+ sidebar_position: 11
6
+ ---
7
+
8
+ # Coordinator Service
9
+
10
+ MACI’s offchain voting service is a backend service that allows users to vote on MACI polls free of charge. This originated from [Vitalik's post](https://ethresear.ch/t/maci-with-mostly-off-chain-happy-path/19527).
11
+
12
+ In order to improve inclusivity of MACI polls, a coordinator can spin up the offchain relayer service to allow voters to submit their choices off-chain, saving on gas costs. Voters can check whether their vote has been submitted successfully by using relayer SDK, and if they believe they have been censored, can directly submit their vote on chain, using MACI in its normal form.
13
+
14
+ For more details on how to use and integrate the offchain relayer service into your application, please refer to this [guide](/docs/technical-references/offchain-relayer).
@@ -2,7 +2,7 @@
2
2
  title: MACI v1.0 Specification
3
3
  description: A detailed specification meant to assist auditors in reviewing MACI version 1.0
4
4
  sidebar_label: Specification
5
- sidebar_position: 10
5
+ sidebar_position: 11
6
6
  ---
7
7
 
8
8
  # MACI v1.0 Specification
@@ -86,7 +86,7 @@ while true:
86
86
  if rand >= min:
87
87
  break
88
88
 
89
- privKey = rand % p
89
+ privateKey = rand % p
90
90
  ```
91
91
 
92
92
  #### 1.3. Private key formatting
@@ -412,13 +412,13 @@ $sl = \mathsf{poseidon_4}([sl_{A_x}, sl_{A_y}, sl_{v}, sl_{t}])$
412
412
 
413
413
  A blank state leaf $sl_B$ has the following value:
414
414
 
415
- $6769006970205099520508948723718471724660867171122235270773600567925038008762$
415
+ $11672248758340751985123309654953904206381780234474872690580702076708041504880$
416
416
 
417
417
  This value is computed as such:
418
418
 
419
419
  $A_{b_x} = 10457101036533406547632367118273992217979173478358440826365724437999023779287$
420
420
  $A_{b_y} = 19824078218392094440610104313265183977899662750282163392862422243483260492317$
421
- $sl_B = \mathsf{poseidon_4}([A_{b0}, A_{b1}, 0, 0])$
421
+ $sl_B = \mathsf{poseidon_3}([A_{b0}, A_{b1}, 0])$
422
422
 
423
423
  The code to derive $A_{b_x}$ and $A_{b_y}$ is [here](https://github.com/iden3/circomlib/blob/d5ed1c3ce4ca137a6b3ca48bec4ac12c1b38957a/src/pedersen_printbases.js). The function call required is `pedersenHash.getBasePoint('blake', 0)`
424
424
 
@@ -24,13 +24,13 @@ $sl = poseidon_4([sl_{A_x}, sl_{A_y}, sl_{v}, sl_{t}])$
24
24
 
25
25
  A blank state leaf $sl_B$ has the following value:
26
26
 
27
- $6769006970205099520508948723718471724660867171122235270773600567925038008762$
27
+ $11672248758340751985123309654953904206381780234474872690580702076708041504880$
28
28
 
29
29
  This value is computed as such:
30
30
 
31
31
  $A_{b_x} = 10457101036533406547632367118273992217979173478358440826365724437999023779287$
32
32
  $A_{b_y} = 19824078218392094440610104313265183977899662750282163392862422243483260492317$
33
- $sl_B = poseidon_4([A_{b0}, A_{b1}, 0, 0])$
33
+ $sl_B = poseidon_3([A_{b0}, A_{b1}, 0])$
34
34
 
35
35
  The code to derive $A_{b_x}$ and $A_{b_y}$ is [here](https://github.com/iden3/circomlib/blob/d5ed1c3ce4ca137a6b3ca48bec4ac12c1b38957a/src/pedersen_printbases.js). The function call required is `pedersenHash.getBasePoint('blake', 0)`
36
36
 
@@ -103,9 +103,15 @@ Before a user can cast a vote, they must sign up by generating a MACI keypair an
103
103
  This registration process is necessary to fortify MACI against Sybil attacks. The particular criteria used to allow user signups is customizable, and can be configured using any [SignUpPolicy contract](https://github.com/privacy-scaling-explorations/excubiae/tree/main/packages/contracts/contracts/extensions). This contracts dictate the criteria a user must pass in order to participate in a poll. For example, a user might need to prove ownership of a certain NFT, or that they've received some attestation on EAS, or prove that they have passed some sort of proof-of-personhood verification. Note that MACI presumes an identity system where each legitimate member
104
104
  controls a unique private key - MACI does not specifically solve for this, but allows for customization on how this is configured.
105
105
 
106
+ #### Poll Joining
107
+
108
+ Once a user has signed up with MACI, they can join open polls by passing any poll specific gatekeeping requirements, as well as providing a zero knowledge proof that they know the private key to their previously signed up MACI public key.
109
+
110
+ This step must be repeated for each poll that the user wishes to vote on, and will allow them to receive voting power specific to that poll.
111
+
106
112
  #### Vote
107
113
 
108
- Once a user has signed up with MACI, they are eligible to vote on open polls.
114
+ After joining a poll, a user can cast a vote by sending a message to the Poll contract.
109
115
 
110
116
  To cast a vote, a user will bundle a few variables — including a public key, their vote option, their vote amount, and a few others — into what is called a "command". Then, the user signs the command with the private key they originally used to sign up. After that, the user encrypts the signature and command together so that it is now considered a "message". If the command is properly signed by the user’s MACI public key, then the message is considered valid will be counted in the final tally. Therefore, the MACI public key can be thought of as the user’s voting username, and the signature is the voting password. If they provide the correct signature, they can submit a vote.
111
117
 
@@ -0,0 +1,8 @@
1
+ {
2
+ "label": "Coordinator Service",
3
+ "position": 1,
4
+ "link": {
5
+ "type": "generated-index",
6
+ "description": "The Coordinator Service is a backend service that aims to automate MACI-related operations, such as contracts deployment, proof generation and poll finalisation."
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ ---
2
+ title: Introduction
3
+ description: The Coordinator Service is a service that allows to automate MACI coordinator tasks.
4
+ sidebar_label: Introduction
5
+ sidebar_position: 1
6
+ ---
7
+
8
+ # Coordinator Service
9
+
10
+ Welcome to the Coordinator Service technical reference. Here you will find the technical details of the Coordinator Service, including the API endpoints and code examples.
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: Installation and setup
3
+ description: Learn how to install and setup the Coordinator Service.
4
+ sidebar_label: Installation
5
+ sidebar_position: 2
6
+ ---
7
+
8
+ 1. Add `.env` file (see `.env.example`).
9
+ 2. Generate RSA key pair with `pnpm run generate-keypair`.
10
+ 3. Download zkey files using `pnpm run download-zkeys:{type}` (only test type is available for now).
11
+ 4. Make sure you copied RSA public key to your application. This will be needed for encrypting `Authorization` header and coordinator private key for proof generation. Also it can be accessed through API method `GET v1/proof/publicKey`.
12
+ 5. Run `pnpm run start` to run the service.
13
+ 6. All API calls must be called with `Authorization` header, where the value is encrypted with RSA public key you generated before. Header value contains message signature and message digest created by `COORDINATOR_ADDRESSES`. The format is `publicEncrypt({signature}:{digest})`.
14
+ Make sure you set `COORDINATOR_ADDRESSES` env variable and sign any message with the addresses from your application (see [AccountSignatureGuard](./ts/auth/AccountSignatureGuard.service.ts)).
15
+ 7. Proofs can be generated with `POST v1/proof/generate` API method or with Websockets (see [dto spec](./ts/proof/dto.ts), [controller](./ts/app.controller.ts) and [wsgateway](./ts/events/events.gateway.ts)).
16
+
17
+ ## Subgraph deployment
18
+
19
+ It is possible to deploy subgraph using coordinator service.
20
+
21
+ First, you need to setup subgraph and create a project. [Subgraph dashboard](https://thegraph.com/studio/).
22
+
23
+ Then, set env variables:
24
+
25
+ ```
26
+ # Subgraph name
27
+ SUBGRAPH_NAME="maci-subgraph"
28
+
29
+ # Subgraph provider url
30
+ SUBGRAPH_PROVIDER_URL=https://api.studio.thegraph.com/deploy/
31
+
32
+ # Subgraph deploy key
33
+ SUBGRAPH_DEPLOY_KEY=*******
34
+
35
+ # Subgraph project folder
36
+ SUBGRAPH_FOLDER=../subgraph
37
+ ```
38
+
39
+ After deployment, subgraph url will be available in studio dashboard and you can use this type of url to get latest deployed version in your application:
40
+
41
+ ```
42
+ https://api.studio.thegraph.com/.../{SUBGRAPH_NAME}/version/latest
43
+ ```
@@ -0,0 +1,8 @@
1
+ {
2
+ "label": "Offchain Relayer",
3
+ "position": 1,
4
+ "link": {
5
+ "type": "generated-index",
6
+ "description": "The Offchain Relayer is a service that allows users to vote on MACI polls free of charge."
7
+ }
8
+ }
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: Introduction
3
+ description: The Offchain Relayer is a service that allows users to vote on MACI polls free of charge.
4
+ sidebar_label: Introduction
5
+ sidebar_position: 1
6
+ ---
7
+
8
+ # Coordinator Service
9
+
10
+ Welcome to the Offchain Relayer technical reference. Here you will find the technical details of the Offchain Relayer: how to set it up and and how to use it.
11
+
12
+ ## Flow Diagram
13
+
14
+ Below is a high-level diagram illustrating the flow of the Relayer Service:
15
+
16
+ ![MACI Relayer Flow](/img/relayer-diagram.png)
17
+
18
+ ## High-Level Overview of the Relayer:
19
+
20
+ ### Functionality
21
+
22
+ The Relayer serves as an intermediary between users and the MACI system. It performs the following tasks:
23
+
24
+ - Allows users to send messages without having to pay gas fees by processing these messages off-chain.
25
+ - Receives user messages.
26
+ - Prepare messages batches and upload it to IPFS
27
+ - Submits the message hashes to the Poll contract with IPFS hash of the batch.
28
+
29
+ This process ensures that user actions are recorded on-chain without compromising their privacy.
30
+
31
+ ### Privacy Preservation
32
+
33
+ By verifying the zero-knowledge proofs, the Relayer ensures that only authorized users can send messages.
34
+ Users must know the pre-image to a state leaf in the poll state tree.
35
+
36
+ ### Decentralization and Trust
37
+
38
+ It's recommended that the coordinator only runs this service for now. That is because if the service malfunctions and batch hashes are pushed on chain without the messages actually being stored on ipfs, then polls can't be finalized.
39
+
40
+ ### Integration with MACI Components
41
+
42
+ The Relayer interacts with other components of the MACI system, such as the **Coordinator** and the on-chain smart contracts:
43
+
44
+ - The **Coordinator** fetches all the messages stored in IPFS and uses them as regular on-chain messages.
45
+ - This ensures that user messages are properly processed and recorded, contributing to the overall functionality and security of the voting protocol.
46
+
47
+ ### Additional Information
48
+
49
+ For more details, you can read the following post on EthResearch:
50
+
51
+ [MACI with Mostly Off-Chain Happy Path](https://ethresear.ch/t/maci-with-mostly-off-chain-happy-path/19527)
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: Installation and setup
3
+ description: Learn how to install and setup the Offchain Relayer service.
4
+ sidebar_label: Setup
5
+ sidebar_position: 2
6
+ ---
7
+
8
+ ## Prerequisites
9
+
10
+ Make sure you have the following tools installed on your system:
11
+
12
+ - **Docker**: [Install Docker](https://www.docker.com/products/docker-desktop)
13
+ - **Docker Compose**: [Install Docker Compose](https://docs.docker.com/compose/install/)
14
+
15
+ ## Getting Started
16
+
17
+ Follow these steps to run the MACI Relayer service using Docker.
18
+
19
+ ### 1. Clone the Repository
20
+
21
+ First, clone the repository to your local machine.
22
+
23
+ ```bash
24
+ git clone https://github.com/privacy-scaling-explorations/maci
25
+ cd maci
26
+ ```
27
+
28
+ ## 2. Configure Environment Variables
29
+
30
+ The `.env` file contains sensitive configuration values that will be injected into the Docker containers at runtime. To set them up:
31
+
32
+ 1. Copy the `.env.example` file to `.env`.
33
+
34
+ ```bash
35
+ cp .env.example .env
36
+ ```
37
+
38
+ 2. Edit the `.env` file and configure the variables.
39
+
40
+ ## 3. Build and Run the Docker Containers
41
+
42
+ Now that your environment is set up, it's time to build and run the Docker containers.
43
+
44
+ Run the following command from the root directory of your project:
45
+
46
+ ```bash
47
+ docker-compose up --build
48
+ ```
49
+
50
+ This command does the following:
51
+
52
+ - Builds the Docker images based on the Dockerfile and `docker-compose.yml` files.
53
+ - Starts the service container (the MACI relayer application) and the mongodb container.
54
+
55
+ The MACI Relayer service will be available on port 3000 by default (you can modify this in the `.env` file).
56
+
57
+ ## 4. Access the Service
58
+
59
+ Once the containers are up and running, you can access the relayer service at:
60
+
61
+ ```
62
+ http://localhost:3000
63
+ ```
64
+
65
+ Additionally, the Swagger UI documentation for the Relayer service API can be accessed at:
66
+
67
+ ```
68
+ http://localhost:3000/api
69
+ ```
70
+
71
+ You can interact with the API through the Swagger interface, which provides a convenient way to test endpoints and view the API methods.
72
+
73
+ ## 5. Check Logs
74
+
75
+ To view the logs from the containers and troubleshoot any issues, run:
76
+
77
+ ```bash
78
+ docker-compose logs
79
+ ```
80
+
81
+ This will display logs from both the service (relayer) and mongodb containers.
82
+
83
+ ## 6. Stop the Services
84
+
85
+ To stop the containers and remove the containers (but keep the volumes), use the following command:
86
+
87
+ ```bash
88
+ docker-compose down
89
+ ```
90
+
91
+ This will stop and remove the containers but retain the volumes (like MongoDB data). To also remove the volumes, run:
92
+
93
+ ```bash
94
+ docker-compose down --volumes
95
+ ```
96
+
97
+ ## 7. MongoDB Persistence
98
+
99
+ MongoDB data is persisted using Docker volumes (`mongodb-data`). Even if you remove and recreate the MongoDB container, the data will persist.
100
+
101
+ This ensures that any data stored in the MongoDB database is not lost even if the container is restarted or removed.
102
+
103
+ If you'd like to remove the persisted data as well, you can remove the volume by running:
104
+
105
+ ```bash
106
+ docker volume rm your-repo_mongodb-data
107
+ ```
108
+
109
+ This will delete the volume, along with all the data stored in MongoDB.
@@ -21,7 +21,7 @@ Users need to provide a valid proof to the Poll smart contract to join a poll, a
21
21
 
22
22
  | Input signal | Description |
23
23
  | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
24
- | `privKey` | The user's private key |
24
+ | `privateKey` | The user's private key |
25
25
  | `pollPubKey` | The poll's public key |
26
26
  | `siblings` | The siblings for the merkle tree inclusion proof |
27
27
  | `indices` | The indices for the merkle tree inclusion proof |
@@ -44,9 +44,8 @@ Users will use this circuit to anonymously prove that they joined a poll. This c
44
44
 
45
45
  | Input signal | Description |
46
46
  | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
47
- | `privKey` | The user's private key |
47
+ | `privateKey` | The user's private key |
48
48
  | `voiceCreditsBalance` | The user's initial voice credits balance |
49
- | `joinTimestamp` | The timestamp of when the user joined the poll |
50
49
  | `pathElements` | The path elements for the merkle tree inclusion proof |
51
50
  | `pathIndices` | The path indices for the merkle tree inclusion proof |
52
51
  | `stateRoot` | The MACI state tree root |