solana-docs 0.0.0

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 (924) hide show
  1. package/.eslintignore +8 -0
  2. package/.eslintrc +21 -0
  3. package/.prettierignore +7 -0
  4. package/.travis/before_install.sh +9 -0
  5. package/.travis/script.sh +4 -0
  6. package/README.md +59 -0
  7. package/art/data-plane-fanout.bob +19 -0
  8. package/art/data-plane-neighborhood.bob +25 -0
  9. package/art/data-plane-seeding.bob +15 -0
  10. package/art/data-plane.bob +18 -0
  11. package/art/fork-generation.bob +13 -0
  12. package/art/forks-pruned.bob +9 -0
  13. package/art/forks-pruned2.bob +11 -0
  14. package/art/forks.bob +13 -0
  15. package/art/passive-staking-callflow.msc +30 -0
  16. package/art/retransmit_stage.bob +45 -0
  17. package/art/runtime.bob +10 -0
  18. package/art/sdk-tools.bob +20 -0
  19. package/art/spv-bank-hash.bob +19 -0
  20. package/art/spv-block-merkle.bob +19 -0
  21. package/art/tpu.bob +19 -0
  22. package/art/tvu.bob +37 -0
  23. package/art/validator-proposal.bob +60 -0
  24. package/art/validator.bob +30 -0
  25. package/babel.config.js +3 -0
  26. package/build-cli-usage.sh +42 -0
  27. package/build.sh +40 -0
  28. package/convert-ascii-to-svg.sh +21 -0
  29. package/crowdin.yml +16 -0
  30. package/docusaurus.config.js +161 -0
  31. package/offline-cmd-md-links.sh +11 -0
  32. package/package.json +50 -0
  33. package/publish-docs.sh +56 -0
  34. package/set-solana-release-tag.sh +20 -0
  35. package/sidebars.js +210 -0
  36. package/src/cli/.usage.md.header +59 -0
  37. package/src/cli/choose-a-cluster.md +43 -0
  38. package/src/cli/conventions.md +80 -0
  39. package/src/cli/delegate-stake.md +206 -0
  40. package/src/cli/deploy-a-program.md +302 -0
  41. package/src/cli/install-solana-cli-tools.md +164 -0
  42. package/src/cli/transfer-tokens.md +158 -0
  43. package/src/cli.md +22 -0
  44. package/src/cluster/bench-tps.md +129 -0
  45. package/src/cluster/fork-generation.md +64 -0
  46. package/src/cluster/leader-rotation.md +88 -0
  47. package/src/cluster/managing-forks.md +36 -0
  48. package/src/cluster/overview.md +39 -0
  49. package/src/cluster/performance-metrics.md +25 -0
  50. package/src/cluster/rpc-endpoints.md +50 -0
  51. package/src/cluster/stake-delegation-and-rewards.md +197 -0
  52. package/src/cluster/synchronization.md +28 -0
  53. package/src/cluster/turbine-block-propagation.md +101 -0
  54. package/src/cluster/vote-signing.md +59 -0
  55. package/src/clusters.md +173 -0
  56. package/src/css/custom.css +73 -0
  57. package/src/developing/backwards-compatibility.md +151 -0
  58. package/src/developing/clients/javascript-api.md +332 -0
  59. package/src/developing/clients/javascript-reference.md +750 -0
  60. package/src/developing/clients/jsonrpc-api.md +5173 -0
  61. package/src/developing/clients/rust-api.md +36 -0
  62. package/src/developing/on-chain-programs/debugging.md +110 -0
  63. package/src/developing/on-chain-programs/deploying.md +24 -0
  64. package/src/developing/on-chain-programs/developing-c.md +202 -0
  65. package/src/developing/on-chain-programs/developing-rust.md +406 -0
  66. package/src/developing/on-chain-programs/examples.md +61 -0
  67. package/src/developing/on-chain-programs/faq.md +81 -0
  68. package/src/developing/on-chain-programs/overview.md +218 -0
  69. package/src/developing/plugins/accountsdb_plugin.md +360 -0
  70. package/src/developing/programming-model/accounts.md +231 -0
  71. package/src/developing/programming-model/calling-between-programs.md +351 -0
  72. package/src/developing/programming-model/overview.md +17 -0
  73. package/src/developing/programming-model/runtime.md +131 -0
  74. package/src/developing/programming-model/transactions.md +210 -0
  75. package/src/developing/runtime-facilities/programs.md +168 -0
  76. package/src/developing/runtime-facilities/sysvars.md +142 -0
  77. package/src/developing/test-validator.md +153 -0
  78. package/src/economics_overview.md +20 -0
  79. package/src/history.md +60 -0
  80. package/src/icons/Archivers.inline.svg +11 -0
  81. package/src/icons/Bulb.inline.svg +13 -0
  82. package/src/icons/Chat.inline.svg +10 -0
  83. package/src/icons/Clipboard.inline.svg +13 -0
  84. package/src/icons/Cloudbreak.inline.svg +11 -0
  85. package/src/icons/Code.inline.svg +11 -0
  86. package/src/icons/Fire.inline.svg +10 -0
  87. package/src/icons/Gamepad.inline.svg +11 -0
  88. package/src/icons/Globe.inline.svg +1 -0
  89. package/src/icons/Gulfstream.inline.svg +11 -0
  90. package/src/icons/History.inline.svg +11 -0
  91. package/src/icons/Money.inline.svg +11 -0
  92. package/src/icons/Pipeline.inline.svg +15 -0
  93. package/src/icons/PoH.inline.svg +11 -0
  94. package/src/icons/Sealevel.inline.svg +11 -0
  95. package/src/icons/Tools.inline.svg +11 -0
  96. package/src/icons/Tower.inline.svg +11 -0
  97. package/src/icons/Turbine.inline.svg +12 -0
  98. package/src/icons/duotone-icons/Clothes/Brassiere.svg +10 -0
  99. package/src/icons/duotone-icons/Clothes/Briefcase.svg +11 -0
  100. package/src/icons/duotone-icons/Clothes/Cap.svg +11 -0
  101. package/src/icons/duotone-icons/Clothes/Crown.svg +11 -0
  102. package/src/icons/duotone-icons/Clothes/Dress.svg +11 -0
  103. package/src/icons/duotone-icons/Clothes/Hanger.svg +10 -0
  104. package/src/icons/duotone-icons/Clothes/Hat.svg +11 -0
  105. package/src/icons/duotone-icons/Clothes/Panties.svg +10 -0
  106. package/src/icons/duotone-icons/Clothes/Shirt.svg +11 -0
  107. package/src/icons/duotone-icons/Clothes/Shoes.svg +11 -0
  108. package/src/icons/duotone-icons/Clothes/Shorts.svg +10 -0
  109. package/src/icons/duotone-icons/Clothes/Sneakers.svg +11 -0
  110. package/src/icons/duotone-icons/Clothes/Socks.svg +11 -0
  111. package/src/icons/duotone-icons/Clothes/Sun-glasses.svg +11 -0
  112. package/src/icons/duotone-icons/Clothes/T-Shirt.svg +10 -0
  113. package/src/icons/duotone-icons/Clothes/Tie.svg +11 -0
  114. package/src/icons/duotone-icons/Code/Backspace.svg +11 -0
  115. package/src/icons/duotone-icons/Code/CMD.svg +10 -0
  116. package/src/icons/duotone-icons/Code/Code.inline.svg +11 -0
  117. package/src/icons/duotone-icons/Code/Commit.svg +11 -0
  118. package/src/icons/duotone-icons/Code/Compiling.inline.svg +11 -0
  119. package/src/icons/duotone-icons/Code/Control.svg +10 -0
  120. package/src/icons/duotone-icons/Code/Done-circle.svg +11 -0
  121. package/src/icons/duotone-icons/Code/Error-circle.svg +11 -0
  122. package/src/icons/duotone-icons/Code/Git#1.svg +12 -0
  123. package/src/icons/duotone-icons/Code/Git#2.svg +15 -0
  124. package/src/icons/duotone-icons/Code/Git#3.svg +13 -0
  125. package/src/icons/duotone-icons/Code/Git#4.svg +13 -0
  126. package/src/icons/duotone-icons/Code/Github.svg +11 -0
  127. package/src/icons/duotone-icons/Code/Info-circle.svg +12 -0
  128. package/src/icons/duotone-icons/Code/Left-circle.svg +11 -0
  129. package/src/icons/duotone-icons/Code/Loading.svg +12 -0
  130. package/src/icons/duotone-icons/Code/Lock-circle.svg +11 -0
  131. package/src/icons/duotone-icons/Code/Lock-overturning.svg +11 -0
  132. package/src/icons/duotone-icons/Code/Minus.svg +11 -0
  133. package/src/icons/duotone-icons/Code/Option.svg +11 -0
  134. package/src/icons/duotone-icons/Code/Plus.svg +11 -0
  135. package/src/icons/duotone-icons/Code/Puzzle.svg +10 -0
  136. package/src/icons/duotone-icons/Code/Question-circle.svg +11 -0
  137. package/src/icons/duotone-icons/Code/Right-circle.svg +11 -0
  138. package/src/icons/duotone-icons/Code/Settings#4.svg +11 -0
  139. package/src/icons/duotone-icons/Code/Shift.svg +10 -0
  140. package/src/icons/duotone-icons/Code/Spy.svg +11 -0
  141. package/src/icons/duotone-icons/Code/Stop.svg +10 -0
  142. package/src/icons/duotone-icons/Code/Terminal.svg +11 -0
  143. package/src/icons/duotone-icons/Code/Thunder-circle.svg +11 -0
  144. package/src/icons/duotone-icons/Code/Time-schedule.svg +11 -0
  145. package/src/icons/duotone-icons/Code/Warning-1-circle.svg +12 -0
  146. package/src/icons/duotone-icons/Code/Warning-2.svg +12 -0
  147. package/src/icons/duotone-icons/Communication/Active-call.svg +11 -0
  148. package/src/icons/duotone-icons/Communication/Add-user.svg +11 -0
  149. package/src/icons/duotone-icons/Communication/Address-card.svg +10 -0
  150. package/src/icons/duotone-icons/Communication/Adress-book#1.svg +11 -0
  151. package/src/icons/duotone-icons/Communication/Adress-book#2.svg +11 -0
  152. package/src/icons/duotone-icons/Communication/Archive.svg +10 -0
  153. package/src/icons/duotone-icons/Communication/Call#1.svg +10 -0
  154. package/src/icons/duotone-icons/Communication/Call.svg +10 -0
  155. package/src/icons/duotone-icons/Communication/Chat#1.svg +11 -0
  156. package/src/icons/duotone-icons/Communication/Chat#2.svg +11 -0
  157. package/src/icons/duotone-icons/Communication/Chat#4.svg +10 -0
  158. package/src/icons/duotone-icons/Communication/Chat#5.svg +11 -0
  159. package/src/icons/duotone-icons/Communication/Chat#6.svg +11 -0
  160. package/src/icons/duotone-icons/Communication/Chat-check.svg +11 -0
  161. package/src/icons/duotone-icons/Communication/Chat-error.svg +11 -0
  162. package/src/icons/duotone-icons/Communication/Chat-locked.svg +11 -0
  163. package/src/icons/duotone-icons/Communication/Chat-smile.svg +11 -0
  164. package/src/icons/duotone-icons/Communication/Clipboard-check.svg +12 -0
  165. package/src/icons/duotone-icons/Communication/Clipboard-list.svg +17 -0
  166. package/src/icons/duotone-icons/Communication/Contact#1.svg +11 -0
  167. package/src/icons/duotone-icons/Communication/Delete-user.svg +11 -0
  168. package/src/icons/duotone-icons/Communication/Dial-numbers.svg +18 -0
  169. package/src/icons/duotone-icons/Communication/Flag.svg +11 -0
  170. package/src/icons/duotone-icons/Communication/Forward.svg +10 -0
  171. package/src/icons/duotone-icons/Communication/Group-chat.svg +11 -0
  172. package/src/icons/duotone-icons/Communication/Group.svg +11 -0
  173. package/src/icons/duotone-icons/Communication/Incoming-box.svg +12 -0
  174. package/src/icons/duotone-icons/Communication/Incoming-call.svg +11 -0
  175. package/src/icons/duotone-icons/Communication/Incoming-mail.svg +11 -0
  176. package/src/icons/duotone-icons/Communication/Mail-@.svg +10 -0
  177. package/src/icons/duotone-icons/Communication/Mail-attachment.svg +11 -0
  178. package/src/icons/duotone-icons/Communication/Mail-box.svg +11 -0
  179. package/src/icons/duotone-icons/Communication/Mail-error.svg +11 -0
  180. package/src/icons/duotone-icons/Communication/Mail-heart.svg +11 -0
  181. package/src/icons/duotone-icons/Communication/Mail-locked.svg +11 -0
  182. package/src/icons/duotone-icons/Communication/Mail-notification.svg +11 -0
  183. package/src/icons/duotone-icons/Communication/Mail-opened.svg +11 -0
  184. package/src/icons/duotone-icons/Communication/Mail-unocked.svg +11 -0
  185. package/src/icons/duotone-icons/Communication/Mail.svg +10 -0
  186. package/src/icons/duotone-icons/Communication/Missed-call.svg +11 -0
  187. package/src/icons/duotone-icons/Communication/Outgoing-box.svg +12 -0
  188. package/src/icons/duotone-icons/Communication/Outgoing-call.svg +11 -0
  189. package/src/icons/duotone-icons/Communication/Outgoing-mail.svg +11 -0
  190. package/src/icons/duotone-icons/Communication/RSS.svg +12 -0
  191. package/src/icons/duotone-icons/Communication/Readed-mail.svg +11 -0
  192. package/src/icons/duotone-icons/Communication/Reply-all.svg +11 -0
  193. package/src/icons/duotone-icons/Communication/Reply.svg +10 -0
  194. package/src/icons/duotone-icons/Communication/Right.svg +10 -0
  195. package/src/icons/duotone-icons/Communication/Safe-chat.svg +11 -0
  196. package/src/icons/duotone-icons/Communication/Send.svg +10 -0
  197. package/src/icons/duotone-icons/Communication/Sending mail.svg +11 -0
  198. package/src/icons/duotone-icons/Communication/Sending.svg +11 -0
  199. package/src/icons/duotone-icons/Communication/Share.svg +11 -0
  200. package/src/icons/duotone-icons/Communication/Shield-thunder.svg +11 -0
  201. package/src/icons/duotone-icons/Communication/Shield-user.svg +12 -0
  202. package/src/icons/duotone-icons/Communication/Snoozed-mail.svg +11 -0
  203. package/src/icons/duotone-icons/Communication/Spam.svg +10 -0
  204. package/src/icons/duotone-icons/Communication/Thumbtack.svg +11 -0
  205. package/src/icons/duotone-icons/Communication/Urgent-mail.svg +11 -0
  206. package/src/icons/duotone-icons/Communication/Write.svg +11 -0
  207. package/src/icons/duotone-icons/Cooking/Baking-glove.svg +11 -0
  208. package/src/icons/duotone-icons/Cooking/Bowl.svg +11 -0
  209. package/src/icons/duotone-icons/Cooking/Chef.svg +11 -0
  210. package/src/icons/duotone-icons/Cooking/Cooking-book.svg +17 -0
  211. package/src/icons/duotone-icons/Cooking/Cooking-pot.svg +11 -0
  212. package/src/icons/duotone-icons/Cooking/Cutting board.svg +11 -0
  213. package/src/icons/duotone-icons/Cooking/Dinner.svg +14 -0
  214. package/src/icons/duotone-icons/Cooking/Dish.svg +11 -0
  215. package/src/icons/duotone-icons/Cooking/Dishes.svg +11 -0
  216. package/src/icons/duotone-icons/Cooking/Fork-spoon-knife.svg +15 -0
  217. package/src/icons/duotone-icons/Cooking/Fork-spoon.svg +13 -0
  218. package/src/icons/duotone-icons/Cooking/Fork.svg +11 -0
  219. package/src/icons/duotone-icons/Cooking/Frying-pan.svg +11 -0
  220. package/src/icons/duotone-icons/Cooking/Grater.svg +11 -0
  221. package/src/icons/duotone-icons/Cooking/Kitchen-scale.svg +11 -0
  222. package/src/icons/duotone-icons/Cooking/Knife#1.svg +11 -0
  223. package/src/icons/duotone-icons/Cooking/Knife#2.svg +11 -0
  224. package/src/icons/duotone-icons/Cooking/Knife&fork#1.svg +13 -0
  225. package/src/icons/duotone-icons/Cooking/Knife&fork#2.svg +13 -0
  226. package/src/icons/duotone-icons/Cooking/Ladle.svg +11 -0
  227. package/src/icons/duotone-icons/Cooking/Rolling-pin.svg +11 -0
  228. package/src/icons/duotone-icons/Cooking/Saucepan.svg +11 -0
  229. package/src/icons/duotone-icons/Cooking/Shovel.svg +11 -0
  230. package/src/icons/duotone-icons/Cooking/Sieve.svg +11 -0
  231. package/src/icons/duotone-icons/Cooking/Spoon.svg +12 -0
  232. package/src/icons/duotone-icons/Design/Adjust.svg +10 -0
  233. package/src/icons/duotone-icons/Design/Anchor-center-down.svg +14 -0
  234. package/src/icons/duotone-icons/Design/Anchor-center-up.svg +14 -0
  235. package/src/icons/duotone-icons/Design/Anchor-center.svg +11 -0
  236. package/src/icons/duotone-icons/Design/Anchor-left-down.svg +14 -0
  237. package/src/icons/duotone-icons/Design/Anchor-left-up.svg +14 -0
  238. package/src/icons/duotone-icons/Design/Anchor-left.svg +14 -0
  239. package/src/icons/duotone-icons/Design/Anchor-right-down.svg +14 -0
  240. package/src/icons/duotone-icons/Design/Anchor-right-up.svg +14 -0
  241. package/src/icons/duotone-icons/Design/Anchor-right.svg +14 -0
  242. package/src/icons/duotone-icons/Design/Arrows.svg +11 -0
  243. package/src/icons/duotone-icons/Design/Bezier-curve.svg +11 -0
  244. package/src/icons/duotone-icons/Design/Border.svg +10 -0
  245. package/src/icons/duotone-icons/Design/Brush.svg +11 -0
  246. package/src/icons/duotone-icons/Design/Bucket.svg +11 -0
  247. package/src/icons/duotone-icons/Design/Cap-1.svg +11 -0
  248. package/src/icons/duotone-icons/Design/Cap-2.svg +10 -0
  249. package/src/icons/duotone-icons/Design/Cap-3.svg +11 -0
  250. package/src/icons/duotone-icons/Design/Circle.svg +10 -0
  251. package/src/icons/duotone-icons/Design/Color-profile.svg +11 -0
  252. package/src/icons/duotone-icons/Design/Color.svg +10 -0
  253. package/src/icons/duotone-icons/Design/Component.svg +10 -0
  254. package/src/icons/duotone-icons/Design/Crop.svg +11 -0
  255. package/src/icons/duotone-icons/Design/Difference.svg +11 -0
  256. package/src/icons/duotone-icons/Design/Edit.svg +11 -0
  257. package/src/icons/duotone-icons/Design/Eraser.svg +10 -0
  258. package/src/icons/duotone-icons/Design/Flatten.svg +11 -0
  259. package/src/icons/duotone-icons/Design/Flip-horizontal.svg +12 -0
  260. package/src/icons/duotone-icons/Design/Flip-vertical.svg +12 -0
  261. package/src/icons/duotone-icons/Design/Horizontal.svg +11 -0
  262. package/src/icons/duotone-icons/Design/Image.svg +10 -0
  263. package/src/icons/duotone-icons/Design/Interselect.svg +11 -0
  264. package/src/icons/duotone-icons/Design/Join-1.svg +11 -0
  265. package/src/icons/duotone-icons/Design/Join-2.svg +11 -0
  266. package/src/icons/duotone-icons/Design/Join-3.svg +11 -0
  267. package/src/icons/duotone-icons/Design/Layers.svg +11 -0
  268. package/src/icons/duotone-icons/Design/Line.svg +12 -0
  269. package/src/icons/duotone-icons/Design/Magic.svg +11 -0
  270. package/src/icons/duotone-icons/Design/Mask.svg +11 -0
  271. package/src/icons/duotone-icons/Design/Patch.svg +12 -0
  272. package/src/icons/duotone-icons/Design/Pen&ruller.svg +11 -0
  273. package/src/icons/duotone-icons/Design/Pen-tool-vector.svg +11 -0
  274. package/src/icons/duotone-icons/Design/Pencil.svg +11 -0
  275. package/src/icons/duotone-icons/Design/Picker.svg +11 -0
  276. package/src/icons/duotone-icons/Design/Pixels.svg +15 -0
  277. package/src/icons/duotone-icons/Design/Polygon.svg +10 -0
  278. package/src/icons/duotone-icons/Design/Position.svg +10 -0
  279. package/src/icons/duotone-icons/Design/Rectangle.svg +10 -0
  280. package/src/icons/duotone-icons/Design/Saturation.svg +11 -0
  281. package/src/icons/duotone-icons/Design/Select.svg +11 -0
  282. package/src/icons/duotone-icons/Design/Sketch.svg +11 -0
  283. package/src/icons/duotone-icons/Design/Stamp.svg +11 -0
  284. package/src/icons/duotone-icons/Design/Substract.svg +11 -0
  285. package/src/icons/duotone-icons/Design/Target.svg +11 -0
  286. package/src/icons/duotone-icons/Design/Triangle.svg +10 -0
  287. package/src/icons/duotone-icons/Design/Union.svg +10 -0
  288. package/src/icons/duotone-icons/Design/Vertical.svg +11 -0
  289. package/src/icons/duotone-icons/Design/Zoom minus.svg +12 -0
  290. package/src/icons/duotone-icons/Design/Zoom plus.svg +12 -0
  291. package/src/icons/duotone-icons/Devices/Airpods.svg +13 -0
  292. package/src/icons/duotone-icons/Devices/Android.svg +11 -0
  293. package/src/icons/duotone-icons/Devices/Apple-Watch.svg +11 -0
  294. package/src/icons/duotone-icons/Devices/Battery-charging.svg +12 -0
  295. package/src/icons/duotone-icons/Devices/Battery-empty.svg +11 -0
  296. package/src/icons/duotone-icons/Devices/Battery-full.svg +11 -0
  297. package/src/icons/duotone-icons/Devices/Battery-half.svg +11 -0
  298. package/src/icons/duotone-icons/Devices/Bluetooth.svg +11 -0
  299. package/src/icons/duotone-icons/Devices/CPU#1.svg +17 -0
  300. package/src/icons/duotone-icons/Devices/CPU#2.svg +23 -0
  301. package/src/icons/duotone-icons/Devices/Camera.svg +12 -0
  302. package/src/icons/duotone-icons/Devices/Cardboard-vr.svg +11 -0
  303. package/src/icons/duotone-icons/Devices/Cassete.svg +12 -0
  304. package/src/icons/duotone-icons/Devices/Diagnostics.svg +12 -0
  305. package/src/icons/duotone-icons/Devices/Display#1.svg +11 -0
  306. package/src/icons/duotone-icons/Devices/Display#2.svg +12 -0
  307. package/src/icons/duotone-icons/Devices/Display#3.svg +12 -0
  308. package/src/icons/duotone-icons/Devices/Gameboy.svg +11 -0
  309. package/src/icons/duotone-icons/Devices/Gamepad#1.svg +11 -0
  310. package/src/icons/duotone-icons/Devices/Gamepad#2.svg +11 -0
  311. package/src/icons/duotone-icons/Devices/Generator.svg +13 -0
  312. package/src/icons/duotone-icons/Devices/Hard-drive.svg +11 -0
  313. package/src/icons/duotone-icons/Devices/Headphones.svg +11 -0
  314. package/src/icons/duotone-icons/Devices/Homepod.svg +11 -0
  315. package/src/icons/duotone-icons/Devices/Keyboard.svg +11 -0
  316. package/src/icons/duotone-icons/Devices/LTE#1.svg +11 -0
  317. package/src/icons/duotone-icons/Devices/LTE#2.svg +11 -0
  318. package/src/icons/duotone-icons/Devices/Laptop-macbook.svg +11 -0
  319. package/src/icons/duotone-icons/Devices/Laptop.svg +11 -0
  320. package/src/icons/duotone-icons/Devices/Mic.svg +11 -0
  321. package/src/icons/duotone-icons/Devices/Midi.svg +16 -0
  322. package/src/icons/duotone-icons/Devices/Mouse.svg +12 -0
  323. package/src/icons/duotone-icons/Devices/Phone.svg +12 -0
  324. package/src/icons/duotone-icons/Devices/Printer.svg +11 -0
  325. package/src/icons/duotone-icons/Devices/Radio.svg +14 -0
  326. package/src/icons/duotone-icons/Devices/Router#1.svg +11 -0
  327. package/src/icons/duotone-icons/Devices/Router#2.svg +11 -0
  328. package/src/icons/duotone-icons/Devices/SD-card.svg +10 -0
  329. package/src/icons/duotone-icons/Devices/Server.svg +12 -0
  330. package/src/icons/duotone-icons/Devices/Speaker.svg +11 -0
  331. package/src/icons/duotone-icons/Devices/TV#1.svg +12 -0
  332. package/src/icons/duotone-icons/Devices/TV#2.svg +11 -0
  333. package/src/icons/duotone-icons/Devices/Tablet.svg +11 -0
  334. package/src/icons/duotone-icons/Devices/USB.svg +12 -0
  335. package/src/icons/duotone-icons/Devices/Usb-storage.svg +11 -0
  336. package/src/icons/duotone-icons/Devices/Video-camera.svg +11 -0
  337. package/src/icons/duotone-icons/Devices/Watch#1.svg +13 -0
  338. package/src/icons/duotone-icons/Devices/Watch#2.svg +13 -0
  339. package/src/icons/duotone-icons/Devices/Wi-fi.svg +11 -0
  340. package/src/icons/duotone-icons/Devices/iMac.svg +12 -0
  341. package/src/icons/duotone-icons/Devices/iPhone-X.svg +11 -0
  342. package/src/icons/duotone-icons/Devices/iPhone-back.svg +10 -0
  343. package/src/icons/duotone-icons/Devices/iPhone-x-back.svg +10 -0
  344. package/src/icons/duotone-icons/Electric/Air-conditioning.svg +11 -0
  345. package/src/icons/duotone-icons/Electric/Blender.svg +10 -0
  346. package/src/icons/duotone-icons/Electric/Fan.svg +12 -0
  347. package/src/icons/duotone-icons/Electric/Fridge.svg +10 -0
  348. package/src/icons/duotone-icons/Electric/Gas-stove.svg +11 -0
  349. package/src/icons/duotone-icons/Electric/Hair-dryer.svg +11 -0
  350. package/src/icons/duotone-icons/Electric/Highvoltage.svg +10 -0
  351. package/src/icons/duotone-icons/Electric/Iron.svg +11 -0
  352. package/src/icons/duotone-icons/Electric/Kettle.svg +11 -0
  353. package/src/icons/duotone-icons/Electric/Mixer.svg +11 -0
  354. package/src/icons/duotone-icons/Electric/Outlet.svg +11 -0
  355. package/src/icons/duotone-icons/Electric/Range-hood.svg +11 -0
  356. package/src/icons/duotone-icons/Electric/Shutdown.svg +11 -0
  357. package/src/icons/duotone-icons/Electric/Socket-eu.svg +10 -0
  358. package/src/icons/duotone-icons/Electric/Socket-us.svg +10 -0
  359. package/src/icons/duotone-icons/Electric/Washer.svg +11 -0
  360. package/src/icons/duotone-icons/Files/Cloud-download.svg +11 -0
  361. package/src/icons/duotone-icons/Files/Cloud-upload.svg +11 -0
  362. package/src/icons/duotone-icons/Files/Compilation.svg +14 -0
  363. package/src/icons/duotone-icons/Files/Compiled-file.svg +14 -0
  364. package/src/icons/duotone-icons/Files/Deleted-file.svg +11 -0
  365. package/src/icons/duotone-icons/Files/Deleted-folder.svg +11 -0
  366. package/src/icons/duotone-icons/Files/Download.inline.svg +12 -0
  367. package/src/icons/duotone-icons/Files/Downloaded file.svg +11 -0
  368. package/src/icons/duotone-icons/Files/Downloads-folder.svg +11 -0
  369. package/src/icons/duotone-icons/Files/Export.svg +12 -0
  370. package/src/icons/duotone-icons/Files/File-cloud.svg +11 -0
  371. package/src/icons/duotone-icons/Files/File-done.svg +11 -0
  372. package/src/icons/duotone-icons/Files/File-minus.svg +11 -0
  373. package/src/icons/duotone-icons/Files/File-plus.svg +11 -0
  374. package/src/icons/duotone-icons/Files/File.svg +12 -0
  375. package/src/icons/duotone-icons/Files/Folder-check.svg +11 -0
  376. package/src/icons/duotone-icons/Files/Folder-cloud.svg +11 -0
  377. package/src/icons/duotone-icons/Files/Folder-error.svg +11 -0
  378. package/src/icons/duotone-icons/Files/Folder-heart.svg +11 -0
  379. package/src/icons/duotone-icons/Files/Folder-minus.svg +11 -0
  380. package/src/icons/duotone-icons/Files/Folder-plus.svg +11 -0
  381. package/src/icons/duotone-icons/Files/Folder-solid.svg +10 -0
  382. package/src/icons/duotone-icons/Files/Folder-star.svg +11 -0
  383. package/src/icons/duotone-icons/Files/Folder-thunder.svg +11 -0
  384. package/src/icons/duotone-icons/Files/Folder.svg +10 -0
  385. package/src/icons/duotone-icons/Files/Group-folders.svg +11 -0
  386. package/src/icons/duotone-icons/Files/Import.svg +12 -0
  387. package/src/icons/duotone-icons/Files/Locked-folder.svg +11 -0
  388. package/src/icons/duotone-icons/Files/Media-folder.svg +11 -0
  389. package/src/icons/duotone-icons/Files/Media.svg +11 -0
  390. package/src/icons/duotone-icons/Files/Music.svg +11 -0
  391. package/src/icons/duotone-icons/Files/Pictures#1.svg +13 -0
  392. package/src/icons/duotone-icons/Files/Pictures#2.svg +15 -0
  393. package/src/icons/duotone-icons/Files/Protected-file.svg +11 -0
  394. package/src/icons/duotone-icons/Files/Selected-file.svg +11 -0
  395. package/src/icons/duotone-icons/Files/Share.svg +13 -0
  396. package/src/icons/duotone-icons/Files/Upload-folder.svg +11 -0
  397. package/src/icons/duotone-icons/Files/Upload.svg +12 -0
  398. package/src/icons/duotone-icons/Files/Uploaded-file.svg +11 -0
  399. package/src/icons/duotone-icons/Files/User-folder.svg +12 -0
  400. package/src/icons/duotone-icons/Food/Beer.svg +14 -0
  401. package/src/icons/duotone-icons/Food/Bottle#1.svg +11 -0
  402. package/src/icons/duotone-icons/Food/Bottle#2.svg +11 -0
  403. package/src/icons/duotone-icons/Food/Bread.svg +11 -0
  404. package/src/icons/duotone-icons/Food/Bucket.svg +11 -0
  405. package/src/icons/duotone-icons/Food/Burger.svg +12 -0
  406. package/src/icons/duotone-icons/Food/Cake.svg +12 -0
  407. package/src/icons/duotone-icons/Food/Carrot.svg +13 -0
  408. package/src/icons/duotone-icons/Food/Cheese.svg +11 -0
  409. package/src/icons/duotone-icons/Food/Chicken.svg +13 -0
  410. package/src/icons/duotone-icons/Food/Coffee#1.svg +14 -0
  411. package/src/icons/duotone-icons/Food/Coffee#2.svg +12 -0
  412. package/src/icons/duotone-icons/Food/Cookie.svg +13 -0
  413. package/src/icons/duotone-icons/Food/Dinner.svg +11 -0
  414. package/src/icons/duotone-icons/Food/Fish.svg +11 -0
  415. package/src/icons/duotone-icons/Food/French Bread.svg +10 -0
  416. package/src/icons/duotone-icons/Food/Glass-martini.svg +11 -0
  417. package/src/icons/duotone-icons/Food/Ice-cream#1.svg +11 -0
  418. package/src/icons/duotone-icons/Food/Ice-cream#2.svg +11 -0
  419. package/src/icons/duotone-icons/Food/Miso-soup.svg +11 -0
  420. package/src/icons/duotone-icons/Food/Orange.svg +11 -0
  421. package/src/icons/duotone-icons/Food/Pizza.svg +13 -0
  422. package/src/icons/duotone-icons/Food/Sushi.svg +11 -0
  423. package/src/icons/duotone-icons/Food/Two-bottles.svg +11 -0
  424. package/src/icons/duotone-icons/Food/Wine.svg +11 -0
  425. package/src/icons/duotone-icons/General/Attachment#1.svg +11 -0
  426. package/src/icons/duotone-icons/General/Attachment#2.svg +13 -0
  427. package/src/icons/duotone-icons/General/Binocular.svg +10 -0
  428. package/src/icons/duotone-icons/General/Bookmark.svg +10 -0
  429. package/src/icons/duotone-icons/General/Clip.svg +10 -0
  430. package/src/icons/duotone-icons/General/Clipboard.svg +13 -0
  431. package/src/icons/duotone-icons/General/Cursor.svg +10 -0
  432. package/src/icons/duotone-icons/General/Dislike.svg +11 -0
  433. package/src/icons/duotone-icons/General/Duplicate.svg +11 -0
  434. package/src/icons/duotone-icons/General/Edit.svg +10 -0
  435. package/src/icons/duotone-icons/General/Expand-arrows.svg +11 -0
  436. package/src/icons/duotone-icons/General/Fire.svg +10 -0
  437. package/src/icons/duotone-icons/General/Folder.svg +10 -0
  438. package/src/icons/duotone-icons/General/Half-heart.svg +11 -0
  439. package/src/icons/duotone-icons/General/Half-star.svg +11 -0
  440. package/src/icons/duotone-icons/General/Heart.svg +10 -0
  441. package/src/icons/duotone-icons/General/Hidden.svg +12 -0
  442. package/src/icons/duotone-icons/General/Like.svg +11 -0
  443. package/src/icons/duotone-icons/General/Lock.svg +16 -0
  444. package/src/icons/duotone-icons/General/Notification#2.svg +11 -0
  445. package/src/icons/duotone-icons/General/Notifications#1.svg +10 -0
  446. package/src/icons/duotone-icons/General/Other#1.svg +12 -0
  447. package/src/icons/duotone-icons/General/Other#2.svg +12 -0
  448. package/src/icons/duotone-icons/General/Sad.svg +11 -0
  449. package/src/icons/duotone-icons/General/Save.svg +11 -0
  450. package/src/icons/duotone-icons/General/Scale.svg +11 -0
  451. package/src/icons/duotone-icons/General/Scissors.svg +11 -0
  452. package/src/icons/duotone-icons/General/Search.svg +11 -0
  453. package/src/icons/duotone-icons/General/Settings#3.svg +11 -0
  454. package/src/icons/duotone-icons/General/Settings-1.inline.svg +11 -0
  455. package/src/icons/duotone-icons/General/Settings-2.svg +10 -0
  456. package/src/icons/duotone-icons/General/Shield-check.svg +11 -0
  457. package/src/icons/duotone-icons/General/Shield-disabled.svg +11 -0
  458. package/src/icons/duotone-icons/General/Shield-protected.svg +11 -0
  459. package/src/icons/duotone-icons/General/Size.svg +11 -0
  460. package/src/icons/duotone-icons/General/Smile.svg +11 -0
  461. package/src/icons/duotone-icons/General/Star.svg +10 -0
  462. package/src/icons/duotone-icons/General/Thunder-move.svg +11 -0
  463. package/src/icons/duotone-icons/General/Thunder.svg +10 -0
  464. package/src/icons/duotone-icons/General/Trash.svg +11 -0
  465. package/src/icons/duotone-icons/General/Unlock.svg +16 -0
  466. package/src/icons/duotone-icons/General/Update.svg +10 -0
  467. package/src/icons/duotone-icons/General/User.svg +11 -0
  468. package/src/icons/duotone-icons/General/Visible.svg +11 -0
  469. package/src/icons/duotone-icons/Home/Air-ballon.svg +11 -0
  470. package/src/icons/duotone-icons/Home/Alarm-clock.svg +12 -0
  471. package/src/icons/duotone-icons/Home/Armchair.svg +11 -0
  472. package/src/icons/duotone-icons/Home/Bag-chair.svg +11 -0
  473. package/src/icons/duotone-icons/Home/Bath.svg +11 -0
  474. package/src/icons/duotone-icons/Home/Bed.svg +12 -0
  475. package/src/icons/duotone-icons/Home/Book-open.svg +11 -0
  476. package/src/icons/duotone-icons/Home/Book.svg +16 -0
  477. package/src/icons/duotone-icons/Home/Box.svg +11 -0
  478. package/src/icons/duotone-icons/Home/Broom.svg +11 -0
  479. package/src/icons/duotone-icons/Home/Building.svg +12 -0
  480. package/src/icons/duotone-icons/Home/Bulb#1.svg +13 -0
  481. package/src/icons/duotone-icons/Home/Bulb#2.svg +13 -0
  482. package/src/icons/duotone-icons/Home/Chair#1.svg +11 -0
  483. package/src/icons/duotone-icons/Home/Chair#2.svg +11 -0
  484. package/src/icons/duotone-icons/Home/Clock.svg +11 -0
  485. package/src/icons/duotone-icons/Home/Commode#1.svg +11 -0
  486. package/src/icons/duotone-icons/Home/Commode#2.svg +11 -0
  487. package/src/icons/duotone-icons/Home/Couch.svg +11 -0
  488. package/src/icons/duotone-icons/Home/Cupboard.svg +11 -0
  489. package/src/icons/duotone-icons/Home/Curtains.svg +11 -0
  490. package/src/icons/duotone-icons/Home/Deer.svg +11 -0
  491. package/src/icons/duotone-icons/Home/Door-open.svg +11 -0
  492. package/src/icons/duotone-icons/Home/Earth.svg +11 -0
  493. package/src/icons/duotone-icons/Home/Fireplace.svg +11 -0
  494. package/src/icons/duotone-icons/Home/Flashlight.svg +11 -0
  495. package/src/icons/duotone-icons/Home/Flower#1.svg +13 -0
  496. package/src/icons/duotone-icons/Home/Flower#2.svg +14 -0
  497. package/src/icons/duotone-icons/Home/Flower#3.svg +12 -0
  498. package/src/icons/duotone-icons/Home/Globe.svg +11 -0
  499. package/src/icons/duotone-icons/Home/Home-heart.svg +11 -0
  500. package/src/icons/duotone-icons/Home/Home.svg +10 -0
  501. package/src/icons/duotone-icons/Home/Key.svg +11 -0
  502. package/src/icons/duotone-icons/Home/Ladder.svg +11 -0
  503. package/src/icons/duotone-icons/Home/Lamp#1.svg +13 -0
  504. package/src/icons/duotone-icons/Home/Lamp#2.svg +12 -0
  505. package/src/icons/duotone-icons/Home/Library.svg +11 -0
  506. package/src/icons/duotone-icons/Home/Mailbox.svg +11 -0
  507. package/src/icons/duotone-icons/Home/Mirror.svg +11 -0
  508. package/src/icons/duotone-icons/Home/Picture.svg +13 -0
  509. package/src/icons/duotone-icons/Home/Ruller.svg +10 -0
  510. package/src/icons/duotone-icons/Home/Stairs.svg +10 -0
  511. package/src/icons/duotone-icons/Home/Timer.svg +13 -0
  512. package/src/icons/duotone-icons/Home/Toilet.svg +11 -0
  513. package/src/icons/duotone-icons/Home/Towel.svg +10 -0
  514. package/src/icons/duotone-icons/Home/Trash.svg +11 -0
  515. package/src/icons/duotone-icons/Home/Water-mixer.svg +12 -0
  516. package/src/icons/duotone-icons/Home/Weight#1.svg +11 -0
  517. package/src/icons/duotone-icons/Home/Weight#2.svg +11 -0
  518. package/src/icons/duotone-icons/Home/Wood#1.svg +11 -0
  519. package/src/icons/duotone-icons/Home/Wood#2.svg +11 -0
  520. package/src/icons/duotone-icons/Home/Wood-horse.svg +10 -0
  521. package/src/icons/duotone-icons/Layout/Layout-3d.svg +11 -0
  522. package/src/icons/duotone-icons/Layout/Layout-4-blocks.svg +11 -0
  523. package/src/icons/duotone-icons/Layout/Layout-arrange.inline.svg +11 -0
  524. package/src/icons/duotone-icons/Layout/Layout-grid.svg +11 -0
  525. package/src/icons/duotone-icons/Layout/Layout-horizontal.svg +11 -0
  526. package/src/icons/duotone-icons/Layout/Layout-left-panel-1.svg +11 -0
  527. package/src/icons/duotone-icons/Layout/Layout-left-panel-2.svg +11 -0
  528. package/src/icons/duotone-icons/Layout/Layout-right-panel-1.svg +11 -0
  529. package/src/icons/duotone-icons/Layout/Layout-right-panel-2.svg +11 -0
  530. package/src/icons/duotone-icons/Layout/Layout-top-panel-1.svg +11 -0
  531. package/src/icons/duotone-icons/Layout/Layout-top-panel-2.svg +11 -0
  532. package/src/icons/duotone-icons/Layout/Layout-top-panel-3.svg +11 -0
  533. package/src/icons/duotone-icons/Layout/Layout-top-panel-4.svg +11 -0
  534. package/src/icons/duotone-icons/Layout/Layout-top-panel-5.svg +11 -0
  535. package/src/icons/duotone-icons/Layout/Layout-top-panel-6.svg +11 -0
  536. package/src/icons/duotone-icons/Layout/Layout-vertical.svg +11 -0
  537. package/src/icons/duotone-icons/Map/Compass.svg +10 -0
  538. package/src/icons/duotone-icons/Map/Direction#1.svg +10 -0
  539. package/src/icons/duotone-icons/Map/Direction#2.svg +10 -0
  540. package/src/icons/duotone-icons/Map/Location-arrow.svg +10 -0
  541. package/src/icons/duotone-icons/Map/Marker#1.svg +10 -0
  542. package/src/icons/duotone-icons/Map/Marker#2.svg +10 -0
  543. package/src/icons/duotone-icons/Map/Position.svg +12 -0
  544. package/src/icons/duotone-icons/Media/Add-music.svg +11 -0
  545. package/src/icons/duotone-icons/Media/Airplay-video.svg +11 -0
  546. package/src/icons/duotone-icons/Media/Airplay.svg +11 -0
  547. package/src/icons/duotone-icons/Media/Back.svg +11 -0
  548. package/src/icons/duotone-icons/Media/Backward.svg +11 -0
  549. package/src/icons/duotone-icons/Media/CD.svg +11 -0
  550. package/src/icons/duotone-icons/Media/DVD.svg +11 -0
  551. package/src/icons/duotone-icons/Media/Eject.svg +11 -0
  552. package/src/icons/duotone-icons/Media/Equalizer.svg +13 -0
  553. package/src/icons/duotone-icons/Media/Forward.svg +11 -0
  554. package/src/icons/duotone-icons/Media/Media-library#1.svg +13 -0
  555. package/src/icons/duotone-icons/Media/Media-library#2.svg +11 -0
  556. package/src/icons/duotone-icons/Media/Media-library#3.svg +17 -0
  557. package/src/icons/duotone-icons/Media/Movie-Lane #2.svg +11 -0
  558. package/src/icons/duotone-icons/Media/Movie-lane#1.svg +11 -0
  559. package/src/icons/duotone-icons/Media/Music-cloud.svg +11 -0
  560. package/src/icons/duotone-icons/Media/Music-note.svg +10 -0
  561. package/src/icons/duotone-icons/Media/Music.svg +10 -0
  562. package/src/icons/duotone-icons/Media/Mute.svg +11 -0
  563. package/src/icons/duotone-icons/Media/Next.svg +11 -0
  564. package/src/icons/duotone-icons/Media/Pause.svg +10 -0
  565. package/src/icons/duotone-icons/Media/Play.svg +10 -0
  566. package/src/icons/duotone-icons/Media/Playlist#1.svg +11 -0
  567. package/src/icons/duotone-icons/Media/Playlist#2.svg +11 -0
  568. package/src/icons/duotone-icons/Media/Rec.svg +10 -0
  569. package/src/icons/duotone-icons/Media/Repeat-one.svg +11 -0
  570. package/src/icons/duotone-icons/Media/Repeat.svg +11 -0
  571. package/src/icons/duotone-icons/Media/Shuffle.svg +11 -0
  572. package/src/icons/duotone-icons/Media/Volume-down.svg +11 -0
  573. package/src/icons/duotone-icons/Media/Volume-full.svg +11 -0
  574. package/src/icons/duotone-icons/Media/Volume-half.svg +11 -0
  575. package/src/icons/duotone-icons/Media/Volume-up.svg +11 -0
  576. package/src/icons/duotone-icons/Media/Vynil.svg +11 -0
  577. package/src/icons/duotone-icons/Media/Youtube.svg +11 -0
  578. package/src/icons/duotone-icons/Navigation/Angle-double-down.svg +11 -0
  579. package/src/icons/duotone-icons/Navigation/Angle-double-left.svg +11 -0
  580. package/src/icons/duotone-icons/Navigation/Angle-double-right.svg +11 -0
  581. package/src/icons/duotone-icons/Navigation/Angle-double-up.svg +11 -0
  582. package/src/icons/duotone-icons/Navigation/Angle-down.svg +10 -0
  583. package/src/icons/duotone-icons/Navigation/Angle-left.svg +10 -0
  584. package/src/icons/duotone-icons/Navigation/Angle-right.svg +10 -0
  585. package/src/icons/duotone-icons/Navigation/Angle-up.svg +10 -0
  586. package/src/icons/duotone-icons/Navigation/Arrow-down.svg +11 -0
  587. package/src/icons/duotone-icons/Navigation/Arrow-from-bottom.svg +12 -0
  588. package/src/icons/duotone-icons/Navigation/Arrow-from-left.svg +12 -0
  589. package/src/icons/duotone-icons/Navigation/Arrow-from-right.svg +12 -0
  590. package/src/icons/duotone-icons/Navigation/Arrow-from-top.svg +12 -0
  591. package/src/icons/duotone-icons/Navigation/Arrow-left.svg +11 -0
  592. package/src/icons/duotone-icons/Navigation/Arrow-right.svg +11 -0
  593. package/src/icons/duotone-icons/Navigation/Arrow-to-bottom.svg +12 -0
  594. package/src/icons/duotone-icons/Navigation/Arrow-to-left.svg +12 -0
  595. package/src/icons/duotone-icons/Navigation/Arrow-to-right.svg +12 -0
  596. package/src/icons/duotone-icons/Navigation/Arrow-to-up.svg +12 -0
  597. package/src/icons/duotone-icons/Navigation/Arrow-up.svg +11 -0
  598. package/src/icons/duotone-icons/Navigation/Arrows-h.svg +12 -0
  599. package/src/icons/duotone-icons/Navigation/Arrows-v.svg +12 -0
  600. package/src/icons/duotone-icons/Navigation/Check.svg +10 -0
  601. package/src/icons/duotone-icons/Navigation/Close.svg +12 -0
  602. package/src/icons/duotone-icons/Navigation/Double-check.svg +11 -0
  603. package/src/icons/duotone-icons/Navigation/Down-2.svg +11 -0
  604. package/src/icons/duotone-icons/Navigation/Down-left.svg +11 -0
  605. package/src/icons/duotone-icons/Navigation/Down-right.svg +11 -0
  606. package/src/icons/duotone-icons/Navigation/Exchange.svg +13 -0
  607. package/src/icons/duotone-icons/Navigation/Left 3.svg +11 -0
  608. package/src/icons/duotone-icons/Navigation/Left-2.svg +11 -0
  609. package/src/icons/duotone-icons/Navigation/Minus.svg +9 -0
  610. package/src/icons/duotone-icons/Navigation/Plus.svg +10 -0
  611. package/src/icons/duotone-icons/Navigation/Right 3.svg +11 -0
  612. package/src/icons/duotone-icons/Navigation/Right-2.svg +11 -0
  613. package/src/icons/duotone-icons/Navigation/Route.svg +12 -0
  614. package/src/icons/duotone-icons/Navigation/Sign-in.svg +12 -0
  615. package/src/icons/duotone-icons/Navigation/Sign-out.svg +12 -0
  616. package/src/icons/duotone-icons/Navigation/Up-2.svg +11 -0
  617. package/src/icons/duotone-icons/Navigation/Up-down.svg +13 -0
  618. package/src/icons/duotone-icons/Navigation/Up-left.svg +11 -0
  619. package/src/icons/duotone-icons/Navigation/Up-right.svg +11 -0
  620. package/src/icons/duotone-icons/Navigation/Waiting.svg +10 -0
  621. package/src/icons/duotone-icons/Shopping/ATM.svg +11 -0
  622. package/src/icons/duotone-icons/Shopping/Bag#1.svg +11 -0
  623. package/src/icons/duotone-icons/Shopping/Bag#2.svg +11 -0
  624. package/src/icons/duotone-icons/Shopping/Barcode-read.svg +11 -0
  625. package/src/icons/duotone-icons/Shopping/Barcode-scan.svg +12 -0
  626. package/src/icons/duotone-icons/Shopping/Barcode.svg +11 -0
  627. package/src/icons/duotone-icons/Shopping/Bitcoin.svg +12 -0
  628. package/src/icons/duotone-icons/Shopping/Box#1.svg +11 -0
  629. package/src/icons/duotone-icons/Shopping/Box#3.svg +11 -0
  630. package/src/icons/duotone-icons/Shopping/Box2.inline.svg +11 -0
  631. package/src/icons/duotone-icons/Shopping/Calculator.svg +11 -0
  632. package/src/icons/duotone-icons/Shopping/Cart#1.svg +11 -0
  633. package/src/icons/duotone-icons/Shopping/Cart#2.svg +11 -0
  634. package/src/icons/duotone-icons/Shopping/Cart#3.svg +11 -0
  635. package/src/icons/duotone-icons/Shopping/Chart-bar#1.svg +13 -0
  636. package/src/icons/duotone-icons/Shopping/Chart-bar#2.svg +13 -0
  637. package/src/icons/duotone-icons/Shopping/Chart-bar#3.svg +13 -0
  638. package/src/icons/duotone-icons/Shopping/Chart-line#1.svg +11 -0
  639. package/src/icons/duotone-icons/Shopping/Chart-line#2.svg +11 -0
  640. package/src/icons/duotone-icons/Shopping/Chart-pie.svg +11 -0
  641. package/src/icons/duotone-icons/Shopping/Credit-card.svg +12 -0
  642. package/src/icons/duotone-icons/Shopping/Dollar.svg +12 -0
  643. package/src/icons/duotone-icons/Shopping/Euro.svg +11 -0
  644. package/src/icons/duotone-icons/Shopping/Gift.svg +11 -0
  645. package/src/icons/duotone-icons/Shopping/Loader.svg +12 -0
  646. package/src/icons/duotone-icons/Shopping/MC.svg +11 -0
  647. package/src/icons/duotone-icons/Shopping/Money.svg +11 -0
  648. package/src/icons/duotone-icons/Shopping/Pound.svg +11 -0
  649. package/src/icons/duotone-icons/Shopping/Price #1.svg +10 -0
  650. package/src/icons/duotone-icons/Shopping/Price #2.svg +14 -0
  651. package/src/icons/duotone-icons/Shopping/Rouble.svg +11 -0
  652. package/src/icons/duotone-icons/Shopping/Safe.svg +11 -0
  653. package/src/icons/duotone-icons/Shopping/Sale#1.svg +11 -0
  654. package/src/icons/duotone-icons/Shopping/Sale#2.svg +13 -0
  655. package/src/icons/duotone-icons/Shopping/Settings.svg +11 -0
  656. package/src/icons/duotone-icons/Shopping/Sort#1.svg +11 -0
  657. package/src/icons/duotone-icons/Shopping/Sort#2.svg +10 -0
  658. package/src/icons/duotone-icons/Shopping/Sort#3.svg +10 -0
  659. package/src/icons/duotone-icons/Shopping/Ticket.svg +10 -0
  660. package/src/icons/duotone-icons/Shopping/Wallet#2.svg +11 -0
  661. package/src/icons/duotone-icons/Shopping/Wallet#3.svg +12 -0
  662. package/src/icons/duotone-icons/Shopping/Wallet.svg +12 -0
  663. package/src/icons/duotone-icons/Text/Align-auto.svg +11 -0
  664. package/src/icons/duotone-icons/Text/Align-center.svg +11 -0
  665. package/src/icons/duotone-icons/Text/Align-justify.svg +11 -0
  666. package/src/icons/duotone-icons/Text/Align-left.svg +12 -0
  667. package/src/icons/duotone-icons/Text/Align-right.svg +11 -0
  668. package/src/icons/duotone-icons/Text/Article.svg +11 -0
  669. package/src/icons/duotone-icons/Text/Bold.svg +10 -0
  670. package/src/icons/duotone-icons/Text/Bullet-list.svg +11 -0
  671. package/src/icons/duotone-icons/Text/Code.svg +10 -0
  672. package/src/icons/duotone-icons/Text/Edit-text.svg +11 -0
  673. package/src/icons/duotone-icons/Text/Filter.svg +10 -0
  674. package/src/icons/duotone-icons/Text/Font.svg +11 -0
  675. package/src/icons/duotone-icons/Text/H1.svg +11 -0
  676. package/src/icons/duotone-icons/Text/H2.svg +11 -0
  677. package/src/icons/duotone-icons/Text/Itallic.svg +10 -0
  678. package/src/icons/duotone-icons/Text/Menu.svg +11 -0
  679. package/src/icons/duotone-icons/Text/Paragraph.svg +10 -0
  680. package/src/icons/duotone-icons/Text/Quote#1.svg +11 -0
  681. package/src/icons/duotone-icons/Text/Quote#2.svg +11 -0
  682. package/src/icons/duotone-icons/Text/Redo.svg +10 -0
  683. package/src/icons/duotone-icons/Text/Strikethrough.svg +11 -0
  684. package/src/icons/duotone-icons/Text/Text-height.svg +11 -0
  685. package/src/icons/duotone-icons/Text/Text-width.svg +11 -0
  686. package/src/icons/duotone-icons/Text/Text.svg +10 -0
  687. package/src/icons/duotone-icons/Text/Underline.svg +11 -0
  688. package/src/icons/duotone-icons/Text/Undo.svg +10 -0
  689. package/src/icons/duotone-icons/Tools/Angle Grinder.svg +12 -0
  690. package/src/icons/duotone-icons/Tools/Axe.svg +11 -0
  691. package/src/icons/duotone-icons/Tools/Brush.svg +11 -0
  692. package/src/icons/duotone-icons/Tools/Compass.svg +11 -0
  693. package/src/icons/duotone-icons/Tools/Hummer#2.svg +12 -0
  694. package/src/icons/duotone-icons/Tools/Hummer.svg +11 -0
  695. package/src/icons/duotone-icons/Tools/Pantone.svg +12 -0
  696. package/src/icons/duotone-icons/Tools/Road-Cone.svg +11 -0
  697. package/src/icons/duotone-icons/Tools/Roller.svg +12 -0
  698. package/src/icons/duotone-icons/Tools/Roulette.svg +11 -0
  699. package/src/icons/duotone-icons/Tools/Screwdriver.svg +11 -0
  700. package/src/icons/duotone-icons/Tools/Shovel.svg +11 -0
  701. package/src/icons/duotone-icons/Tools/Spatula.svg +11 -0
  702. package/src/icons/duotone-icons/Tools/Swiss-knife.svg +11 -0
  703. package/src/icons/duotone-icons/Tools/Tools.svg +11 -0
  704. package/src/icons/duotone-icons/Weather/Celcium.svg +11 -0
  705. package/src/icons/duotone-icons/Weather/Cloud#1.svg +10 -0
  706. package/src/icons/duotone-icons/Weather/Cloud#2.svg +11 -0
  707. package/src/icons/duotone-icons/Weather/Cloud-fog.svg +11 -0
  708. package/src/icons/duotone-icons/Weather/Cloud-sun.svg +11 -0
  709. package/src/icons/duotone-icons/Weather/Cloud-wind.svg +12 -0
  710. package/src/icons/duotone-icons/Weather/Cloudy-night.svg +11 -0
  711. package/src/icons/duotone-icons/Weather/Cloudy.svg +11 -0
  712. package/src/icons/duotone-icons/Weather/Day-rain.svg +11 -0
  713. package/src/icons/duotone-icons/Weather/Fahrenheit.svg +11 -0
  714. package/src/icons/duotone-icons/Weather/Fog.svg +15 -0
  715. package/src/icons/duotone-icons/Weather/Moon.svg +10 -0
  716. package/src/icons/duotone-icons/Weather/Night-fog.svg +11 -0
  717. package/src/icons/duotone-icons/Weather/Night-rain.svg +11 -0
  718. package/src/icons/duotone-icons/Weather/Rain#1.svg +11 -0
  719. package/src/icons/duotone-icons/Weather/Rain#2.svg +11 -0
  720. package/src/icons/duotone-icons/Weather/Rain#5.svg +11 -0
  721. package/src/icons/duotone-icons/Weather/Rainbow.svg +12 -0
  722. package/src/icons/duotone-icons/Weather/Snow#1.svg +11 -0
  723. package/src/icons/duotone-icons/Weather/Snow#2.svg +11 -0
  724. package/src/icons/duotone-icons/Weather/Snow#3.svg +11 -0
  725. package/src/icons/duotone-icons/Weather/Snow.svg +11 -0
  726. package/src/icons/duotone-icons/Weather/Storm.svg +11 -0
  727. package/src/icons/duotone-icons/Weather/Sun-fog.svg +11 -0
  728. package/src/icons/duotone-icons/Weather/Sun.svg +11 -0
  729. package/src/icons/duotone-icons/Weather/Suset#1.svg +11 -0
  730. package/src/icons/duotone-icons/Weather/Suset#2.svg +11 -0
  731. package/src/icons/duotone-icons/Weather/Temperature-empty.svg +10 -0
  732. package/src/icons/duotone-icons/Weather/Temperature-full.svg +10 -0
  733. package/src/icons/duotone-icons/Weather/Temperature-half.svg +10 -0
  734. package/src/icons/duotone-icons/Weather/Thunder-night.svg +11 -0
  735. package/src/icons/duotone-icons/Weather/Thunder.svg +11 -0
  736. package/src/icons/duotone-icons/Weather/Umbrella.svg +11 -0
  737. package/src/icons/duotone-icons/Weather/Wind.svg +11 -0
  738. package/src/icons/social/facebook.svg +10 -0
  739. package/src/icons/social/instagram.svg +10 -0
  740. package/src/icons/social/pinterest.svg +3 -0
  741. package/src/icons/social/twitter.svg +10 -0
  742. package/src/implemented-proposals/abi-management.md +161 -0
  743. package/src/implemented-proposals/bank-timestamp-correction.md +77 -0
  744. package/src/implemented-proposals/commitment.md +92 -0
  745. package/src/implemented-proposals/durable-tx-nonces.md +131 -0
  746. package/src/implemented-proposals/ed_overview/ed_economic_sustainability.md +9 -0
  747. package/src/implemented-proposals/ed_overview/ed_mvp.md +24 -0
  748. package/src/implemented-proposals/ed_overview/ed_overview.md +19 -0
  749. package/src/implemented-proposals/ed_overview/ed_references.md +7 -0
  750. package/src/implemented-proposals/ed_overview/ed_storage_rent_economics.md +17 -0
  751. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_overview.md +9 -0
  752. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_state_validation_protocol_based_rewards.md +64 -0
  753. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_state_validation_transaction_fees.md +20 -0
  754. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_validation_stake_delegation.md +28 -0
  755. package/src/implemented-proposals/implemented-proposals.md +9 -0
  756. package/src/implemented-proposals/installer.md +216 -0
  757. package/src/implemented-proposals/instruction_introspection.md +28 -0
  758. package/src/implemented-proposals/leader-leader-transition.md +55 -0
  759. package/src/implemented-proposals/leader-validator-transition.md +52 -0
  760. package/src/implemented-proposals/persistent-account-storage.md +83 -0
  761. package/src/implemented-proposals/readonly-accounts.md +25 -0
  762. package/src/implemented-proposals/reliable-vote-transmission.md +60 -0
  763. package/src/implemented-proposals/rent.md +69 -0
  764. package/src/implemented-proposals/repair-service.md +108 -0
  765. package/src/implemented-proposals/rpc-transaction-history.md +107 -0
  766. package/src/implemented-proposals/snapshot-verification.md +56 -0
  767. package/src/implemented-proposals/staking-rewards.md +33 -0
  768. package/src/implemented-proposals/testing-programs.md +53 -0
  769. package/src/implemented-proposals/tower-bft.md +138 -0
  770. package/src/implemented-proposals/transaction-fees.md +32 -0
  771. package/src/implemented-proposals/validator-timestamp-oracle.md +107 -0
  772. package/src/inflation/adjusted_staking_yield.md +118 -0
  773. package/src/inflation/inflation_schedule.md +40 -0
  774. package/src/inflation/terminology.md +54 -0
  775. package/src/integrations/exchange.md +753 -0
  776. package/src/introduction.md +33 -0
  777. package/src/offline-signing/durable-nonce.md +247 -0
  778. package/src/offline-signing.md +174 -0
  779. package/src/pages/index.js +160 -0
  780. package/src/pages/styles.module.css +41 -0
  781. package/src/proposals/accepted-design-proposals.md +11 -0
  782. package/src/proposals/accounts-db-replication.md +185 -0
  783. package/src/proposals/bankless-leader.md +57 -0
  784. package/src/proposals/block-confirmation.md +85 -0
  785. package/src/proposals/cluster-test-framework.md +102 -0
  786. package/src/proposals/comprehensive-compute-fees.md +164 -0
  787. package/src/proposals/embedding-move.md +37 -0
  788. package/src/proposals/interchain-transaction-verification.md +105 -0
  789. package/src/proposals/ledger-replication-to-implement.md +417 -0
  790. package/src/proposals/log_data.md +146 -0
  791. package/src/proposals/optimistic-confirmation-and-slashing.md +89 -0
  792. package/src/proposals/optimistic-transaction-propagation-signal.md +109 -0
  793. package/src/proposals/optimistic_confirmation.md +408 -0
  794. package/src/proposals/program-instruction-macro.md +226 -0
  795. package/src/proposals/return-data.md +144 -0
  796. package/src/proposals/rip-curl.md +56 -0
  797. package/src/proposals/rust-clients.md +54 -0
  798. package/src/proposals/simple-payment-and-state-verification.md +258 -0
  799. package/src/proposals/slashing.md +60 -0
  800. package/src/proposals/snapshot-verification.md +11 -0
  801. package/src/proposals/tick-verification.md +70 -0
  802. package/src/proposals/transactions-v2.md +334 -0
  803. package/src/proposals/validator-proposal.md +54 -0
  804. package/src/proposals/vote-signing-to-implement.md +116 -0
  805. package/src/running-validator/restart-cluster.md +117 -0
  806. package/src/running-validator/validator-failover.md +146 -0
  807. package/src/running-validator/validator-info.md +64 -0
  808. package/src/running-validator/validator-monitor.md +47 -0
  809. package/src/running-validator/validator-reqs.md +115 -0
  810. package/src/running-validator/validator-stake.md +132 -0
  811. package/src/running-validator/validator-start.md +492 -0
  812. package/src/running-validator/validator-troubleshoot.md +17 -0
  813. package/src/running-validator/vote-accounts.md +219 -0
  814. package/src/running-validator.md +7 -0
  815. package/src/staking/stake-accounts.md +141 -0
  816. package/src/staking/stake-programming.md +27 -0
  817. package/src/staking.md +117 -0
  818. package/src/storage_rent_economics.md +17 -0
  819. package/src/terminology.md +346 -0
  820. package/src/theme/Footer/index.js +126 -0
  821. package/src/theme/Footer/styles.module.css +15 -0
  822. package/src/transaction_fees.md +21 -0
  823. package/src/validator/anatomy.md +13 -0
  824. package/src/validator/blockstore.md +91 -0
  825. package/src/validator/gossip.md +90 -0
  826. package/src/validator/runtime.md +69 -0
  827. package/src/validator/tpu.md +5 -0
  828. package/src/validator/tvu.md +9 -0
  829. package/src/wallet-guide/apps.md +74 -0
  830. package/src/wallet-guide/cli.md +67 -0
  831. package/src/wallet-guide/file-system-wallet.md +65 -0
  832. package/src/wallet-guide/hardware-wallets/ledger.md +219 -0
  833. package/src/wallet-guide/hardware-wallets.md +53 -0
  834. package/src/wallet-guide/ledger-live.md +77 -0
  835. package/src/wallet-guide/paper-wallet.md +203 -0
  836. package/src/wallet-guide/solflare.md +201 -0
  837. package/src/wallet-guide/support.md +16 -0
  838. package/src/wallet-guide/web-wallets.md +52 -0
  839. package/src/wallet-guide.md +63 -0
  840. package/static/.nojekyll +0 -0
  841. package/static/img/favicon.ico +0 -0
  842. package/static/katex/README.md +91 -0
  843. package/static/katex/contrib/auto-render.js +350 -0
  844. package/static/katex/contrib/auto-render.min.js +1 -0
  845. package/static/katex/contrib/auto-render.mjs +226 -0
  846. package/static/katex/contrib/copy-tex.css +13 -0
  847. package/static/katex/contrib/copy-tex.js +213 -0
  848. package/static/katex/contrib/copy-tex.min.css +1 -0
  849. package/static/katex/contrib/copy-tex.min.js +1 -0
  850. package/static/katex/contrib/copy-tex.mjs +85 -0
  851. package/static/katex/contrib/mathtex-script-type.js +137 -0
  852. package/static/katex/contrib/mathtex-script-type.min.js +1 -0
  853. package/static/katex/contrib/mathtex-script-type.mjs +24 -0
  854. package/static/katex/contrib/mhchem.js +3241 -0
  855. package/static/katex/contrib/mhchem.min.js +1 -0
  856. package/static/katex/contrib/mhchem.mjs +3109 -0
  857. package/static/katex/contrib/render-a11y-string.js +870 -0
  858. package/static/katex/contrib/render-a11y-string.min.js +1 -0
  859. package/static/katex/contrib/render-a11y-string.mjs +753 -0
  860. package/static/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  861. package/static/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  862. package/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  863. package/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  864. package/static/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  865. package/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  866. package/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  867. package/static/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  868. package/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  869. package/static/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  870. package/static/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  871. package/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  872. package/static/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  873. package/static/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  874. package/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  875. package/static/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  876. package/static/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  877. package/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  878. package/static/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  879. package/static/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  880. package/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  881. package/static/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  882. package/static/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  883. package/static/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  884. package/static/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  885. package/static/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  886. package/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  887. package/static/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  888. package/static/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  889. package/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  890. package/static/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  891. package/static/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  892. package/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  893. package/static/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  894. package/static/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  895. package/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  896. package/static/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  897. package/static/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  898. package/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  899. package/static/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  900. package/static/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  901. package/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  902. package/static/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  903. package/static/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  904. package/static/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  905. package/static/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  906. package/static/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  907. package/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  908. package/static/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  909. package/static/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  910. package/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  911. package/static/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  912. package/static/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  913. package/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  914. package/static/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  915. package/static/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  916. package/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  917. package/static/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  918. package/static/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  919. package/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  920. package/static/katex/katex.css +1034 -0
  921. package/static/katex/katex.js +17308 -0
  922. package/static/katex/katex.min.css +1 -0
  923. package/static/katex/katex.min.js +1 -0
  924. package/static/katex/katex.mjs +16911 -0
@@ -0,0 +1,89 @@
1
+ ---
2
+ title: Optimistic Confirmation and Slashing
3
+ ---
4
+
5
+ Progress on optimistic confirmation can be tracked here
6
+
7
+ https://github.com/solana-labs/solana/projects/52
8
+
9
+ At the end of May, the mainnet-beta is moving to 1.1, and testnet is
10
+ moving to 1.2. With 1.2, testnet will behave as if it has optimistic
11
+ finality as long as at least no more than 4.66% of the validators are
12
+ acting maliciously. Applications can assume that 2/3+ votes observed in
13
+ gossip confirm a block or that at least 4.66% of the network is violating
14
+ the protocol.
15
+
16
+ ## How does it work?
17
+
18
+ The general idea is that validators must continue voting following their
19
+ last fork, unless the validator can construct a proof that their current
20
+ fork may not reach finality. The way validators construct this proof is
21
+ by collecting votes for all the forks excluding their own. If the set
22
+ of valid votes represents over 1/3+X of the epoch stake weight, there
23
+ may not be a way for the validators current fork to reach 2/3+ finality.
24
+ The validator hashes the proof (creates a witness) and submits it with
25
+ their vote for the alternative fork. But if 2/3+ votes for the same
26
+ block, it is impossible for any of the validators to construct this proof,
27
+ and therefore no validator is able to switch forks and this block will
28
+ be eventually finalized.
29
+
30
+ ## Tradeoffs
31
+
32
+ The safety margin is 1/3+X, where X represents the minimum amount of stake
33
+ that will be slashed in case the protocol is violated. The tradeoff is
34
+ that liveness is now reduced by 2X in the worst case. If more than 1/3 -
35
+ 2X of the network is unavailable, the network may stall and will only
36
+ resume finalizing blocks after the network recovers below 1/3 - 2X of
37
+ failing nodes. So far, we haven’t observed a large unavailability hit
38
+ on our mainnet, cosmos, or tezos. For our network, which is primarily
39
+ composed of high availability systems, this seems unlikely. Currently,
40
+ we have set the threshold percentage to 4.66%, which means that if 23.68%
41
+ have failed the network may stop finalizing blocks. For our network,
42
+ which is primarily composed of high availability systems, a 23.68% drop
43
+ in availability seems unlikely. 1:10^12 odds, assuming five 4.7% staked
44
+ nodes with 0.995 uptime.
45
+
46
+ ## Security
47
+
48
+ Long term average votes per slot has been 670,000,000 votes / 12,000,000
49
+ slots, or 55 out of 64 voting validators. This includes missed blocks due
50
+ to block producer failures. When a client sees 55/64, or ~86% confirming
51
+ a block, it can expect that ~24% or `(86 - 66.666.. + 4.666..)%` of
52
+ the network must be slashed for this block to fail full finalization.
53
+
54
+ ## Why Solana?
55
+
56
+ This approach can be built on other networks, but the implementation
57
+ complexity is significantly reduced on Solana because our votes
58
+ have provable VDF-based timeouts. It’s not clear if switching proofs
59
+ can be easily constructed in networks with weak assumptions about
60
+ time.
61
+
62
+ ## Slashing roadmap
63
+
64
+ Slashing is a hard problem, and it becomes harder when the goal of
65
+ the network is to have the lowest possible latency. The tradeoffs are
66
+ especially apparent when optimizing for latency. For example, ideally
67
+ validators should cast and propagate their votes before the
68
+ memory has been synced to disk, which means that the risk of local state
69
+ corruption is much higher.
70
+
71
+ Fundamentally, our goal for slashing is to slash 100% in cases where
72
+ the node is maliciously trying to violate safety rules and 0% during
73
+ routine operation. How we aim to achieve that is to first implement
74
+ slashing proofs without any automatic slashing whatsoever.
75
+
76
+ Right now, for regular consensus, after a safety violation, the
77
+ network will halt. We can analyze the data and figure out who was
78
+ responsible and propose that the stake should be slashed after
79
+ restart. A similar approach will be used with a optimistic conf.
80
+ An optimistic conf safety violation is easily observable, but under
81
+ normal circumstances, an optimistic confirmation safety violation
82
+ may not halt the network. Once the violation has been observed, the
83
+ validators will freeze the affected stake in the next epoch and
84
+ will decide on the next upgrade if the violation requires slashing.
85
+
86
+ In the long term, transactions should be able to recover a portion
87
+ of the slashing collateral if the optimistic safety violation is
88
+ proven. In that scenario, each block is effectively insured by the
89
+ network.
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: Optimistic Transaction Propagation Signal
3
+ ---
4
+
5
+ ## Current Retransmit behavior
6
+
7
+ The retransmission tree currently considers:
8
+ 1. epoch staked nodes
9
+ 2. tvu peers (filtered by contact info and shred version)
10
+ 3. current validator
11
+
12
+ concatenating (1), (2), and (3)
13
+ deduplicating this list of entries by pubkey favoring entries with contact info
14
+ filtering this list by entries with contact info
15
+
16
+ This list is then is randomly shuffled by stake weight.
17
+
18
+ Shreds are then retransmitted to up to FANOUT neighbors and up to FANOUT
19
+ children.
20
+
21
+ ## Deterministic retransmission tree
22
+
23
+ `weighted_shuffle` will use a deterministic seed when
24
+ `enable_deterministic_seed` has been enabled based on the triple (shred slot,
25
+ shred index, leader pubkey):
26
+
27
+ ```
28
+ if enable_deterministic_seed(self.slot(), root_bank) {
29
+ hashv(&[
30
+ &self.slot().to_le_bytes(),
31
+ &self.index().to_le_bytes(),
32
+ &leader_pubkey.to_bytes(),
33
+ ])
34
+ ```
35
+
36
+ First, only epoch staked nodes will be considered regardless of presence of
37
+ contact info (and possibly including the validator node itself).
38
+
39
+ A deterministic ordering of the epoch staked nodes will be created based on the
40
+ derministic shred seed using weighted_shuffle.
41
+
42
+ Let `neighbor_set` be selected from up to FANOUT neighbors of the current node.
43
+ Let `child_set` be selected from up to FANOUT children of the current node.
44
+
45
+ Filter `neighbor_set` by contact info.
46
+ Filter `child_set` by contact info.
47
+
48
+ Let `epoch_set` be the union of `neighbor_set` and `child_set`.
49
+
50
+ Let `remaining_set` be all other nodes with contact info not contained in
51
+ `epoch_set`.
52
+
53
+ If `epoch_set.len < 2*FANOUT` then we may randomly select up to
54
+ `2*FANOUT - epoch_set.len` nodes to to retransmit to from `remaining_set`.
55
+
56
+ ## Receiving retransmitted shred
57
+
58
+ If the current validator node is not in the set of epoch staked nodes for the
59
+ shred epoch then no early retransmission information can be obtained.
60
+
61
+ Compute the deterministic shred seed.
62
+
63
+ Run the deterministic epoch_stakes shuffle.
64
+
65
+ Find position of self in the neighbor or child sets.
66
+
67
+ Calculate the sum of the stakes of all nodes in the current and prior
68
+ distribution levels.
69
+
70
+ ### Stake summation considerations:
71
+
72
+ - Stake sum could include stakes of nodes which had been skipped in prior
73
+ distribution levels because of lack of contact info.
74
+ - Current node was part of original epoch staked shuffle from retransmitter
75
+ but was filtered out because of missing contact info. Current node subsequently
76
+ receives retransmisison of shred and assumes that the retransmit was a result
77
+ of the deterministic tree calculation and not from subsequent random selection.
78
+ This should be benign because the current node will underestimate prior stake
79
+ weight in the retransmission tree.
80
+
81
+ ### General considerations:
82
+
83
+ attack by leader (level 0):
84
+ - transmits shred for distribution through the tree as normal
85
+ - additionally transmits shred (or fake shred) directly to node(s) at level >=2
86
+ leading the node(s) to believe a greater percentage of the tree retransmission
87
+ tree had been processed
88
+
89
+ attack by node at level n:
90
+ - retransmits shred to node(s) at level >=n+2 leading the node(s) to believe a
91
+ greater percentage of the tree retransmission tree had been processed
92
+
93
+ ### Questions
94
+
95
+ - Should receiving nodes attempt to verify that the origin of the shred was
96
+ retransmitted from the expected node? If so, consideration of spoofing?
97
+ - How is this information consumed?
98
+
99
+ ## Notes
100
+
101
+ Practically, signals should fall into the following buckets:
102
+ 1. current leader (can signal layer 1 when broadcast is sent)
103
+ 2. layer 1
104
+ 1.1. can signal layer 1 when shred is received
105
+ 1.2. can signal layer 1 + subset of layer 2 when retransmit is sent
106
+ 3. layer 2
107
+ 3.1. can signal layer 2 when shred is received
108
+ 3.2. can signal layer 2 + subset of layer 3 when retrnasmit is sent
109
+ 4. current node not a member of epoch staked nodes, no signal can be sent
@@ -0,0 +1,408 @@
1
+ ---
2
+ title: Optimistic Confirmation
3
+ ---
4
+
5
+ ## Primitives
6
+
7
+ `vote(X, S)` - Votes will be augmented with a "reference" slot, `X`
8
+ which is the **latest** ancestor of this fork that this validator voted on
9
+ with a proof of switching. As long as the validator makes consecutive votes
10
+ that are all descended from each other, the same `X` should be used for all
11
+ those votes. When the validator makes a vote for a slot `s` that is not
12
+ descended from the previous, `X` will be set to the new slot `s`. All votes
13
+ will then be of the form `vote(X, S)`, where `S` is the sorted list of slots
14
+ `(s, s.lockout)` being voted for.
15
+
16
+ Given a vote `vote(X, S)`, let `S.last == vote.last` be the last slot in `S`.
17
+
18
+ Now we define some "Optimistic Slashing" slashing conditions. The intuition
19
+ for these is described below:
20
+
21
+ - `Intuition`: If a validator submits `vote(X, S)`, the same validator
22
+ should not have voted on a different fork that "overlaps" this fork.
23
+ More concretely, this validator should not have cast another vote
24
+ `vote(X', S')` where the range `[X, S.last]` overlaps the range
25
+ `[X', S'.last]`, `X != X'`, as shown below:
26
+
27
+ ```text
28
+ +-------+
29
+ | |
30
+ +---------+ +--------+
31
+ | | | |
32
+ | +-------+ |
33
+ | |
34
+ | |
35
+ | |
36
+ +---+---+ |
37
+ | | |
38
+ X | | |
39
+ | | |
40
+ +---+---+ |
41
+ | |
42
+ | +---+---+
43
+ | | |
44
+ | | | X'
45
+ | | |
46
+ | +---+---+
47
+ | |
48
+ | |
49
+ | |
50
+ | |
51
+ | +---+---+
52
+ | | |
53
+ | | | S'.last
54
+ | | |
55
+ | +-------+
56
+ |
57
+ +---+---+
58
+ | |
59
+ s | |
60
+ | |
61
+ +---+---+
62
+ |
63
+ |
64
+ |
65
+ |
66
+ +---+---+
67
+ | |
68
+ S.last | |
69
+ | |
70
+ +-------+
71
+ ```
72
+
73
+ (Example of slashable votes vote(X', S') and vote(X, S))
74
+
75
+ In the diagram above, note that the vote for `S.last` must have been sent after
76
+ the vote for `S'.last` (due to lockouts, the higher vote must have been sent
77
+ later). Thus, the sequence of votes must have been: `X ... S'.last ... S.last`.
78
+ This means after the vote on `S'.last`, the validator must have switched back
79
+ to the other fork at some slot `s > S'.last > X`. Thus, the vote for `S.last`
80
+ should have used `s` as the "reference" point, not `X`, because that was the
81
+ last "switch" on the fork.
82
+
83
+ To enforce this, we define the "Optimistic Slashing" slashing conditions. Given
84
+ any two distinct votes `vote(X, S)`and `vote(X', S')` by the same validator,
85
+ the votes must satisfy:
86
+
87
+ - `X <= S.last`, `X' <= S'.last`
88
+ - All `s` in `S` are ancestors/descendants of one another,
89
+ all `s'` in `S'` are ancsestors/descendants of one another,
90
+ -
91
+ - `X == X'` implies `S` is parent of `S'` or `S'` is a parent of `S`
92
+ - `X' > X` implies `X' > S.last` and `S'.last > S.last`
93
+ and for all `s` in `S`, `s + lockout(s) < X'`
94
+ - `X > X'` implies `X > S'.last` and `S.last > S'.last`
95
+ and for all `s` in `S'`, `s + lockout(s) < X`
96
+
97
+ (The last two rules imply the ranges cannot overlap):
98
+ Otherwise the validator is slashed.
99
+
100
+ `Range(vote)` - Given a vote `v = vote(X, S)`, define `Range(v)` to be the range
101
+ of slots `[X, S.last]`.
102
+
103
+ `SP(old_vote, new_vote)` - This is the "Switching Proof" for `old_vote`, the
104
+ validator's latest vote. Such a proof is necessary anytime a validator switches
105
+ their "reference" slot (see vote section above). The switching proof includes
106
+ a reference to `old_vote`, so that there's a record of what the "range" of that
107
+ `old_vote` was (to make other conflicting switches in this range slashable).
108
+ Such a switch must still respect lockouts.
109
+
110
+ A switching proof shows that `> 1/3` of the network is locked out at slot
111
+ `old_vote.last`.
112
+
113
+ The proof is a list of elements `(validator_id, validator_vote(X, S))`, where:
114
+
115
+ 1. The sum of the stakes of all the validator id's `> 1/3`
116
+
117
+ 2. For each `(validator_id, validator_vote(X, S))`, there exists some slot `s`
118
+ in `S` where:
119
+ _ a.`s` is not a common ancestor of both `validator_vote.last` and
120
+ `old_vote.last` and `new_vote.last`.
121
+ _ b. `s` is not a descendant of `validator_vote.last`. \* c. `s + s.lockout() >= old_vote.last` (implies validator is still locked
122
+ out on slot `s` at slot `old_vote.last`).
123
+
124
+ Switching forks without a valid switching proof is slashable.
125
+
126
+ ## Definitions:
127
+
128
+ Optimistic Confirmation - A block `B` is then said to have achieved
129
+ "optimistic confirmation" if `>2/3` of stake have voted with votes `v`
130
+ where `Range(v)` for each such `v` includes `B.slot`.
131
+
132
+ Finalized - A block `B` is said to be finalized if at least one
133
+ correct validator has rooted `B` or a descendant of `B`.
134
+
135
+ Reverted - A block `B` is said to be reverted if another block `B'` that
136
+ is not a parent or descendant of `B` was finalized.
137
+
138
+ ## Guarantees:
139
+
140
+ A block `B` that has reached optimistic confirmation will not be reverted
141
+ unless at least one validator is slashed.
142
+
143
+ ## Proof:
144
+
145
+ Assume for the sake of contradiction, a block `B` has achieved
146
+ `optimistic confirmation` at some slot `B + n` for some `n`, and:
147
+
148
+ - Another block `B'` that is not a parent or descendant of `B`
149
+ was finalized.
150
+ - No validators violated any slashing conditions.
151
+
152
+ By the definition of `optimistic confirmation`, this means `> 2/3` of validators
153
+ have each shown some vote `v` of the form `Vote(X, S)` where `X <= B <= v.last`.
154
+ Call this set of validators the `Optimistic Validators`.
155
+
156
+ Now given a validator `v` in `Optimistic Validators`, given two votes made by
157
+ `v`, `Vote(X, S)` and `Vote(X', S')` where `X <= B <= S.last`, and
158
+ `X' <= B <= S'.last`, then `X == X'` otherwise an "Optimistic Slashing" condition
159
+ is violated (the "ranges" of each vote would overlap at `B`).
160
+
161
+ Thus define the `Optimistic Votes` to be the set of votes made by
162
+ `Optimistic Validators`, where for each optimistic validator `v`, the vote made
163
+ by `v` included in the set is the `maximal` vote `Vote(X, S)` with the
164
+ greatest `S.last` out of any votes made by `v` that satisfy `X <= B <= S.last`.
165
+ Because we know from above `X` for all such votes made by `v` is unique, we know
166
+ there is such a unique `maximal` vote.
167
+
168
+ ### Lemma 1:
169
+
170
+ `Claim:` Given a vote `Vote(X, S)` made by a validator `V` in the
171
+ `Optimistic Validators` set, and `S` contains a vote for a slot `s`
172
+ for which:
173
+
174
+ - `s + s.lockout > B`,
175
+ - `s` is not an ancestor or descendant of `B`,
176
+
177
+ then `X > B`.
178
+
179
+ ```text
180
+ +-------+
181
+ | |
182
+ +---------+ +--------+
183
+ | | | |
184
+ | +-------+ |
185
+ | |
186
+ | |
187
+ | |
188
+ | +---+---+
189
+ | | |
190
+ | | | X'
191
+ | | |
192
+ | +---+---+
193
+ | |
194
+ | |
195
+ | +---+---+
196
+ | | |
197
+ | | | B (Optimistically Confirmed)
198
+ | | |
199
+ | +---+---+
200
+ | |
201
+ | |
202
+ | |
203
+ | +---+---+
204
+ | | |
205
+ | | | S'.last
206
+ | | |
207
+ | +-------+
208
+ |
209
+ +---+---+
210
+ | |
211
+ X | |
212
+ | |
213
+ +---+---+
214
+ |
215
+ |
216
+ |
217
+ |
218
+ |
219
+ |
220
+ +---+---+
221
+ | |
222
+ S.last | |
223
+ | |
224
+ +---+---+
225
+ |
226
+ |
227
+ |
228
+ |
229
+ +---+---+
230
+ | |
231
+ s + s.lockout | |
232
+ +-------+
233
+ ```
234
+
235
+ `Proof`: Assume for the sake of contradiction a validator `V` from the
236
+ "Optimistic Validators" set made such a vote `Vote(X, S)` where `S` contains
237
+ a vote for a slot `s` not an ancestor or descendant of `B`, where
238
+ `s + s.lockout > B`, but `X <= B`.
239
+
240
+ Let `Vote(X', S')` be the vote in `Optimistic Votes` set made by validator `V`.
241
+ By definition of that set (all votes optimistically confirmed `B`),
242
+ `X' <= B <= S'.last` (see diagram above).
243
+
244
+ This implies that because it's assumed above `X <= B`, then `X <= S'.last`,
245
+ so by the slashing rules, either `X == X'` or `X < X'` (otherwise would
246
+ overlap the range `(X', S'.last)`).
247
+
248
+ `Case X == X'`:
249
+
250
+ Consider `s`. We know `s != X` because it is assumed `s` is not an ancestor
251
+ or descendant of `B`, and `X` is an ancestor of `B`. Because `S'.last` is a
252
+ descendant of `B`, this means `s` is also not an ancestor or descendant of
253
+ `S'.last`. Then because `S.last` is descended from `s`, then `S'.last` cannot
254
+ be an ancestor or descendant of `S.last` either. This implies `X != X'` by the
255
+ "Optimistic Slashing" rules.
256
+
257
+ `Case X < X'`:
258
+
259
+ Intuitively, this implies that `Vote(X, S)` was made "before" `Vote(X', S')`.
260
+
261
+ From the assumption above, `s + s.lockout > B > X'`. Because `s` is not an
262
+ ancestor of `X'`, lockouts would have been violated when this validator
263
+ first attempted to submit a switching vote to `X'` with some vote of the
264
+ form `Vote(X', S'')`.
265
+
266
+ Since none of these cases are valid, the assumption must have been invalid,
267
+ and the claim is proven.
268
+
269
+ ### Lemma 2:
270
+
271
+ Recall `B'` was the block finalized on a different fork than
272
+ "optimistically" confirmed" block `B`.
273
+
274
+ `Claim`: For any vote `Vote(X, S)` in the `Optimistic Votes` set, it must be
275
+ true that `B' > X`
276
+
277
+ ```text
278
+ +-------+
279
+ | |
280
+ +--------+ +---------+
281
+ | | | |
282
+ | +-------+ |
283
+ | |
284
+ | |
285
+ | |
286
+ | +---+---+
287
+ | | |
288
+ | | | X
289
+ | | |
290
+ | +---+---+
291
+ | |
292
+ | |
293
+ | +---+---+
294
+ | | |
295
+ | | | B (Optimistically Confirmed)
296
+ | | |
297
+ | +---+---+
298
+ | |
299
+ | |
300
+ | |
301
+ | +---+---+
302
+ | | |
303
+ | | | S.last
304
+ | | |
305
+ | +-------+
306
+ |
307
+ +---+---+
308
+ | |
309
+ B'(Finalized) | |
310
+ | |
311
+ +-------+
312
+ ```
313
+
314
+ `Proof`: Let `Vote(X, S)` be a vote in the `Optimistic Votes` set. Then by
315
+ definition, given the "optimistcally confirmed" block `B`, `X <= B <= S.last`.
316
+
317
+ Because `X` is a parent of `B`, and `B'` is not a parent or ancestor of `B`,
318
+ then:
319
+
320
+ - `B' != X`
321
+ - `B'` is not a parent of `X`
322
+
323
+ Now consider if `B'` < `X`:
324
+
325
+ `Case B' < X`: We wll show this is a violation of lockouts.
326
+ From above, we know `B'` is not a parent of `X`. Then because `B'` was rooted,
327
+ and `B'` is not a parent of `X`, then the validator should not have been able
328
+ to vote on the higher slot `X` that does not descend from `B'`.
329
+
330
+ ### Proof of Safety:
331
+
332
+ We now aim to show at least one of the validators in the
333
+ `Optimistic Validators` set violated a slashing rule.
334
+
335
+ First note that in order for `B'` to have been rooted, there must have been
336
+ `> 2/3` stake that voted on `B'` or a descendant of `B'`. Given that the
337
+ `Optimistic Validator` set also contains `> 2/3` of the staked validators,
338
+ it follows that `> 1/3` of the staked validators:
339
+
340
+ - Rooted `B'` or a descendant of `B'`
341
+ - Also submitted a vote `v` of the form `Vote(X, S)` where `X <= B <= v.last`.
342
+
343
+ Let the `Delinquent` set be the set of validators that meet the above
344
+ criteria.
345
+
346
+ By definition, in order to root `B'`, each validator `V` in `Delinquent`
347
+ must have each made some "switching vote" of the form `Vote(X_v, S_v)` where:
348
+
349
+ - `S_v.last > B'`
350
+ - `S_v.last` is a descendant of `B'`, so it can't be a descendant of `B`
351
+ - Because `S_v.last` is not a descendant of `B`, then `X_v` cannot be a
352
+ descendant or ancestor of `B`.
353
+
354
+ By definition, this delinquent validator `V` also made some vote `Vote(X, S)`
355
+ in the `Optimistic Votes` where by definition of that set (optimistically
356
+ confirmed `B`), we know `S.last >= B >= X`.
357
+
358
+ By `Lemma 2` we know `B' > X`, and from above `S_v.last > B'`, so then
359
+ `S_v.last > X`. Because `X_v != X` (cannot be a descendant or ancestor of
360
+ `B` from above), then by the slashing rules then, we know `X_v > S.last`.
361
+ From above, `S.last >= B >= X` so for all such "switching votes", `X_v > B`.
362
+
363
+ Now ordering all these "switching votes" in time, let `V` to be the validator
364
+ in `Optimistic Validators` that first submitted such a "swtching vote"
365
+ `Vote(X', S')`, where `X' > B`. We know that such a validator exists because
366
+ we know from above that all delinquent validators must have submitted such
367
+ a vote, and the delinquent validators are a subset of the
368
+ `Optimistic Validators`.
369
+
370
+ Let `Vote(X, S)` be the unique vote in `Optimistic Votes` made by
371
+ validator `V` (maximizing `S.last`).
372
+
373
+ Given `Vote(X, S)` because `X' > B >= X`, then `X' > X`, so
374
+ by the "Optimistic Slashing" rules, `X' > S.last`.
375
+
376
+ In order to perform such a "switching vote" to `X'`, a switching proof
377
+ `SP(Vote(X, S), Vote(X', S'))` must show `> 1/3` of stake being locked
378
+ out at this validator's latest vote, `S.last`. Combine this `>1/3` with the
379
+ fact that the set of validators in the `Optimistic Voters` set consists of
380
+ `> 2/3` of the stake, implies at least one optimistic validator `W` from the
381
+ `Optimistic Voters` set must have submitted a vote (recall the definition of
382
+ a switching proof),`Vote(X_w, S_w)` that was included in validator `V`'s
383
+ switching proof for slot `X'`, where `S_w` contains a slot `s` such that:
384
+
385
+ - `s` is not a common ancestor of `S.last` and `X'`
386
+ - `s` is not a descendant of `S.last`.
387
+ - `s' + s'.lockout > S.last`
388
+
389
+ Because `B` is an ancestor of `S.last`, it is also true then:
390
+
391
+ - `s` is not a common ancestor of `B` and `X'`
392
+ - `s' + s'.lockout > B`
393
+
394
+ which was included in `V`'s switching proof.
395
+
396
+ Now because `W` is also a member of `Optimistic Voters`, then by the `Lemma 1`
397
+ above, given a vote by `W`, `Vote(X_w, S_w)`, where `S_w` contains a vote for
398
+ a slot `s` where `s + s.lockout > B`, and `s` is not an ancestor of `B`, then
399
+ `X_w > B`.
400
+
401
+ Because validator `V` included vote `Vote(X_w, S_w)` in its proof of switching
402
+ for slot `X'`, then his implies validator `V'` submitted vote `Vote(X_w, S_w)`
403
+ **before** validator `V` submitted its switching vote for slot `X'`,
404
+ `Vote(X', S')`.
405
+
406
+ But this is a contradiction because we chose `Vote(X', S')` to be the first vote
407
+ made by any validator in the `Optimistic Voters` set where `X' > B` and `X'` is
408
+ not a descendant of `B`.