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,164 @@
1
+ ---
2
+ title: Install the Solana Tool Suite
3
+ ---
4
+
5
+ There are multiple ways to install the Solana tools on your computer
6
+ depending on your preferred workflow:
7
+
8
+ - [Use Solana's Install Tool (Simplest option)](#use-solanas-install-tool)
9
+ - [Download Prebuilt Binaries](#download-prebuilt-binaries)
10
+ - [Build from Source](#build-from-source)
11
+
12
+ ## Use Solana's Install Tool
13
+
14
+ ### MacOS & Linux
15
+
16
+ - Open your favorite Terminal application
17
+
18
+ - Install the Solana release
19
+ [LATEST_SOLANA_RELEASE_VERSION](https://github.com/solana-labs/solana/releases/tag/LATEST_SOLANA_RELEASE_VERSION) on your
20
+ machine by running:
21
+
22
+ ```bash
23
+ sh -c "$(curl -sSfL https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/install)"
24
+ ```
25
+
26
+ - You can replace `LATEST_SOLANA_RELEASE_VERSION` with the release tag matching
27
+ the software version of your desired release, or use one of the three symbolic
28
+ channel names: `stable`, `beta`, or `edge`.
29
+
30
+ - The following output indicates a successful update:
31
+
32
+ ```text
33
+ downloading LATEST_SOLANA_RELEASE_VERSION installer
34
+ Configuration: /home/solana/.config/solana/install/config.yml
35
+ Active release directory: /home/solana/.local/share/solana/install/active_release
36
+ * Release version: LATEST_SOLANA_RELEASE_VERSION
37
+ * Release URL: https://github.com/solana-labs/solana/releases/download/LATEST_SOLANA_RELEASE_VERSION/solana-release-x86_64-unknown-linux-gnu.tar.bz2
38
+ Update successful
39
+ ```
40
+
41
+ - Depending on your system, the end of the installer messaging may prompt you
42
+ to
43
+
44
+ ```bash
45
+ Please update your PATH environment variable to include the solana programs:
46
+ ```
47
+
48
+ - If you get the above message, copy and paste the recommended command below
49
+ it to update `PATH`
50
+ - Confirm you have the desired version of `solana` installed by running:
51
+
52
+ ```bash
53
+ solana --version
54
+ ```
55
+
56
+ - After a successful install, `solana-install update` may be used to easily
57
+ update the Solana software to a newer version at any time.
58
+
59
+ ---
60
+
61
+ ### Windows
62
+
63
+ - Open a Command Prompt (`cmd.exe`) as an Administrator
64
+
65
+ - Search for Command Prompt in the Windows search bar. When the Command
66
+ Prompt app appears, right-click and select “Open as Administrator”.
67
+ If you are prompted by a pop-up window asking “Do you want to allow this app to
68
+ make changes to your device?”, click Yes.
69
+
70
+ - Copy and paste the following command, then press Enter to download the Solana
71
+ installer into a temporary directory:
72
+
73
+ ```bash
74
+ curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/solana-install-init-x86_64-pc-windows-msvc.exe --output C:\solana-install-tmp\solana-install-init.exe --create-dirs
75
+ ```
76
+
77
+ - Copy and paste the following command, then press Enter to install the latest
78
+ version of Solana. If you see a security pop-up by your system, please select
79
+ to allow the program to run.
80
+
81
+ ```bash
82
+ C:\solana-install-tmp\solana-install-init.exe LATEST_SOLANA_RELEASE_VERSION
83
+ ```
84
+
85
+ - When the installer is finished, press Enter.
86
+
87
+ - Close the command prompt window and re-open a new command prompt window as a
88
+ normal user
89
+ - Search for "Command Prompt" in the search bar, then left click on the
90
+ Command Prompt app icon, no need to run as Administrator)
91
+ - Confirm you have the desired version of `solana` installed by entering:
92
+
93
+ ```bash
94
+ solana --version
95
+ ```
96
+
97
+ - After a successful install, `solana-install update` may be used to easily
98
+ update the Solana software to a newer version at any time.
99
+
100
+ ## Download Prebuilt Binaries
101
+
102
+ If you would rather not use `solana-install` to manage the install, you can
103
+ manually download and install the binaries.
104
+
105
+ ### Linux
106
+
107
+ Download the binaries by navigating to
108
+ [https://github.com/solana-labs/solana/releases/latest](https://github.com/solana-labs/solana/releases/latest),
109
+ download **solana-release-x86_64-unknown-linux-msvc.tar.bz2**, then extract the
110
+ archive:
111
+
112
+ ```bash
113
+ tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2
114
+ cd solana-release/
115
+ export PATH=$PWD/bin:$PATH
116
+ ```
117
+
118
+ ### MacOS
119
+
120
+ Download the binaries by navigating to
121
+ [https://github.com/solana-labs/solana/releases/latest](https://github.com/solana-labs/solana/releases/latest),
122
+ download **solana-release-x86_64-apple-darwin.tar.bz2**, then extract the
123
+ archive:
124
+
125
+ ```bash
126
+ tar jxf solana-release-x86_64-apple-darwin.tar.bz2
127
+ cd solana-release/
128
+ export PATH=$PWD/bin:$PATH
129
+ ```
130
+
131
+ ### Windows
132
+
133
+ - Download the binaries by navigating to
134
+ [https://github.com/solana-labs/solana/releases/latest](https://github.com/solana-labs/solana/releases/latest),
135
+ download **solana-release-x86_64-pc-windows-msvc.tar.bz2**, then extract the
136
+ archive using WinZip or similar.
137
+
138
+ - Open a Command Prompt and navigate to the directory into which you extracted
139
+ the binaries and run:
140
+
141
+ ```bash
142
+ cd solana-release/
143
+ set PATH=%cd%/bin;%PATH%
144
+ ```
145
+
146
+ ## Build From Source
147
+
148
+ If you are unable to use the prebuilt binaries or prefer to build it yourself
149
+ from source, navigate to
150
+ [https://github.com/solana-labs/solana/releases/latest](https://github.com/solana-labs/solana/releases/latest),
151
+ and download the **Source Code** archive. Extract the code and build the
152
+ binaries with:
153
+
154
+ ```bash
155
+ ./scripts/cargo-install-all.sh .
156
+ export PATH=$PWD/bin:$PATH
157
+ ```
158
+
159
+ You can then run the following command to obtain the same result as with
160
+ prebuilt binaries:
161
+
162
+ ```bash
163
+ solana-install init
164
+ ```
@@ -0,0 +1,158 @@
1
+ ---
2
+ title: Send and Receive Tokens
3
+ ---
4
+
5
+ This page decribes how to receive and send SOL tokens using the command line
6
+ tools with a command line wallet such as a [paper wallet](../wallet-guide/paper-wallet.md),
7
+ a [file system wallet](../wallet-guide/file-system-wallet.md), or a
8
+ [hardware wallet](../wallet-guide/hardware-wallets.md). Before you begin, make sure
9
+ you have created a wallet and have access to its address (pubkey) and the
10
+ signing keypair. Check out our
11
+ [conventions for entering keypairs for different wallet types](../cli/conventions.md#keypair-conventions).
12
+
13
+ ## Testing your Wallet
14
+
15
+ Before sharing your public key with others, you may want to first ensure the
16
+ key is valid and that you indeed hold the corresponding private key.
17
+
18
+ In this example, we will create a second wallet in addition to your first wallet,
19
+ and then transfer some tokens to it. This will confirm that you can send and
20
+ receive tokens on your wallet type of choice.
21
+
22
+ This test example uses our Developer Testnet, called devnet. Tokens issued
23
+ on devnet have **no** value, so don't worry if you lose them.
24
+
25
+ #### Airdrop some tokens to get started
26
+
27
+ First, _airdrop_ yourself some play tokens on the devnet.
28
+
29
+ ```bash
30
+ solana airdrop 1 <RECIPIENT_ACCOUNT_ADDRESS> --url https://api.devnet.solana.com
31
+ ```
32
+
33
+ where you replace the text `<RECIPIENT_ACCOUNT_ADDRESS>` with your base58-encoded
34
+ public key/wallet address.
35
+
36
+ #### Check your balance
37
+
38
+ Confirm the airdrop was successful by checking the account's balance.
39
+ It should output `1 SOL`:
40
+
41
+ ```bash
42
+ solana balance <ACCOUNT_ADDRESS> --url https://api.devnet.solana.com
43
+ ```
44
+
45
+ #### Create a second wallet address
46
+
47
+ We will need a new address to receive our tokens. Create a second
48
+ keypair and record its pubkey:
49
+
50
+ ```bash
51
+ solana-keygen new --no-passphrase --no-outfile
52
+ ```
53
+
54
+ The output will contain the address after the text `pubkey:`. Copy the
55
+ address. We will use it in the next step.
56
+
57
+ ```text
58
+ pubkey: GKvqsuNcnwWqPzzuhLmGi4rzzh55FhJtGizkhHaEJqiV
59
+ ```
60
+
61
+ You can also create a second (or more) wallet of any type:
62
+ [paper](../wallet-guide/paper-wallet#creating-multiple-paper-wallet-addresses),
63
+ [file system](../wallet-guide/file-system-wallet.md#creating-multiple-file-system-wallet-addresses),
64
+ or [hardware](../wallet-guide/hardware-wallets.md#multiple-addresses-on-a-single-hardware-wallet).
65
+
66
+ #### Transfer tokens from your first wallet to the second address
67
+
68
+ Next, prove that you own the airdropped tokens by transferring them.
69
+ The Solana cluster will only accept the transfer if you sign the transaction
70
+ with the private keypair corresponding to the sender's public key in the
71
+ transaction.
72
+
73
+ ```bash
74
+ solana transfer --from <KEYPAIR> <RECIPIENT_ACCOUNT_ADDRESS> 0.5 --allow-unfunded-recipient --url https://api.devnet.solana.com --fee-payer <KEYPAIR>
75
+ ```
76
+
77
+ where you replace `<KEYPAIR>` with the path to a keypair in your first wallet,
78
+ and replace `<RECIPIENT_ACCOUNT_ADDRESS>` with the address of your second
79
+ wallet.
80
+
81
+ Confirm the updated balances with `solana balance`:
82
+
83
+ ```bash
84
+ solana balance <ACCOUNT_ADDRESS> --url http://api.devnet.solana.com
85
+ ```
86
+
87
+ where `<ACCOUNT_ADDRESS>` is either the public key from your keypair or the
88
+ recipient's public key.
89
+
90
+ #### Full example of test transfer
91
+
92
+ ```bash
93
+ $ solana-keygen new --outfile my_solana_wallet.json # Creating my first wallet, a file system wallet
94
+ Generating a new keypair
95
+ For added security, enter a passphrase (empty for no passphrase):
96
+ Wrote new keypair to my_solana_wallet.json
97
+ ==========================================================================
98
+ pubkey: DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK # Here is the address of the first wallet
99
+ ==========================================================================
100
+ Save this seed phrase to recover your new keypair:
101
+ width enhance concert vacant ketchup eternal spy craft spy guard tag punch # If this was a real wallet, never share these words on the internet like this!
102
+ ==========================================================================
103
+
104
+ $ solana airdrop 1 DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK --url https://api.devnet.solana.com # Airdropping 1 SOL to my wallet's address/pubkey
105
+ Requesting airdrop of 1 SOL from 35.233.193.70:9900
106
+ 1 SOL
107
+
108
+ $ solana balance DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK --url https://api.devnet.solana.com # Check the address's balance
109
+ 1 SOL
110
+
111
+ $ solana-keygen new --no-outfile # Creating a second wallet, a paper wallet
112
+ Generating a new keypair
113
+ For added security, enter a passphrase (empty for no passphrase):
114
+ ====================================================================
115
+ pubkey: 7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv # Here is the address of the second, paper, wallet.
116
+ ====================================================================
117
+ Save this seed phrase to recover your new keypair:
118
+ clump panic cousin hurt coast charge engage fall eager urge win love # If this was a real wallet, never share these words on the internet like this!
119
+ ====================================================================
120
+
121
+ $ solana transfer --from my_solana_wallet.json 7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv 0.5 --allow-unfunded-recipient --url https://api.devnet.solana.com --fee-payer my_solana_wallet.json # Transferring tokens to the public address of the paper wallet
122
+ 3gmXvykAd1nCQQ7MjosaHLf69Xyaqyq1qw2eu1mgPyYXd5G4v1rihhg1CiRw35b9fHzcftGKKEu4mbUeXY2pEX2z # This is the transaction signature
123
+
124
+ $ solana balance DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK --url https://api.devnet.solana.com
125
+ 0.499995 SOL # The sending account has slightly less than 0.5 SOL remaining due to the 0.000005 SOL transaction fee payment
126
+
127
+ $ solana balance 7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv --url https://api.devnet.solana.com
128
+ 0.5 SOL # The second wallet has now received the 0.5 SOL transfer from the first wallet
129
+
130
+ ```
131
+
132
+ ## Receive Tokens
133
+
134
+ To receive tokens, you will need an address for others to send tokens to. In
135
+ Solana, the wallet address is the public key of a keypair. There are a variety
136
+ of techniques for generating keypairs. The method you choose will depend on how
137
+ you choose to store keypairs. Keypairs are stored in wallets. Before receiving
138
+ tokens, you will need to [create a wallet](../wallet-guide/cli.md).
139
+ Once completed, you should have a public key
140
+ for each keypair you generated. The public key is a long string of base58
141
+ characters. Its length varies from 32 to 44 characters.
142
+
143
+ ## Send Tokens
144
+
145
+ If you already hold SOL and want to send tokens to someone, you will need
146
+ a path to your keypair, their base58-encoded public key, and a number of
147
+ tokens to transfer. Once you have that collected, you can transfer tokens
148
+ with the `solana transfer` command:
149
+
150
+ ```bash
151
+ solana transfer --from <KEYPAIR> <RECIPIENT_ACCOUNT_ADDRESS> <AMOUNT> --fee-payer <KEYPAIR>
152
+ ```
153
+
154
+ Confirm the updated balances with `solana balance`:
155
+
156
+ ```bash
157
+ solana balance <ACCOUNT_ADDRESS>
158
+ ```
package/src/cli.md ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: Command-line Guide
3
+ ---
4
+
5
+ In this section, we will describe how to use the Solana command-line tools to
6
+ create a _wallet_, to send and receive SOL tokens, and to participate in
7
+ the cluster by delegating stake.
8
+
9
+ To interact with a Solana cluster, we will use its command-line interface, also
10
+ known as the CLI. We use the command-line because it is the first place the
11
+ Solana core team deploys new functionality. The command-line interface is not
12
+ necessarily the easiest to use, but it provides the most direct, flexible, and
13
+ secure access to your Solana accounts.
14
+
15
+ ## Getting Started
16
+
17
+ To get started using the Solana Command Line (CLI) tools:
18
+
19
+ - [Install the Solana Tools](cli/install-solana-cli-tools.md)
20
+ - [Choose a Cluster](cli/choose-a-cluster.md)
21
+ - [Create a Wallet](wallet-guide/cli.md)
22
+ - [Check out our CLI conventions](cli/conventions.md)
@@ -0,0 +1,129 @@
1
+ ---
2
+ title: Benchmark a Cluster
3
+ ---
4
+
5
+ The Solana git repository contains all the scripts you might need to spin up your own local testnet. Depending on what you're looking to achieve, you may want to run a different variation, as the full-fledged, performance-enhanced multinode testnet is considerably more complex to set up than a Rust-only, singlenode testnode. If you are looking to develop high-level features, such as experimenting with smart contracts, save yourself some setup headaches and stick to the Rust-only singlenode demo. If you're doing performance optimization of the transaction pipeline, consider the enhanced singlenode demo. If you're doing consensus work, you'll need at least a Rust-only multinode demo. If you want to reproduce our TPS metrics, run the enhanced multinode demo.
6
+
7
+ For all four variations, you'd need the latest Rust toolchain and the Solana source code:
8
+
9
+ First, setup Rust, Cargo and system packages as described in the Solana [README](https://github.com/solana-labs/solana#1-install-rustc-cargo-and-rustfmt)
10
+
11
+ Now checkout the code from github:
12
+
13
+ ```bash
14
+ git clone https://github.com/solana-labs/solana.git
15
+ cd solana
16
+ ```
17
+
18
+ The demo code is sometimes broken between releases as we add new low-level features, so if this is your first time running the demo, you'll improve your odds of success if you check out the [latest release](https://github.com/solana-labs/solana/releases) before proceeding:
19
+
20
+ ```bash
21
+ TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
22
+ git checkout $TAG
23
+ ```
24
+
25
+ ### Configuration Setup
26
+
27
+ Ensure important programs such as the vote program are built before any nodes are started. Note that we are using the release build here for good performance.
28
+ If you want the debug build, use just `cargo build` and omit the `NDEBUG=1` part of the command.
29
+
30
+ ```bash
31
+ cargo build --release
32
+ ```
33
+
34
+ The network is initialized with a genesis ledger generated by running the following script.
35
+
36
+ ```bash
37
+ NDEBUG=1 ./multinode-demo/setup.sh
38
+ ```
39
+
40
+ ### Faucet
41
+
42
+ In order for the validators and clients to work, we'll need to spin up a faucet to give out some test tokens. The faucet delivers Milton Friedman-style "air drops" \(free tokens to requesting clients\) to be used in test transactions.
43
+
44
+ Start the faucet with:
45
+
46
+ ```bash
47
+ NDEBUG=1 ./multinode-demo/faucet.sh
48
+ ```
49
+
50
+ ### Singlenode Testnet
51
+
52
+ Before you start a validator, make sure you know the IP address of the machine you want to be the bootstrap validator for the demo, and make sure that udp ports 8000-10000 are open on all the machines you want to test with.
53
+
54
+ Now start the bootstrap validator in a separate shell:
55
+
56
+ ```bash
57
+ NDEBUG=1 ./multinode-demo/bootstrap-validator.sh
58
+ ```
59
+
60
+ Wait a few seconds for the server to initialize. It will print "leader ready..." when it's ready to receive transactions. The leader will request some tokens from the faucet if it doesn't have any. The faucet does not need to be running for subsequent leader starts.
61
+
62
+ ### Multinode Testnet
63
+
64
+ To run a multinode testnet, after starting a leader node, spin up some additional validators in separate shells:
65
+
66
+ ```bash
67
+ NDEBUG=1 ./multinode-demo/validator-x.sh
68
+ ```
69
+
70
+ To run a performance-enhanced validator on Linux, [CUDA 10.0](https://developer.nvidia.com/cuda-downloads) must be installed on your system:
71
+
72
+ ```bash
73
+ ./fetch-perf-libs.sh
74
+ NDEBUG=1 SOLANA_CUDA=1 ./multinode-demo/bootstrap-validator.sh
75
+ NDEBUG=1 SOLANA_CUDA=1 ./multinode-demo/validator.sh
76
+ ```
77
+
78
+ ### Testnet Client Demo
79
+
80
+ Now that your singlenode or multinode testnet is up and running let's send it some transactions!
81
+
82
+ In a separate shell start the client:
83
+
84
+ ```bash
85
+ NDEBUG=1 ./multinode-demo/bench-tps.sh # runs against localhost by default
86
+ ```
87
+
88
+ What just happened? The client demo spins up several threads to send 500,000 transactions to the testnet as quickly as it can. The client then pings the testnet periodically to see how many transactions it processed in that time. Take note that the demo intentionally floods the network with UDP packets, such that the network will almost certainly drop a bunch of them. This ensures the testnet has an opportunity to reach 710k TPS. The client demo completes after it has convinced itself the testnet won't process any additional transactions. You should see several TPS measurements printed to the screen. In the multinode variation, you'll see TPS measurements for each validator node as well.
89
+
90
+ ### Testnet Debugging
91
+
92
+ There are some useful debug messages in the code, you can enable them on a per-module and per-level basis. Before running a leader or validator set the normal RUST_LOG environment variable.
93
+
94
+ For example
95
+
96
+ - To enable `info` everywhere and `debug` only in the solana::banking_stage module:
97
+
98
+ ```bash
99
+ export RUST_LOG=solana=info,solana::banking_stage=debug
100
+ ```
101
+
102
+ - To enable BPF program logging:
103
+
104
+ ```bash
105
+ export RUST_LOG=solana_bpf_loader=trace
106
+ ```
107
+
108
+ Generally we are using `debug` for infrequent debug messages, `trace` for potentially frequent messages and `info` for performance-related logging.
109
+
110
+ You can also attach to a running process with GDB. The leader's process is named _solana-validator_:
111
+
112
+ ```bash
113
+ sudo gdb
114
+ attach <PID>
115
+ set logging on
116
+ thread apply all bt
117
+ ```
118
+
119
+ This will dump all the threads stack traces into gdb.txt
120
+
121
+ ## Developer Testnet
122
+
123
+ In this example the client connects to our public testnet. To run validators on the testnet you would need to open udp ports `8000-10000`.
124
+
125
+ ```bash
126
+ NDEBUG=1 ./multinode-demo/bench-tps.sh --entrypoint entrypoint.devnet.solana.com:8001 --faucet api.devnet.solana.com:9900 --duration 60 --tx_count 50
127
+ ```
128
+
129
+ You can observe the effects of your client's transactions on our [metrics dashboard](https://metrics.solana.com:3000/d/monitor/cluster-telemetry?var-testnet=devnet)
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: Fork Generation
3
+ ---
4
+
5
+ This section describes how forks naturally occur as a consequence of [leader rotation](leader-rotation.md).
6
+
7
+ ## Overview
8
+
9
+ Nodes take turns being leader and generating the PoH that encodes state changes. The cluster can tolerate loss of connection to any leader by synthesizing what the leader _**would**_ have generated had it been connected but not ingesting any state changes. The possible number of forks is thereby limited to a "there/not-there" skip list of forks that may arise on leader rotation slot boundaries. At any given slot, only a single leader's transactions will be accepted.
10
+
11
+ ## Message Flow
12
+
13
+ 1. Transactions are ingested by the current leader.
14
+ 2. Leader filters valid transactions.
15
+ 3. Leader executes valid transactions updating its state.
16
+ 4. Leader packages transactions into entries based off its current PoH slot.
17
+ 5. Leader transmits the entries to validator nodes \(in signed shreds\)
18
+ 1. The PoH stream includes ticks; empty entries that indicate liveness of the leader and the passage of time on the cluster.
19
+ 2. A leader's stream begins with the tick entries necessary to complete PoH back to the leader's most recently observed prior leader slot.
20
+ 6. Validators retransmit entries to peers in their set and to further downstream nodes.
21
+ 7. Validators validate the transactions and execute them on their state.
22
+ 8. Validators compute the hash of the state.
23
+ 9. At specific times, i.e. specific PoH tick counts, validators transmit votes to the leader.
24
+ 1. Votes are signatures of the hash of the computed state at that PoH tick count.
25
+ 2. Votes are also propagated via gossip.
26
+ 10. Leader executes the votes, the same as any other transaction, and broadcasts them to the cluster.
27
+ 11. Validators observe their votes and all the votes from the cluster.
28
+
29
+ ## Partitions, Forks
30
+
31
+ Forks can arise at PoH tick counts that correspond to a vote. The next leader may not have observed the last vote slot and may start their slot with generated virtual PoH entries. These empty ticks are generated by all nodes in the cluster at a cluster-configured rate for hashes/per/tick `Z`.
32
+
33
+ There are only two possible versions of the PoH during a voting slot: PoH with `T` ticks and entries generated by the current leader, or PoH with just ticks. The "just ticks" version of the PoH can be thought of as a virtual ledger, one that all nodes in the cluster can derive from the last tick in the previous slot.
34
+
35
+ Validators can ignore forks at other points \(e.g. from the wrong leader\), or slash the leader responsible for the fork.
36
+
37
+ Validators vote based on a greedy choice to maximize their reward described in [Tower BFT](../implemented-proposals/tower-bft.md).
38
+
39
+ ### Validator's View
40
+
41
+ #### Time Progression
42
+
43
+ The diagram below represents a validator's view of the PoH stream with possible forks over time. L1, L2, etc. are leader slots, and `E`s represent entries from that leader during that leader's slot. The `x`s represent ticks only, and time flows downwards in the diagram.
44
+
45
+ ![Fork generation](/img/fork-generation.svg)
46
+
47
+ Note that an `E` appearing on 2 forks at the same slot is a slashable condition, so a validator observing `E3` and `E3'` can slash L3 and safely choose `x` for that slot. Once a validator commits to a fork, other forks can be discarded below that tick count. For any slot, validators need only consider a single "has entries" chain or a "ticks only" chain to be proposed by a leader. But multiple virtual entries may overlap as they link back to the a previous slot.
48
+
49
+ #### Time Division
50
+
51
+ It's useful to consider leader rotation over PoH tick count as time division of the job of encoding state for the cluster. The following table presents the above tree of forks as a time-divided ledger.
52
+
53
+ | leader slot | L1 | L2 | L3 | L4 | L5 |
54
+ | :--------------- | :-- | :-- | :-- | :-- | :-- |
55
+ | data | E1 | E2 | E3 | E4 | E5 |
56
+ | ticks since prev | | | | x | xx |
57
+
58
+ Note that only data from leader L3 will be accepted during leader slot L3. Data from L3 may include "catchup" ticks back to a slot other than L2 if L3 did not observe L2's data. L4 and L5's transmissions include the "ticks to prev" PoH entries.
59
+
60
+ This arrangement of the network data streams permits nodes to save exactly this to the ledger for replay, restart, and checkpoints.
61
+
62
+ ### Leader's View
63
+
64
+ When a new leader begins a slot, it must first transmit any PoH \(ticks\) required to link the new slot with the most recently observed and voted slot. The fork the leader proposes would link the current slot to a previous fork that the leader has voted on with virtual ticks.
@@ -0,0 +1,88 @@
1
+ ---
2
+ title: Leader Rotation
3
+ ---
4
+
5
+ At any given moment, a cluster expects only one validator to produce ledger entries. By having only one leader at a time, all validators are able to replay identical copies of the ledger. The drawback of only one leader at a time, however, is that a malicious leader is capable of censoring votes and transactions. Since censoring cannot be distinguished from the network dropping packets, the cluster cannot simply elect a single node to hold the leader role indefinitely. Instead, the cluster minimizes the influence of a malicious leader by rotating which node takes the lead.
6
+
7
+ Each validator selects the expected leader using the same algorithm, described below. When the validator receives a new signed ledger entry, it can be certain that an entry was produced by the expected leader. The order of slots which each leader is assigned a slot is called a _leader schedule_.
8
+
9
+ ## Leader Schedule Rotation
10
+
11
+ A validator rejects blocks that are not signed by the _slot leader_. The list of identities of all slot leaders is called a _leader schedule_. The leader schedule is recomputed locally and periodically. It assigns slot leaders for a duration of time called an _epoch_. The schedule must be computed far in advance of the slots it assigns, such that the ledger state it uses to compute the schedule is finalized. That duration is called the _leader schedule offset_. Solana sets the offset to the duration of slots until the next epoch. That is, the leader schedule for an epoch is calculated from the ledger state at the start of the previous epoch. The offset of one epoch is fairly arbitrary and assumed to be sufficiently long such that all validators will have finalized their ledger state before the next schedule is generated. A cluster may choose to shorten the offset to reduce the time between stake changes and leader schedule updates.
12
+
13
+ While operating without partitions lasting longer than an epoch, the schedule only needs to be generated when the root fork crosses the epoch boundary. Since the schedule is for the next epoch, any new stakes committed to the root fork will not be active until the next epoch. The block used for generating the leader schedule is the first block to cross the epoch boundary.
14
+
15
+ Without a partition lasting longer than an epoch, the cluster will work as follows:
16
+
17
+ 1. A validator continuously updates its own root fork as it votes.
18
+ 2. The validator updates its leader schedule each time the slot height crosses an epoch boundary.
19
+
20
+ For example:
21
+
22
+ Let's assume an epoch duration of 100 slots, which in reality is magnitudes higher. The root fork is updated from fork computed at slot height 99 to a fork computed at slot height 102. Forks with slots at height 100, 101 were skipped because of failures. The new leader schedule is computed using fork at slot height 102. It is active from slot 200 until it is updated again.
23
+
24
+ No inconsistency can exist because every validator that is voting with the cluster has skipped 100 and 101 when its root passes 102. All validators, regardless of voting pattern, would be committing to a root that is either 102, or a descendant of 102.
25
+
26
+ ### Leader Schedule Rotation with Epoch Sized Partitions.
27
+
28
+ The duration of the leader schedule offset has a direct relationship to the likelihood of a cluster having an inconsistent view of the correct leader schedule.
29
+
30
+ Consider the following scenario:
31
+
32
+ Two partitions that are generating half of the blocks each. Neither is coming to a definitive supermajority fork. Both will cross epoch 100 and 200 without actually committing to a root and therefore a cluster-wide commitment to a new leader schedule.
33
+
34
+ In this unstable scenario, multiple valid leader schedules exist.
35
+
36
+ - A leader schedule is generated for every fork whose direct parent is in the previous epoch.
37
+ - The leader schedule is valid after the start of the next epoch for descendant forks until it is updated.
38
+
39
+ Each partition's schedule will diverge after the partition lasts more than an epoch. For this reason, the epoch duration should be selected to be much much larger then slot time and the expected length for a fork to be committed to root.
40
+
41
+ After observing the cluster for a sufficient amount of time, the leader schedule offset can be selected based on the median partition duration and its standard deviation. For example, an offset longer then the median partition duration plus six standard deviations would reduce the likelihood of an inconsistent ledger schedule in the cluster to 1 in 1 million.
42
+
43
+ ## Leader Schedule Generation at Genesis
44
+
45
+ The genesis config declares the first leader for the first epoch. This leader ends up scheduled for the first two epochs because the leader schedule is also generated at slot 0 for the next epoch. The length of the first two epochs can be specified in the genesis config as well. The minimum length of the first epochs must be greater than or equal to the maximum rollback depth as defined in [Tower BFT](../implemented-proposals/tower-bft.md).
46
+
47
+ ## Leader Schedule Generation Algorithm
48
+
49
+ Leader schedule is generated using a predefined seed. The process is as follows:
50
+
51
+ 1. Periodically use the PoH tick height \(a monotonically increasing counter\) to seed a stable pseudo-random algorithm.
52
+ 2. At that height, sample the bank for all the staked accounts with leader identities that have voted within a cluster-configured number of ticks. The sample is called the _active set_.
53
+ 3. Sort the active set by stake weight.
54
+ 4. Use the random seed to select nodes weighted by stake to create a stake-weighted ordering.
55
+ 5. This ordering becomes valid after a cluster-configured number of ticks.
56
+
57
+ ## Schedule Attack Vectors
58
+
59
+ ### Seed
60
+
61
+ The seed that is selected is predictable but unbiasable. There is no grinding attack to influence its outcome.
62
+
63
+ ### Active Set
64
+
65
+ A leader can bias the active set by censoring validator votes. Two possible ways exist for leaders to censor the active set:
66
+
67
+ - Ignore votes from validators
68
+ - Refuse to vote for blocks with votes from validators
69
+
70
+ To reduce the likelihood of censorship, the active set is calculated at the leader schedule offset boundary over an _active set sampling duration_. The active set sampling duration is long enough such that votes will have been collected by multiple leaders.
71
+
72
+ ### Staking
73
+
74
+ Leaders can censor new staking transactions or refuse to validate blocks with new stakes. This attack is similar to censorship of validator votes.
75
+
76
+ ### Validator operational key loss
77
+
78
+ Leaders and validators are expected to use ephemeral keys for operation, and stake owners authorize the validators to do work with their stake via delegation.
79
+
80
+ The cluster should be able to recover from the loss of all the ephemeral keys used by leaders and validators, which could occur through a common software vulnerability shared by all the nodes. Stake owners should be able to vote directly by co-signing a validator vote even though the stake is currently delegated to a validator.
81
+
82
+ ## Appending Entries
83
+
84
+ The lifetime of a leader schedule is called an _epoch_. The epoch is split into _slots_, where each slot has a duration of `T` PoH ticks.
85
+
86
+ A leader transmits entries during its slot. After `T` ticks, all the validators switch to the next scheduled leader. Validators must ignore entries sent outside a leader's assigned slot.
87
+
88
+ All `T` ticks must be observed by the next leader for it to build its own entries on. If entries are not observed \(leader is down\) or entries are invalid \(leader is buggy or malicious\), the next leader must produce ticks to fill the previous leader's slot. Note that the next leader should do repair requests in parallel, and postpone sending ticks until it is confident other validators also failed to observe the previous leader's entries. If a leader incorrectly builds on its own ticks, the leader following it must replace all its ticks.
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: Managing Forks
3
+ ---
4
+
5
+ The ledger is permitted to fork at slot boundaries. The resulting data structure forms a tree called a _blockstore_. When the validator interprets the blockstore, it must maintain state for each fork in the chain. We call each instance an _active fork_. It is the responsibility of a validator to weigh those forks, such that it may eventually select a fork.
6
+
7
+ A validator selects a fork by submiting a vote to a slot leader on that fork. The vote commits the validator for a duration of time called a _lockout period_. The validator is not permitted to vote on a different fork until that lockout period expires. Each subsequent vote on the same fork doubles the length of the lockout period. After some cluster-configured number of votes \(currently 32\), the length of the lockout period reaches what's called _max lockout_. Until the max lockout is reached, the validator has the option to wait until the lockout period is over and then vote on another fork. When it votes on another fork, it performs an operation called _rollback_, whereby the state rolls back in time to a shared checkpoint and then jumps forward to the tip of the fork that it just voted on. The maximum distance that a fork may roll back is called the _rollback depth_. Rollback depth is the number of votes required to achieve max lockout. Whenever a validator votes, any checkpoints beyond the rollback depth become unreachable. That is, there is no scenario in which the validator will need to roll back beyond rollback depth. It therefore may safely _prune_ unreachable forks and _squash_ all checkpoints beyond rollback depth into the root checkpoint.
8
+
9
+ ## Active Forks
10
+
11
+ An active fork is as a sequence of checkpoints that has a length at least one longer than the rollback depth. The shortest fork will have a length exactly one longer than the rollback depth. For example:
12
+
13
+ ![Forks](/img/forks.svg)
14
+
15
+ The following sequences are _active forks_:
16
+
17
+ - {4, 2, 1}
18
+ - {5, 2, 1}
19
+ - {6, 3, 1}
20
+ - {7, 3, 1}
21
+
22
+ ## Pruning and Squashing
23
+
24
+ A validator may vote on any checkpoint in the tree. In the diagram above, that's every node except the leaves of the tree. After voting, the validator prunes nodes that fork from a distance farther than the rollback depth and then takes the opportunity to minimize its memory usage by squashing any nodes it can into the root.
25
+
26
+ Starting from the example above, with a rollback depth of 2, consider a vote on 5 versus a vote on 6. First, a vote on 5:
27
+
28
+ ![Forks after pruning](/img/forks-pruned.svg)
29
+
30
+ The new root is 2, and any active forks that are not descendants from 2 are pruned.
31
+
32
+ Alternatively, a vote on 6:
33
+
34
+ ![Forks](/img/forks-pruned2.svg)
35
+
36
+ The tree remains with a root of 1, since the active fork starting at 6 is only 2 checkpoints from the root.