solana-docs 0.0.0 → 1.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.

Potentially problematic release.


This version of solana-docs might be problematic. Click here for more details.

Files changed (925) hide show
  1. package/index.js +47 -0
  2. package/package.json +7 -45
  3. package/.eslintignore +0 -8
  4. package/.eslintrc +0 -21
  5. package/.prettierignore +0 -7
  6. package/.travis/before_install.sh +0 -9
  7. package/.travis/script.sh +0 -4
  8. package/README.md +0 -59
  9. package/art/data-plane-fanout.bob +0 -19
  10. package/art/data-plane-neighborhood.bob +0 -25
  11. package/art/data-plane-seeding.bob +0 -15
  12. package/art/data-plane.bob +0 -18
  13. package/art/fork-generation.bob +0 -13
  14. package/art/forks-pruned.bob +0 -9
  15. package/art/forks-pruned2.bob +0 -11
  16. package/art/forks.bob +0 -13
  17. package/art/passive-staking-callflow.msc +0 -30
  18. package/art/retransmit_stage.bob +0 -45
  19. package/art/runtime.bob +0 -10
  20. package/art/sdk-tools.bob +0 -20
  21. package/art/spv-bank-hash.bob +0 -19
  22. package/art/spv-block-merkle.bob +0 -19
  23. package/art/tpu.bob +0 -19
  24. package/art/tvu.bob +0 -37
  25. package/art/validator-proposal.bob +0 -60
  26. package/art/validator.bob +0 -30
  27. package/babel.config.js +0 -3
  28. package/build-cli-usage.sh +0 -42
  29. package/build.sh +0 -40
  30. package/convert-ascii-to-svg.sh +0 -21
  31. package/crowdin.yml +0 -16
  32. package/docusaurus.config.js +0 -161
  33. package/offline-cmd-md-links.sh +0 -11
  34. package/publish-docs.sh +0 -56
  35. package/set-solana-release-tag.sh +0 -20
  36. package/sidebars.js +0 -210
  37. package/src/cli/.usage.md.header +0 -59
  38. package/src/cli/choose-a-cluster.md +0 -43
  39. package/src/cli/conventions.md +0 -80
  40. package/src/cli/delegate-stake.md +0 -206
  41. package/src/cli/deploy-a-program.md +0 -302
  42. package/src/cli/install-solana-cli-tools.md +0 -164
  43. package/src/cli/transfer-tokens.md +0 -158
  44. package/src/cli.md +0 -22
  45. package/src/cluster/bench-tps.md +0 -129
  46. package/src/cluster/fork-generation.md +0 -64
  47. package/src/cluster/leader-rotation.md +0 -88
  48. package/src/cluster/managing-forks.md +0 -36
  49. package/src/cluster/overview.md +0 -39
  50. package/src/cluster/performance-metrics.md +0 -25
  51. package/src/cluster/rpc-endpoints.md +0 -50
  52. package/src/cluster/stake-delegation-and-rewards.md +0 -197
  53. package/src/cluster/synchronization.md +0 -28
  54. package/src/cluster/turbine-block-propagation.md +0 -101
  55. package/src/cluster/vote-signing.md +0 -59
  56. package/src/clusters.md +0 -173
  57. package/src/css/custom.css +0 -73
  58. package/src/developing/backwards-compatibility.md +0 -151
  59. package/src/developing/clients/javascript-api.md +0 -332
  60. package/src/developing/clients/javascript-reference.md +0 -750
  61. package/src/developing/clients/jsonrpc-api.md +0 -5173
  62. package/src/developing/clients/rust-api.md +0 -36
  63. package/src/developing/on-chain-programs/debugging.md +0 -110
  64. package/src/developing/on-chain-programs/deploying.md +0 -24
  65. package/src/developing/on-chain-programs/developing-c.md +0 -202
  66. package/src/developing/on-chain-programs/developing-rust.md +0 -406
  67. package/src/developing/on-chain-programs/examples.md +0 -61
  68. package/src/developing/on-chain-programs/faq.md +0 -81
  69. package/src/developing/on-chain-programs/overview.md +0 -218
  70. package/src/developing/plugins/accountsdb_plugin.md +0 -360
  71. package/src/developing/programming-model/accounts.md +0 -231
  72. package/src/developing/programming-model/calling-between-programs.md +0 -351
  73. package/src/developing/programming-model/overview.md +0 -17
  74. package/src/developing/programming-model/runtime.md +0 -131
  75. package/src/developing/programming-model/transactions.md +0 -210
  76. package/src/developing/runtime-facilities/programs.md +0 -168
  77. package/src/developing/runtime-facilities/sysvars.md +0 -142
  78. package/src/developing/test-validator.md +0 -153
  79. package/src/economics_overview.md +0 -20
  80. package/src/history.md +0 -60
  81. package/src/icons/Archivers.inline.svg +0 -11
  82. package/src/icons/Bulb.inline.svg +0 -13
  83. package/src/icons/Chat.inline.svg +0 -10
  84. package/src/icons/Clipboard.inline.svg +0 -13
  85. package/src/icons/Cloudbreak.inline.svg +0 -11
  86. package/src/icons/Code.inline.svg +0 -11
  87. package/src/icons/Fire.inline.svg +0 -10
  88. package/src/icons/Gamepad.inline.svg +0 -11
  89. package/src/icons/Globe.inline.svg +0 -1
  90. package/src/icons/Gulfstream.inline.svg +0 -11
  91. package/src/icons/History.inline.svg +0 -11
  92. package/src/icons/Money.inline.svg +0 -11
  93. package/src/icons/Pipeline.inline.svg +0 -15
  94. package/src/icons/PoH.inline.svg +0 -11
  95. package/src/icons/Sealevel.inline.svg +0 -11
  96. package/src/icons/Tools.inline.svg +0 -11
  97. package/src/icons/Tower.inline.svg +0 -11
  98. package/src/icons/Turbine.inline.svg +0 -12
  99. package/src/icons/duotone-icons/Clothes/Brassiere.svg +0 -10
  100. package/src/icons/duotone-icons/Clothes/Briefcase.svg +0 -11
  101. package/src/icons/duotone-icons/Clothes/Cap.svg +0 -11
  102. package/src/icons/duotone-icons/Clothes/Crown.svg +0 -11
  103. package/src/icons/duotone-icons/Clothes/Dress.svg +0 -11
  104. package/src/icons/duotone-icons/Clothes/Hanger.svg +0 -10
  105. package/src/icons/duotone-icons/Clothes/Hat.svg +0 -11
  106. package/src/icons/duotone-icons/Clothes/Panties.svg +0 -10
  107. package/src/icons/duotone-icons/Clothes/Shirt.svg +0 -11
  108. package/src/icons/duotone-icons/Clothes/Shoes.svg +0 -11
  109. package/src/icons/duotone-icons/Clothes/Shorts.svg +0 -10
  110. package/src/icons/duotone-icons/Clothes/Sneakers.svg +0 -11
  111. package/src/icons/duotone-icons/Clothes/Socks.svg +0 -11
  112. package/src/icons/duotone-icons/Clothes/Sun-glasses.svg +0 -11
  113. package/src/icons/duotone-icons/Clothes/T-Shirt.svg +0 -10
  114. package/src/icons/duotone-icons/Clothes/Tie.svg +0 -11
  115. package/src/icons/duotone-icons/Code/Backspace.svg +0 -11
  116. package/src/icons/duotone-icons/Code/CMD.svg +0 -10
  117. package/src/icons/duotone-icons/Code/Code.inline.svg +0 -11
  118. package/src/icons/duotone-icons/Code/Commit.svg +0 -11
  119. package/src/icons/duotone-icons/Code/Compiling.inline.svg +0 -11
  120. package/src/icons/duotone-icons/Code/Control.svg +0 -10
  121. package/src/icons/duotone-icons/Code/Done-circle.svg +0 -11
  122. package/src/icons/duotone-icons/Code/Error-circle.svg +0 -11
  123. package/src/icons/duotone-icons/Code/Git#1.svg +0 -12
  124. package/src/icons/duotone-icons/Code/Git#2.svg +0 -15
  125. package/src/icons/duotone-icons/Code/Git#3.svg +0 -13
  126. package/src/icons/duotone-icons/Code/Git#4.svg +0 -13
  127. package/src/icons/duotone-icons/Code/Github.svg +0 -11
  128. package/src/icons/duotone-icons/Code/Info-circle.svg +0 -12
  129. package/src/icons/duotone-icons/Code/Left-circle.svg +0 -11
  130. package/src/icons/duotone-icons/Code/Loading.svg +0 -12
  131. package/src/icons/duotone-icons/Code/Lock-circle.svg +0 -11
  132. package/src/icons/duotone-icons/Code/Lock-overturning.svg +0 -11
  133. package/src/icons/duotone-icons/Code/Minus.svg +0 -11
  134. package/src/icons/duotone-icons/Code/Option.svg +0 -11
  135. package/src/icons/duotone-icons/Code/Plus.svg +0 -11
  136. package/src/icons/duotone-icons/Code/Puzzle.svg +0 -10
  137. package/src/icons/duotone-icons/Code/Question-circle.svg +0 -11
  138. package/src/icons/duotone-icons/Code/Right-circle.svg +0 -11
  139. package/src/icons/duotone-icons/Code/Settings#4.svg +0 -11
  140. package/src/icons/duotone-icons/Code/Shift.svg +0 -10
  141. package/src/icons/duotone-icons/Code/Spy.svg +0 -11
  142. package/src/icons/duotone-icons/Code/Stop.svg +0 -10
  143. package/src/icons/duotone-icons/Code/Terminal.svg +0 -11
  144. package/src/icons/duotone-icons/Code/Thunder-circle.svg +0 -11
  145. package/src/icons/duotone-icons/Code/Time-schedule.svg +0 -11
  146. package/src/icons/duotone-icons/Code/Warning-1-circle.svg +0 -12
  147. package/src/icons/duotone-icons/Code/Warning-2.svg +0 -12
  148. package/src/icons/duotone-icons/Communication/Active-call.svg +0 -11
  149. package/src/icons/duotone-icons/Communication/Add-user.svg +0 -11
  150. package/src/icons/duotone-icons/Communication/Address-card.svg +0 -10
  151. package/src/icons/duotone-icons/Communication/Adress-book#1.svg +0 -11
  152. package/src/icons/duotone-icons/Communication/Adress-book#2.svg +0 -11
  153. package/src/icons/duotone-icons/Communication/Archive.svg +0 -10
  154. package/src/icons/duotone-icons/Communication/Call#1.svg +0 -10
  155. package/src/icons/duotone-icons/Communication/Call.svg +0 -10
  156. package/src/icons/duotone-icons/Communication/Chat#1.svg +0 -11
  157. package/src/icons/duotone-icons/Communication/Chat#2.svg +0 -11
  158. package/src/icons/duotone-icons/Communication/Chat#4.svg +0 -10
  159. package/src/icons/duotone-icons/Communication/Chat#5.svg +0 -11
  160. package/src/icons/duotone-icons/Communication/Chat#6.svg +0 -11
  161. package/src/icons/duotone-icons/Communication/Chat-check.svg +0 -11
  162. package/src/icons/duotone-icons/Communication/Chat-error.svg +0 -11
  163. package/src/icons/duotone-icons/Communication/Chat-locked.svg +0 -11
  164. package/src/icons/duotone-icons/Communication/Chat-smile.svg +0 -11
  165. package/src/icons/duotone-icons/Communication/Clipboard-check.svg +0 -12
  166. package/src/icons/duotone-icons/Communication/Clipboard-list.svg +0 -17
  167. package/src/icons/duotone-icons/Communication/Contact#1.svg +0 -11
  168. package/src/icons/duotone-icons/Communication/Delete-user.svg +0 -11
  169. package/src/icons/duotone-icons/Communication/Dial-numbers.svg +0 -18
  170. package/src/icons/duotone-icons/Communication/Flag.svg +0 -11
  171. package/src/icons/duotone-icons/Communication/Forward.svg +0 -10
  172. package/src/icons/duotone-icons/Communication/Group-chat.svg +0 -11
  173. package/src/icons/duotone-icons/Communication/Group.svg +0 -11
  174. package/src/icons/duotone-icons/Communication/Incoming-box.svg +0 -12
  175. package/src/icons/duotone-icons/Communication/Incoming-call.svg +0 -11
  176. package/src/icons/duotone-icons/Communication/Incoming-mail.svg +0 -11
  177. package/src/icons/duotone-icons/Communication/Mail-@.svg +0 -10
  178. package/src/icons/duotone-icons/Communication/Mail-attachment.svg +0 -11
  179. package/src/icons/duotone-icons/Communication/Mail-box.svg +0 -11
  180. package/src/icons/duotone-icons/Communication/Mail-error.svg +0 -11
  181. package/src/icons/duotone-icons/Communication/Mail-heart.svg +0 -11
  182. package/src/icons/duotone-icons/Communication/Mail-locked.svg +0 -11
  183. package/src/icons/duotone-icons/Communication/Mail-notification.svg +0 -11
  184. package/src/icons/duotone-icons/Communication/Mail-opened.svg +0 -11
  185. package/src/icons/duotone-icons/Communication/Mail-unocked.svg +0 -11
  186. package/src/icons/duotone-icons/Communication/Mail.svg +0 -10
  187. package/src/icons/duotone-icons/Communication/Missed-call.svg +0 -11
  188. package/src/icons/duotone-icons/Communication/Outgoing-box.svg +0 -12
  189. package/src/icons/duotone-icons/Communication/Outgoing-call.svg +0 -11
  190. package/src/icons/duotone-icons/Communication/Outgoing-mail.svg +0 -11
  191. package/src/icons/duotone-icons/Communication/RSS.svg +0 -12
  192. package/src/icons/duotone-icons/Communication/Readed-mail.svg +0 -11
  193. package/src/icons/duotone-icons/Communication/Reply-all.svg +0 -11
  194. package/src/icons/duotone-icons/Communication/Reply.svg +0 -10
  195. package/src/icons/duotone-icons/Communication/Right.svg +0 -10
  196. package/src/icons/duotone-icons/Communication/Safe-chat.svg +0 -11
  197. package/src/icons/duotone-icons/Communication/Send.svg +0 -10
  198. package/src/icons/duotone-icons/Communication/Sending mail.svg +0 -11
  199. package/src/icons/duotone-icons/Communication/Sending.svg +0 -11
  200. package/src/icons/duotone-icons/Communication/Share.svg +0 -11
  201. package/src/icons/duotone-icons/Communication/Shield-thunder.svg +0 -11
  202. package/src/icons/duotone-icons/Communication/Shield-user.svg +0 -12
  203. package/src/icons/duotone-icons/Communication/Snoozed-mail.svg +0 -11
  204. package/src/icons/duotone-icons/Communication/Spam.svg +0 -10
  205. package/src/icons/duotone-icons/Communication/Thumbtack.svg +0 -11
  206. package/src/icons/duotone-icons/Communication/Urgent-mail.svg +0 -11
  207. package/src/icons/duotone-icons/Communication/Write.svg +0 -11
  208. package/src/icons/duotone-icons/Cooking/Baking-glove.svg +0 -11
  209. package/src/icons/duotone-icons/Cooking/Bowl.svg +0 -11
  210. package/src/icons/duotone-icons/Cooking/Chef.svg +0 -11
  211. package/src/icons/duotone-icons/Cooking/Cooking-book.svg +0 -17
  212. package/src/icons/duotone-icons/Cooking/Cooking-pot.svg +0 -11
  213. package/src/icons/duotone-icons/Cooking/Cutting board.svg +0 -11
  214. package/src/icons/duotone-icons/Cooking/Dinner.svg +0 -14
  215. package/src/icons/duotone-icons/Cooking/Dish.svg +0 -11
  216. package/src/icons/duotone-icons/Cooking/Dishes.svg +0 -11
  217. package/src/icons/duotone-icons/Cooking/Fork-spoon-knife.svg +0 -15
  218. package/src/icons/duotone-icons/Cooking/Fork-spoon.svg +0 -13
  219. package/src/icons/duotone-icons/Cooking/Fork.svg +0 -11
  220. package/src/icons/duotone-icons/Cooking/Frying-pan.svg +0 -11
  221. package/src/icons/duotone-icons/Cooking/Grater.svg +0 -11
  222. package/src/icons/duotone-icons/Cooking/Kitchen-scale.svg +0 -11
  223. package/src/icons/duotone-icons/Cooking/Knife#1.svg +0 -11
  224. package/src/icons/duotone-icons/Cooking/Knife#2.svg +0 -11
  225. package/src/icons/duotone-icons/Cooking/Knife&fork#1.svg +0 -13
  226. package/src/icons/duotone-icons/Cooking/Knife&fork#2.svg +0 -13
  227. package/src/icons/duotone-icons/Cooking/Ladle.svg +0 -11
  228. package/src/icons/duotone-icons/Cooking/Rolling-pin.svg +0 -11
  229. package/src/icons/duotone-icons/Cooking/Saucepan.svg +0 -11
  230. package/src/icons/duotone-icons/Cooking/Shovel.svg +0 -11
  231. package/src/icons/duotone-icons/Cooking/Sieve.svg +0 -11
  232. package/src/icons/duotone-icons/Cooking/Spoon.svg +0 -12
  233. package/src/icons/duotone-icons/Design/Adjust.svg +0 -10
  234. package/src/icons/duotone-icons/Design/Anchor-center-down.svg +0 -14
  235. package/src/icons/duotone-icons/Design/Anchor-center-up.svg +0 -14
  236. package/src/icons/duotone-icons/Design/Anchor-center.svg +0 -11
  237. package/src/icons/duotone-icons/Design/Anchor-left-down.svg +0 -14
  238. package/src/icons/duotone-icons/Design/Anchor-left-up.svg +0 -14
  239. package/src/icons/duotone-icons/Design/Anchor-left.svg +0 -14
  240. package/src/icons/duotone-icons/Design/Anchor-right-down.svg +0 -14
  241. package/src/icons/duotone-icons/Design/Anchor-right-up.svg +0 -14
  242. package/src/icons/duotone-icons/Design/Anchor-right.svg +0 -14
  243. package/src/icons/duotone-icons/Design/Arrows.svg +0 -11
  244. package/src/icons/duotone-icons/Design/Bezier-curve.svg +0 -11
  245. package/src/icons/duotone-icons/Design/Border.svg +0 -10
  246. package/src/icons/duotone-icons/Design/Brush.svg +0 -11
  247. package/src/icons/duotone-icons/Design/Bucket.svg +0 -11
  248. package/src/icons/duotone-icons/Design/Cap-1.svg +0 -11
  249. package/src/icons/duotone-icons/Design/Cap-2.svg +0 -10
  250. package/src/icons/duotone-icons/Design/Cap-3.svg +0 -11
  251. package/src/icons/duotone-icons/Design/Circle.svg +0 -10
  252. package/src/icons/duotone-icons/Design/Color-profile.svg +0 -11
  253. package/src/icons/duotone-icons/Design/Color.svg +0 -10
  254. package/src/icons/duotone-icons/Design/Component.svg +0 -10
  255. package/src/icons/duotone-icons/Design/Crop.svg +0 -11
  256. package/src/icons/duotone-icons/Design/Difference.svg +0 -11
  257. package/src/icons/duotone-icons/Design/Edit.svg +0 -11
  258. package/src/icons/duotone-icons/Design/Eraser.svg +0 -10
  259. package/src/icons/duotone-icons/Design/Flatten.svg +0 -11
  260. package/src/icons/duotone-icons/Design/Flip-horizontal.svg +0 -12
  261. package/src/icons/duotone-icons/Design/Flip-vertical.svg +0 -12
  262. package/src/icons/duotone-icons/Design/Horizontal.svg +0 -11
  263. package/src/icons/duotone-icons/Design/Image.svg +0 -10
  264. package/src/icons/duotone-icons/Design/Interselect.svg +0 -11
  265. package/src/icons/duotone-icons/Design/Join-1.svg +0 -11
  266. package/src/icons/duotone-icons/Design/Join-2.svg +0 -11
  267. package/src/icons/duotone-icons/Design/Join-3.svg +0 -11
  268. package/src/icons/duotone-icons/Design/Layers.svg +0 -11
  269. package/src/icons/duotone-icons/Design/Line.svg +0 -12
  270. package/src/icons/duotone-icons/Design/Magic.svg +0 -11
  271. package/src/icons/duotone-icons/Design/Mask.svg +0 -11
  272. package/src/icons/duotone-icons/Design/Patch.svg +0 -12
  273. package/src/icons/duotone-icons/Design/Pen&ruller.svg +0 -11
  274. package/src/icons/duotone-icons/Design/Pen-tool-vector.svg +0 -11
  275. package/src/icons/duotone-icons/Design/Pencil.svg +0 -11
  276. package/src/icons/duotone-icons/Design/Picker.svg +0 -11
  277. package/src/icons/duotone-icons/Design/Pixels.svg +0 -15
  278. package/src/icons/duotone-icons/Design/Polygon.svg +0 -10
  279. package/src/icons/duotone-icons/Design/Position.svg +0 -10
  280. package/src/icons/duotone-icons/Design/Rectangle.svg +0 -10
  281. package/src/icons/duotone-icons/Design/Saturation.svg +0 -11
  282. package/src/icons/duotone-icons/Design/Select.svg +0 -11
  283. package/src/icons/duotone-icons/Design/Sketch.svg +0 -11
  284. package/src/icons/duotone-icons/Design/Stamp.svg +0 -11
  285. package/src/icons/duotone-icons/Design/Substract.svg +0 -11
  286. package/src/icons/duotone-icons/Design/Target.svg +0 -11
  287. package/src/icons/duotone-icons/Design/Triangle.svg +0 -10
  288. package/src/icons/duotone-icons/Design/Union.svg +0 -10
  289. package/src/icons/duotone-icons/Design/Vertical.svg +0 -11
  290. package/src/icons/duotone-icons/Design/Zoom minus.svg +0 -12
  291. package/src/icons/duotone-icons/Design/Zoom plus.svg +0 -12
  292. package/src/icons/duotone-icons/Devices/Airpods.svg +0 -13
  293. package/src/icons/duotone-icons/Devices/Android.svg +0 -11
  294. package/src/icons/duotone-icons/Devices/Apple-Watch.svg +0 -11
  295. package/src/icons/duotone-icons/Devices/Battery-charging.svg +0 -12
  296. package/src/icons/duotone-icons/Devices/Battery-empty.svg +0 -11
  297. package/src/icons/duotone-icons/Devices/Battery-full.svg +0 -11
  298. package/src/icons/duotone-icons/Devices/Battery-half.svg +0 -11
  299. package/src/icons/duotone-icons/Devices/Bluetooth.svg +0 -11
  300. package/src/icons/duotone-icons/Devices/CPU#1.svg +0 -17
  301. package/src/icons/duotone-icons/Devices/CPU#2.svg +0 -23
  302. package/src/icons/duotone-icons/Devices/Camera.svg +0 -12
  303. package/src/icons/duotone-icons/Devices/Cardboard-vr.svg +0 -11
  304. package/src/icons/duotone-icons/Devices/Cassete.svg +0 -12
  305. package/src/icons/duotone-icons/Devices/Diagnostics.svg +0 -12
  306. package/src/icons/duotone-icons/Devices/Display#1.svg +0 -11
  307. package/src/icons/duotone-icons/Devices/Display#2.svg +0 -12
  308. package/src/icons/duotone-icons/Devices/Display#3.svg +0 -12
  309. package/src/icons/duotone-icons/Devices/Gameboy.svg +0 -11
  310. package/src/icons/duotone-icons/Devices/Gamepad#1.svg +0 -11
  311. package/src/icons/duotone-icons/Devices/Gamepad#2.svg +0 -11
  312. package/src/icons/duotone-icons/Devices/Generator.svg +0 -13
  313. package/src/icons/duotone-icons/Devices/Hard-drive.svg +0 -11
  314. package/src/icons/duotone-icons/Devices/Headphones.svg +0 -11
  315. package/src/icons/duotone-icons/Devices/Homepod.svg +0 -11
  316. package/src/icons/duotone-icons/Devices/Keyboard.svg +0 -11
  317. package/src/icons/duotone-icons/Devices/LTE#1.svg +0 -11
  318. package/src/icons/duotone-icons/Devices/LTE#2.svg +0 -11
  319. package/src/icons/duotone-icons/Devices/Laptop-macbook.svg +0 -11
  320. package/src/icons/duotone-icons/Devices/Laptop.svg +0 -11
  321. package/src/icons/duotone-icons/Devices/Mic.svg +0 -11
  322. package/src/icons/duotone-icons/Devices/Midi.svg +0 -16
  323. package/src/icons/duotone-icons/Devices/Mouse.svg +0 -12
  324. package/src/icons/duotone-icons/Devices/Phone.svg +0 -12
  325. package/src/icons/duotone-icons/Devices/Printer.svg +0 -11
  326. package/src/icons/duotone-icons/Devices/Radio.svg +0 -14
  327. package/src/icons/duotone-icons/Devices/Router#1.svg +0 -11
  328. package/src/icons/duotone-icons/Devices/Router#2.svg +0 -11
  329. package/src/icons/duotone-icons/Devices/SD-card.svg +0 -10
  330. package/src/icons/duotone-icons/Devices/Server.svg +0 -12
  331. package/src/icons/duotone-icons/Devices/Speaker.svg +0 -11
  332. package/src/icons/duotone-icons/Devices/TV#1.svg +0 -12
  333. package/src/icons/duotone-icons/Devices/TV#2.svg +0 -11
  334. package/src/icons/duotone-icons/Devices/Tablet.svg +0 -11
  335. package/src/icons/duotone-icons/Devices/USB.svg +0 -12
  336. package/src/icons/duotone-icons/Devices/Usb-storage.svg +0 -11
  337. package/src/icons/duotone-icons/Devices/Video-camera.svg +0 -11
  338. package/src/icons/duotone-icons/Devices/Watch#1.svg +0 -13
  339. package/src/icons/duotone-icons/Devices/Watch#2.svg +0 -13
  340. package/src/icons/duotone-icons/Devices/Wi-fi.svg +0 -11
  341. package/src/icons/duotone-icons/Devices/iMac.svg +0 -12
  342. package/src/icons/duotone-icons/Devices/iPhone-X.svg +0 -11
  343. package/src/icons/duotone-icons/Devices/iPhone-back.svg +0 -10
  344. package/src/icons/duotone-icons/Devices/iPhone-x-back.svg +0 -10
  345. package/src/icons/duotone-icons/Electric/Air-conditioning.svg +0 -11
  346. package/src/icons/duotone-icons/Electric/Blender.svg +0 -10
  347. package/src/icons/duotone-icons/Electric/Fan.svg +0 -12
  348. package/src/icons/duotone-icons/Electric/Fridge.svg +0 -10
  349. package/src/icons/duotone-icons/Electric/Gas-stove.svg +0 -11
  350. package/src/icons/duotone-icons/Electric/Hair-dryer.svg +0 -11
  351. package/src/icons/duotone-icons/Electric/Highvoltage.svg +0 -10
  352. package/src/icons/duotone-icons/Electric/Iron.svg +0 -11
  353. package/src/icons/duotone-icons/Electric/Kettle.svg +0 -11
  354. package/src/icons/duotone-icons/Electric/Mixer.svg +0 -11
  355. package/src/icons/duotone-icons/Electric/Outlet.svg +0 -11
  356. package/src/icons/duotone-icons/Electric/Range-hood.svg +0 -11
  357. package/src/icons/duotone-icons/Electric/Shutdown.svg +0 -11
  358. package/src/icons/duotone-icons/Electric/Socket-eu.svg +0 -10
  359. package/src/icons/duotone-icons/Electric/Socket-us.svg +0 -10
  360. package/src/icons/duotone-icons/Electric/Washer.svg +0 -11
  361. package/src/icons/duotone-icons/Files/Cloud-download.svg +0 -11
  362. package/src/icons/duotone-icons/Files/Cloud-upload.svg +0 -11
  363. package/src/icons/duotone-icons/Files/Compilation.svg +0 -14
  364. package/src/icons/duotone-icons/Files/Compiled-file.svg +0 -14
  365. package/src/icons/duotone-icons/Files/Deleted-file.svg +0 -11
  366. package/src/icons/duotone-icons/Files/Deleted-folder.svg +0 -11
  367. package/src/icons/duotone-icons/Files/Download.inline.svg +0 -12
  368. package/src/icons/duotone-icons/Files/Downloaded file.svg +0 -11
  369. package/src/icons/duotone-icons/Files/Downloads-folder.svg +0 -11
  370. package/src/icons/duotone-icons/Files/Export.svg +0 -12
  371. package/src/icons/duotone-icons/Files/File-cloud.svg +0 -11
  372. package/src/icons/duotone-icons/Files/File-done.svg +0 -11
  373. package/src/icons/duotone-icons/Files/File-minus.svg +0 -11
  374. package/src/icons/duotone-icons/Files/File-plus.svg +0 -11
  375. package/src/icons/duotone-icons/Files/File.svg +0 -12
  376. package/src/icons/duotone-icons/Files/Folder-check.svg +0 -11
  377. package/src/icons/duotone-icons/Files/Folder-cloud.svg +0 -11
  378. package/src/icons/duotone-icons/Files/Folder-error.svg +0 -11
  379. package/src/icons/duotone-icons/Files/Folder-heart.svg +0 -11
  380. package/src/icons/duotone-icons/Files/Folder-minus.svg +0 -11
  381. package/src/icons/duotone-icons/Files/Folder-plus.svg +0 -11
  382. package/src/icons/duotone-icons/Files/Folder-solid.svg +0 -10
  383. package/src/icons/duotone-icons/Files/Folder-star.svg +0 -11
  384. package/src/icons/duotone-icons/Files/Folder-thunder.svg +0 -11
  385. package/src/icons/duotone-icons/Files/Folder.svg +0 -10
  386. package/src/icons/duotone-icons/Files/Group-folders.svg +0 -11
  387. package/src/icons/duotone-icons/Files/Import.svg +0 -12
  388. package/src/icons/duotone-icons/Files/Locked-folder.svg +0 -11
  389. package/src/icons/duotone-icons/Files/Media-folder.svg +0 -11
  390. package/src/icons/duotone-icons/Files/Media.svg +0 -11
  391. package/src/icons/duotone-icons/Files/Music.svg +0 -11
  392. package/src/icons/duotone-icons/Files/Pictures#1.svg +0 -13
  393. package/src/icons/duotone-icons/Files/Pictures#2.svg +0 -15
  394. package/src/icons/duotone-icons/Files/Protected-file.svg +0 -11
  395. package/src/icons/duotone-icons/Files/Selected-file.svg +0 -11
  396. package/src/icons/duotone-icons/Files/Share.svg +0 -13
  397. package/src/icons/duotone-icons/Files/Upload-folder.svg +0 -11
  398. package/src/icons/duotone-icons/Files/Upload.svg +0 -12
  399. package/src/icons/duotone-icons/Files/Uploaded-file.svg +0 -11
  400. package/src/icons/duotone-icons/Files/User-folder.svg +0 -12
  401. package/src/icons/duotone-icons/Food/Beer.svg +0 -14
  402. package/src/icons/duotone-icons/Food/Bottle#1.svg +0 -11
  403. package/src/icons/duotone-icons/Food/Bottle#2.svg +0 -11
  404. package/src/icons/duotone-icons/Food/Bread.svg +0 -11
  405. package/src/icons/duotone-icons/Food/Bucket.svg +0 -11
  406. package/src/icons/duotone-icons/Food/Burger.svg +0 -12
  407. package/src/icons/duotone-icons/Food/Cake.svg +0 -12
  408. package/src/icons/duotone-icons/Food/Carrot.svg +0 -13
  409. package/src/icons/duotone-icons/Food/Cheese.svg +0 -11
  410. package/src/icons/duotone-icons/Food/Chicken.svg +0 -13
  411. package/src/icons/duotone-icons/Food/Coffee#1.svg +0 -14
  412. package/src/icons/duotone-icons/Food/Coffee#2.svg +0 -12
  413. package/src/icons/duotone-icons/Food/Cookie.svg +0 -13
  414. package/src/icons/duotone-icons/Food/Dinner.svg +0 -11
  415. package/src/icons/duotone-icons/Food/Fish.svg +0 -11
  416. package/src/icons/duotone-icons/Food/French Bread.svg +0 -10
  417. package/src/icons/duotone-icons/Food/Glass-martini.svg +0 -11
  418. package/src/icons/duotone-icons/Food/Ice-cream#1.svg +0 -11
  419. package/src/icons/duotone-icons/Food/Ice-cream#2.svg +0 -11
  420. package/src/icons/duotone-icons/Food/Miso-soup.svg +0 -11
  421. package/src/icons/duotone-icons/Food/Orange.svg +0 -11
  422. package/src/icons/duotone-icons/Food/Pizza.svg +0 -13
  423. package/src/icons/duotone-icons/Food/Sushi.svg +0 -11
  424. package/src/icons/duotone-icons/Food/Two-bottles.svg +0 -11
  425. package/src/icons/duotone-icons/Food/Wine.svg +0 -11
  426. package/src/icons/duotone-icons/General/Attachment#1.svg +0 -11
  427. package/src/icons/duotone-icons/General/Attachment#2.svg +0 -13
  428. package/src/icons/duotone-icons/General/Binocular.svg +0 -10
  429. package/src/icons/duotone-icons/General/Bookmark.svg +0 -10
  430. package/src/icons/duotone-icons/General/Clip.svg +0 -10
  431. package/src/icons/duotone-icons/General/Clipboard.svg +0 -13
  432. package/src/icons/duotone-icons/General/Cursor.svg +0 -10
  433. package/src/icons/duotone-icons/General/Dislike.svg +0 -11
  434. package/src/icons/duotone-icons/General/Duplicate.svg +0 -11
  435. package/src/icons/duotone-icons/General/Edit.svg +0 -10
  436. package/src/icons/duotone-icons/General/Expand-arrows.svg +0 -11
  437. package/src/icons/duotone-icons/General/Fire.svg +0 -10
  438. package/src/icons/duotone-icons/General/Folder.svg +0 -10
  439. package/src/icons/duotone-icons/General/Half-heart.svg +0 -11
  440. package/src/icons/duotone-icons/General/Half-star.svg +0 -11
  441. package/src/icons/duotone-icons/General/Heart.svg +0 -10
  442. package/src/icons/duotone-icons/General/Hidden.svg +0 -12
  443. package/src/icons/duotone-icons/General/Like.svg +0 -11
  444. package/src/icons/duotone-icons/General/Lock.svg +0 -16
  445. package/src/icons/duotone-icons/General/Notification#2.svg +0 -11
  446. package/src/icons/duotone-icons/General/Notifications#1.svg +0 -10
  447. package/src/icons/duotone-icons/General/Other#1.svg +0 -12
  448. package/src/icons/duotone-icons/General/Other#2.svg +0 -12
  449. package/src/icons/duotone-icons/General/Sad.svg +0 -11
  450. package/src/icons/duotone-icons/General/Save.svg +0 -11
  451. package/src/icons/duotone-icons/General/Scale.svg +0 -11
  452. package/src/icons/duotone-icons/General/Scissors.svg +0 -11
  453. package/src/icons/duotone-icons/General/Search.svg +0 -11
  454. package/src/icons/duotone-icons/General/Settings#3.svg +0 -11
  455. package/src/icons/duotone-icons/General/Settings-1.inline.svg +0 -11
  456. package/src/icons/duotone-icons/General/Settings-2.svg +0 -10
  457. package/src/icons/duotone-icons/General/Shield-check.svg +0 -11
  458. package/src/icons/duotone-icons/General/Shield-disabled.svg +0 -11
  459. package/src/icons/duotone-icons/General/Shield-protected.svg +0 -11
  460. package/src/icons/duotone-icons/General/Size.svg +0 -11
  461. package/src/icons/duotone-icons/General/Smile.svg +0 -11
  462. package/src/icons/duotone-icons/General/Star.svg +0 -10
  463. package/src/icons/duotone-icons/General/Thunder-move.svg +0 -11
  464. package/src/icons/duotone-icons/General/Thunder.svg +0 -10
  465. package/src/icons/duotone-icons/General/Trash.svg +0 -11
  466. package/src/icons/duotone-icons/General/Unlock.svg +0 -16
  467. package/src/icons/duotone-icons/General/Update.svg +0 -10
  468. package/src/icons/duotone-icons/General/User.svg +0 -11
  469. package/src/icons/duotone-icons/General/Visible.svg +0 -11
  470. package/src/icons/duotone-icons/Home/Air-ballon.svg +0 -11
  471. package/src/icons/duotone-icons/Home/Alarm-clock.svg +0 -12
  472. package/src/icons/duotone-icons/Home/Armchair.svg +0 -11
  473. package/src/icons/duotone-icons/Home/Bag-chair.svg +0 -11
  474. package/src/icons/duotone-icons/Home/Bath.svg +0 -11
  475. package/src/icons/duotone-icons/Home/Bed.svg +0 -12
  476. package/src/icons/duotone-icons/Home/Book-open.svg +0 -11
  477. package/src/icons/duotone-icons/Home/Book.svg +0 -16
  478. package/src/icons/duotone-icons/Home/Box.svg +0 -11
  479. package/src/icons/duotone-icons/Home/Broom.svg +0 -11
  480. package/src/icons/duotone-icons/Home/Building.svg +0 -12
  481. package/src/icons/duotone-icons/Home/Bulb#1.svg +0 -13
  482. package/src/icons/duotone-icons/Home/Bulb#2.svg +0 -13
  483. package/src/icons/duotone-icons/Home/Chair#1.svg +0 -11
  484. package/src/icons/duotone-icons/Home/Chair#2.svg +0 -11
  485. package/src/icons/duotone-icons/Home/Clock.svg +0 -11
  486. package/src/icons/duotone-icons/Home/Commode#1.svg +0 -11
  487. package/src/icons/duotone-icons/Home/Commode#2.svg +0 -11
  488. package/src/icons/duotone-icons/Home/Couch.svg +0 -11
  489. package/src/icons/duotone-icons/Home/Cupboard.svg +0 -11
  490. package/src/icons/duotone-icons/Home/Curtains.svg +0 -11
  491. package/src/icons/duotone-icons/Home/Deer.svg +0 -11
  492. package/src/icons/duotone-icons/Home/Door-open.svg +0 -11
  493. package/src/icons/duotone-icons/Home/Earth.svg +0 -11
  494. package/src/icons/duotone-icons/Home/Fireplace.svg +0 -11
  495. package/src/icons/duotone-icons/Home/Flashlight.svg +0 -11
  496. package/src/icons/duotone-icons/Home/Flower#1.svg +0 -13
  497. package/src/icons/duotone-icons/Home/Flower#2.svg +0 -14
  498. package/src/icons/duotone-icons/Home/Flower#3.svg +0 -12
  499. package/src/icons/duotone-icons/Home/Globe.svg +0 -11
  500. package/src/icons/duotone-icons/Home/Home-heart.svg +0 -11
  501. package/src/icons/duotone-icons/Home/Home.svg +0 -10
  502. package/src/icons/duotone-icons/Home/Key.svg +0 -11
  503. package/src/icons/duotone-icons/Home/Ladder.svg +0 -11
  504. package/src/icons/duotone-icons/Home/Lamp#1.svg +0 -13
  505. package/src/icons/duotone-icons/Home/Lamp#2.svg +0 -12
  506. package/src/icons/duotone-icons/Home/Library.svg +0 -11
  507. package/src/icons/duotone-icons/Home/Mailbox.svg +0 -11
  508. package/src/icons/duotone-icons/Home/Mirror.svg +0 -11
  509. package/src/icons/duotone-icons/Home/Picture.svg +0 -13
  510. package/src/icons/duotone-icons/Home/Ruller.svg +0 -10
  511. package/src/icons/duotone-icons/Home/Stairs.svg +0 -10
  512. package/src/icons/duotone-icons/Home/Timer.svg +0 -13
  513. package/src/icons/duotone-icons/Home/Toilet.svg +0 -11
  514. package/src/icons/duotone-icons/Home/Towel.svg +0 -10
  515. package/src/icons/duotone-icons/Home/Trash.svg +0 -11
  516. package/src/icons/duotone-icons/Home/Water-mixer.svg +0 -12
  517. package/src/icons/duotone-icons/Home/Weight#1.svg +0 -11
  518. package/src/icons/duotone-icons/Home/Weight#2.svg +0 -11
  519. package/src/icons/duotone-icons/Home/Wood#1.svg +0 -11
  520. package/src/icons/duotone-icons/Home/Wood#2.svg +0 -11
  521. package/src/icons/duotone-icons/Home/Wood-horse.svg +0 -10
  522. package/src/icons/duotone-icons/Layout/Layout-3d.svg +0 -11
  523. package/src/icons/duotone-icons/Layout/Layout-4-blocks.svg +0 -11
  524. package/src/icons/duotone-icons/Layout/Layout-arrange.inline.svg +0 -11
  525. package/src/icons/duotone-icons/Layout/Layout-grid.svg +0 -11
  526. package/src/icons/duotone-icons/Layout/Layout-horizontal.svg +0 -11
  527. package/src/icons/duotone-icons/Layout/Layout-left-panel-1.svg +0 -11
  528. package/src/icons/duotone-icons/Layout/Layout-left-panel-2.svg +0 -11
  529. package/src/icons/duotone-icons/Layout/Layout-right-panel-1.svg +0 -11
  530. package/src/icons/duotone-icons/Layout/Layout-right-panel-2.svg +0 -11
  531. package/src/icons/duotone-icons/Layout/Layout-top-panel-1.svg +0 -11
  532. package/src/icons/duotone-icons/Layout/Layout-top-panel-2.svg +0 -11
  533. package/src/icons/duotone-icons/Layout/Layout-top-panel-3.svg +0 -11
  534. package/src/icons/duotone-icons/Layout/Layout-top-panel-4.svg +0 -11
  535. package/src/icons/duotone-icons/Layout/Layout-top-panel-5.svg +0 -11
  536. package/src/icons/duotone-icons/Layout/Layout-top-panel-6.svg +0 -11
  537. package/src/icons/duotone-icons/Layout/Layout-vertical.svg +0 -11
  538. package/src/icons/duotone-icons/Map/Compass.svg +0 -10
  539. package/src/icons/duotone-icons/Map/Direction#1.svg +0 -10
  540. package/src/icons/duotone-icons/Map/Direction#2.svg +0 -10
  541. package/src/icons/duotone-icons/Map/Location-arrow.svg +0 -10
  542. package/src/icons/duotone-icons/Map/Marker#1.svg +0 -10
  543. package/src/icons/duotone-icons/Map/Marker#2.svg +0 -10
  544. package/src/icons/duotone-icons/Map/Position.svg +0 -12
  545. package/src/icons/duotone-icons/Media/Add-music.svg +0 -11
  546. package/src/icons/duotone-icons/Media/Airplay-video.svg +0 -11
  547. package/src/icons/duotone-icons/Media/Airplay.svg +0 -11
  548. package/src/icons/duotone-icons/Media/Back.svg +0 -11
  549. package/src/icons/duotone-icons/Media/Backward.svg +0 -11
  550. package/src/icons/duotone-icons/Media/CD.svg +0 -11
  551. package/src/icons/duotone-icons/Media/DVD.svg +0 -11
  552. package/src/icons/duotone-icons/Media/Eject.svg +0 -11
  553. package/src/icons/duotone-icons/Media/Equalizer.svg +0 -13
  554. package/src/icons/duotone-icons/Media/Forward.svg +0 -11
  555. package/src/icons/duotone-icons/Media/Media-library#1.svg +0 -13
  556. package/src/icons/duotone-icons/Media/Media-library#2.svg +0 -11
  557. package/src/icons/duotone-icons/Media/Media-library#3.svg +0 -17
  558. package/src/icons/duotone-icons/Media/Movie-Lane #2.svg +0 -11
  559. package/src/icons/duotone-icons/Media/Movie-lane#1.svg +0 -11
  560. package/src/icons/duotone-icons/Media/Music-cloud.svg +0 -11
  561. package/src/icons/duotone-icons/Media/Music-note.svg +0 -10
  562. package/src/icons/duotone-icons/Media/Music.svg +0 -10
  563. package/src/icons/duotone-icons/Media/Mute.svg +0 -11
  564. package/src/icons/duotone-icons/Media/Next.svg +0 -11
  565. package/src/icons/duotone-icons/Media/Pause.svg +0 -10
  566. package/src/icons/duotone-icons/Media/Play.svg +0 -10
  567. package/src/icons/duotone-icons/Media/Playlist#1.svg +0 -11
  568. package/src/icons/duotone-icons/Media/Playlist#2.svg +0 -11
  569. package/src/icons/duotone-icons/Media/Rec.svg +0 -10
  570. package/src/icons/duotone-icons/Media/Repeat-one.svg +0 -11
  571. package/src/icons/duotone-icons/Media/Repeat.svg +0 -11
  572. package/src/icons/duotone-icons/Media/Shuffle.svg +0 -11
  573. package/src/icons/duotone-icons/Media/Volume-down.svg +0 -11
  574. package/src/icons/duotone-icons/Media/Volume-full.svg +0 -11
  575. package/src/icons/duotone-icons/Media/Volume-half.svg +0 -11
  576. package/src/icons/duotone-icons/Media/Volume-up.svg +0 -11
  577. package/src/icons/duotone-icons/Media/Vynil.svg +0 -11
  578. package/src/icons/duotone-icons/Media/Youtube.svg +0 -11
  579. package/src/icons/duotone-icons/Navigation/Angle-double-down.svg +0 -11
  580. package/src/icons/duotone-icons/Navigation/Angle-double-left.svg +0 -11
  581. package/src/icons/duotone-icons/Navigation/Angle-double-right.svg +0 -11
  582. package/src/icons/duotone-icons/Navigation/Angle-double-up.svg +0 -11
  583. package/src/icons/duotone-icons/Navigation/Angle-down.svg +0 -10
  584. package/src/icons/duotone-icons/Navigation/Angle-left.svg +0 -10
  585. package/src/icons/duotone-icons/Navigation/Angle-right.svg +0 -10
  586. package/src/icons/duotone-icons/Navigation/Angle-up.svg +0 -10
  587. package/src/icons/duotone-icons/Navigation/Arrow-down.svg +0 -11
  588. package/src/icons/duotone-icons/Navigation/Arrow-from-bottom.svg +0 -12
  589. package/src/icons/duotone-icons/Navigation/Arrow-from-left.svg +0 -12
  590. package/src/icons/duotone-icons/Navigation/Arrow-from-right.svg +0 -12
  591. package/src/icons/duotone-icons/Navigation/Arrow-from-top.svg +0 -12
  592. package/src/icons/duotone-icons/Navigation/Arrow-left.svg +0 -11
  593. package/src/icons/duotone-icons/Navigation/Arrow-right.svg +0 -11
  594. package/src/icons/duotone-icons/Navigation/Arrow-to-bottom.svg +0 -12
  595. package/src/icons/duotone-icons/Navigation/Arrow-to-left.svg +0 -12
  596. package/src/icons/duotone-icons/Navigation/Arrow-to-right.svg +0 -12
  597. package/src/icons/duotone-icons/Navigation/Arrow-to-up.svg +0 -12
  598. package/src/icons/duotone-icons/Navigation/Arrow-up.svg +0 -11
  599. package/src/icons/duotone-icons/Navigation/Arrows-h.svg +0 -12
  600. package/src/icons/duotone-icons/Navigation/Arrows-v.svg +0 -12
  601. package/src/icons/duotone-icons/Navigation/Check.svg +0 -10
  602. package/src/icons/duotone-icons/Navigation/Close.svg +0 -12
  603. package/src/icons/duotone-icons/Navigation/Double-check.svg +0 -11
  604. package/src/icons/duotone-icons/Navigation/Down-2.svg +0 -11
  605. package/src/icons/duotone-icons/Navigation/Down-left.svg +0 -11
  606. package/src/icons/duotone-icons/Navigation/Down-right.svg +0 -11
  607. package/src/icons/duotone-icons/Navigation/Exchange.svg +0 -13
  608. package/src/icons/duotone-icons/Navigation/Left 3.svg +0 -11
  609. package/src/icons/duotone-icons/Navigation/Left-2.svg +0 -11
  610. package/src/icons/duotone-icons/Navigation/Minus.svg +0 -9
  611. package/src/icons/duotone-icons/Navigation/Plus.svg +0 -10
  612. package/src/icons/duotone-icons/Navigation/Right 3.svg +0 -11
  613. package/src/icons/duotone-icons/Navigation/Right-2.svg +0 -11
  614. package/src/icons/duotone-icons/Navigation/Route.svg +0 -12
  615. package/src/icons/duotone-icons/Navigation/Sign-in.svg +0 -12
  616. package/src/icons/duotone-icons/Navigation/Sign-out.svg +0 -12
  617. package/src/icons/duotone-icons/Navigation/Up-2.svg +0 -11
  618. package/src/icons/duotone-icons/Navigation/Up-down.svg +0 -13
  619. package/src/icons/duotone-icons/Navigation/Up-left.svg +0 -11
  620. package/src/icons/duotone-icons/Navigation/Up-right.svg +0 -11
  621. package/src/icons/duotone-icons/Navigation/Waiting.svg +0 -10
  622. package/src/icons/duotone-icons/Shopping/ATM.svg +0 -11
  623. package/src/icons/duotone-icons/Shopping/Bag#1.svg +0 -11
  624. package/src/icons/duotone-icons/Shopping/Bag#2.svg +0 -11
  625. package/src/icons/duotone-icons/Shopping/Barcode-read.svg +0 -11
  626. package/src/icons/duotone-icons/Shopping/Barcode-scan.svg +0 -12
  627. package/src/icons/duotone-icons/Shopping/Barcode.svg +0 -11
  628. package/src/icons/duotone-icons/Shopping/Bitcoin.svg +0 -12
  629. package/src/icons/duotone-icons/Shopping/Box#1.svg +0 -11
  630. package/src/icons/duotone-icons/Shopping/Box#3.svg +0 -11
  631. package/src/icons/duotone-icons/Shopping/Box2.inline.svg +0 -11
  632. package/src/icons/duotone-icons/Shopping/Calculator.svg +0 -11
  633. package/src/icons/duotone-icons/Shopping/Cart#1.svg +0 -11
  634. package/src/icons/duotone-icons/Shopping/Cart#2.svg +0 -11
  635. package/src/icons/duotone-icons/Shopping/Cart#3.svg +0 -11
  636. package/src/icons/duotone-icons/Shopping/Chart-bar#1.svg +0 -13
  637. package/src/icons/duotone-icons/Shopping/Chart-bar#2.svg +0 -13
  638. package/src/icons/duotone-icons/Shopping/Chart-bar#3.svg +0 -13
  639. package/src/icons/duotone-icons/Shopping/Chart-line#1.svg +0 -11
  640. package/src/icons/duotone-icons/Shopping/Chart-line#2.svg +0 -11
  641. package/src/icons/duotone-icons/Shopping/Chart-pie.svg +0 -11
  642. package/src/icons/duotone-icons/Shopping/Credit-card.svg +0 -12
  643. package/src/icons/duotone-icons/Shopping/Dollar.svg +0 -12
  644. package/src/icons/duotone-icons/Shopping/Euro.svg +0 -11
  645. package/src/icons/duotone-icons/Shopping/Gift.svg +0 -11
  646. package/src/icons/duotone-icons/Shopping/Loader.svg +0 -12
  647. package/src/icons/duotone-icons/Shopping/MC.svg +0 -11
  648. package/src/icons/duotone-icons/Shopping/Money.svg +0 -11
  649. package/src/icons/duotone-icons/Shopping/Pound.svg +0 -11
  650. package/src/icons/duotone-icons/Shopping/Price #1.svg +0 -10
  651. package/src/icons/duotone-icons/Shopping/Price #2.svg +0 -14
  652. package/src/icons/duotone-icons/Shopping/Rouble.svg +0 -11
  653. package/src/icons/duotone-icons/Shopping/Safe.svg +0 -11
  654. package/src/icons/duotone-icons/Shopping/Sale#1.svg +0 -11
  655. package/src/icons/duotone-icons/Shopping/Sale#2.svg +0 -13
  656. package/src/icons/duotone-icons/Shopping/Settings.svg +0 -11
  657. package/src/icons/duotone-icons/Shopping/Sort#1.svg +0 -11
  658. package/src/icons/duotone-icons/Shopping/Sort#2.svg +0 -10
  659. package/src/icons/duotone-icons/Shopping/Sort#3.svg +0 -10
  660. package/src/icons/duotone-icons/Shopping/Ticket.svg +0 -10
  661. package/src/icons/duotone-icons/Shopping/Wallet#2.svg +0 -11
  662. package/src/icons/duotone-icons/Shopping/Wallet#3.svg +0 -12
  663. package/src/icons/duotone-icons/Shopping/Wallet.svg +0 -12
  664. package/src/icons/duotone-icons/Text/Align-auto.svg +0 -11
  665. package/src/icons/duotone-icons/Text/Align-center.svg +0 -11
  666. package/src/icons/duotone-icons/Text/Align-justify.svg +0 -11
  667. package/src/icons/duotone-icons/Text/Align-left.svg +0 -12
  668. package/src/icons/duotone-icons/Text/Align-right.svg +0 -11
  669. package/src/icons/duotone-icons/Text/Article.svg +0 -11
  670. package/src/icons/duotone-icons/Text/Bold.svg +0 -10
  671. package/src/icons/duotone-icons/Text/Bullet-list.svg +0 -11
  672. package/src/icons/duotone-icons/Text/Code.svg +0 -10
  673. package/src/icons/duotone-icons/Text/Edit-text.svg +0 -11
  674. package/src/icons/duotone-icons/Text/Filter.svg +0 -10
  675. package/src/icons/duotone-icons/Text/Font.svg +0 -11
  676. package/src/icons/duotone-icons/Text/H1.svg +0 -11
  677. package/src/icons/duotone-icons/Text/H2.svg +0 -11
  678. package/src/icons/duotone-icons/Text/Itallic.svg +0 -10
  679. package/src/icons/duotone-icons/Text/Menu.svg +0 -11
  680. package/src/icons/duotone-icons/Text/Paragraph.svg +0 -10
  681. package/src/icons/duotone-icons/Text/Quote#1.svg +0 -11
  682. package/src/icons/duotone-icons/Text/Quote#2.svg +0 -11
  683. package/src/icons/duotone-icons/Text/Redo.svg +0 -10
  684. package/src/icons/duotone-icons/Text/Strikethrough.svg +0 -11
  685. package/src/icons/duotone-icons/Text/Text-height.svg +0 -11
  686. package/src/icons/duotone-icons/Text/Text-width.svg +0 -11
  687. package/src/icons/duotone-icons/Text/Text.svg +0 -10
  688. package/src/icons/duotone-icons/Text/Underline.svg +0 -11
  689. package/src/icons/duotone-icons/Text/Undo.svg +0 -10
  690. package/src/icons/duotone-icons/Tools/Angle Grinder.svg +0 -12
  691. package/src/icons/duotone-icons/Tools/Axe.svg +0 -11
  692. package/src/icons/duotone-icons/Tools/Brush.svg +0 -11
  693. package/src/icons/duotone-icons/Tools/Compass.svg +0 -11
  694. package/src/icons/duotone-icons/Tools/Hummer#2.svg +0 -12
  695. package/src/icons/duotone-icons/Tools/Hummer.svg +0 -11
  696. package/src/icons/duotone-icons/Tools/Pantone.svg +0 -12
  697. package/src/icons/duotone-icons/Tools/Road-Cone.svg +0 -11
  698. package/src/icons/duotone-icons/Tools/Roller.svg +0 -12
  699. package/src/icons/duotone-icons/Tools/Roulette.svg +0 -11
  700. package/src/icons/duotone-icons/Tools/Screwdriver.svg +0 -11
  701. package/src/icons/duotone-icons/Tools/Shovel.svg +0 -11
  702. package/src/icons/duotone-icons/Tools/Spatula.svg +0 -11
  703. package/src/icons/duotone-icons/Tools/Swiss-knife.svg +0 -11
  704. package/src/icons/duotone-icons/Tools/Tools.svg +0 -11
  705. package/src/icons/duotone-icons/Weather/Celcium.svg +0 -11
  706. package/src/icons/duotone-icons/Weather/Cloud#1.svg +0 -10
  707. package/src/icons/duotone-icons/Weather/Cloud#2.svg +0 -11
  708. package/src/icons/duotone-icons/Weather/Cloud-fog.svg +0 -11
  709. package/src/icons/duotone-icons/Weather/Cloud-sun.svg +0 -11
  710. package/src/icons/duotone-icons/Weather/Cloud-wind.svg +0 -12
  711. package/src/icons/duotone-icons/Weather/Cloudy-night.svg +0 -11
  712. package/src/icons/duotone-icons/Weather/Cloudy.svg +0 -11
  713. package/src/icons/duotone-icons/Weather/Day-rain.svg +0 -11
  714. package/src/icons/duotone-icons/Weather/Fahrenheit.svg +0 -11
  715. package/src/icons/duotone-icons/Weather/Fog.svg +0 -15
  716. package/src/icons/duotone-icons/Weather/Moon.svg +0 -10
  717. package/src/icons/duotone-icons/Weather/Night-fog.svg +0 -11
  718. package/src/icons/duotone-icons/Weather/Night-rain.svg +0 -11
  719. package/src/icons/duotone-icons/Weather/Rain#1.svg +0 -11
  720. package/src/icons/duotone-icons/Weather/Rain#2.svg +0 -11
  721. package/src/icons/duotone-icons/Weather/Rain#5.svg +0 -11
  722. package/src/icons/duotone-icons/Weather/Rainbow.svg +0 -12
  723. package/src/icons/duotone-icons/Weather/Snow#1.svg +0 -11
  724. package/src/icons/duotone-icons/Weather/Snow#2.svg +0 -11
  725. package/src/icons/duotone-icons/Weather/Snow#3.svg +0 -11
  726. package/src/icons/duotone-icons/Weather/Snow.svg +0 -11
  727. package/src/icons/duotone-icons/Weather/Storm.svg +0 -11
  728. package/src/icons/duotone-icons/Weather/Sun-fog.svg +0 -11
  729. package/src/icons/duotone-icons/Weather/Sun.svg +0 -11
  730. package/src/icons/duotone-icons/Weather/Suset#1.svg +0 -11
  731. package/src/icons/duotone-icons/Weather/Suset#2.svg +0 -11
  732. package/src/icons/duotone-icons/Weather/Temperature-empty.svg +0 -10
  733. package/src/icons/duotone-icons/Weather/Temperature-full.svg +0 -10
  734. package/src/icons/duotone-icons/Weather/Temperature-half.svg +0 -10
  735. package/src/icons/duotone-icons/Weather/Thunder-night.svg +0 -11
  736. package/src/icons/duotone-icons/Weather/Thunder.svg +0 -11
  737. package/src/icons/duotone-icons/Weather/Umbrella.svg +0 -11
  738. package/src/icons/duotone-icons/Weather/Wind.svg +0 -11
  739. package/src/icons/social/facebook.svg +0 -10
  740. package/src/icons/social/instagram.svg +0 -10
  741. package/src/icons/social/pinterest.svg +0 -3
  742. package/src/icons/social/twitter.svg +0 -10
  743. package/src/implemented-proposals/abi-management.md +0 -161
  744. package/src/implemented-proposals/bank-timestamp-correction.md +0 -77
  745. package/src/implemented-proposals/commitment.md +0 -92
  746. package/src/implemented-proposals/durable-tx-nonces.md +0 -131
  747. package/src/implemented-proposals/ed_overview/ed_economic_sustainability.md +0 -9
  748. package/src/implemented-proposals/ed_overview/ed_mvp.md +0 -24
  749. package/src/implemented-proposals/ed_overview/ed_overview.md +0 -19
  750. package/src/implemented-proposals/ed_overview/ed_references.md +0 -7
  751. package/src/implemented-proposals/ed_overview/ed_storage_rent_economics.md +0 -17
  752. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_overview.md +0 -9
  753. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_state_validation_protocol_based_rewards.md +0 -64
  754. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_state_validation_transaction_fees.md +0 -20
  755. package/src/implemented-proposals/ed_overview/ed_validation_client_economics/ed_vce_validation_stake_delegation.md +0 -28
  756. package/src/implemented-proposals/implemented-proposals.md +0 -9
  757. package/src/implemented-proposals/installer.md +0 -216
  758. package/src/implemented-proposals/instruction_introspection.md +0 -28
  759. package/src/implemented-proposals/leader-leader-transition.md +0 -55
  760. package/src/implemented-proposals/leader-validator-transition.md +0 -52
  761. package/src/implemented-proposals/persistent-account-storage.md +0 -83
  762. package/src/implemented-proposals/readonly-accounts.md +0 -25
  763. package/src/implemented-proposals/reliable-vote-transmission.md +0 -60
  764. package/src/implemented-proposals/rent.md +0 -69
  765. package/src/implemented-proposals/repair-service.md +0 -108
  766. package/src/implemented-proposals/rpc-transaction-history.md +0 -107
  767. package/src/implemented-proposals/snapshot-verification.md +0 -56
  768. package/src/implemented-proposals/staking-rewards.md +0 -33
  769. package/src/implemented-proposals/testing-programs.md +0 -53
  770. package/src/implemented-proposals/tower-bft.md +0 -138
  771. package/src/implemented-proposals/transaction-fees.md +0 -32
  772. package/src/implemented-proposals/validator-timestamp-oracle.md +0 -107
  773. package/src/inflation/adjusted_staking_yield.md +0 -118
  774. package/src/inflation/inflation_schedule.md +0 -40
  775. package/src/inflation/terminology.md +0 -54
  776. package/src/integrations/exchange.md +0 -753
  777. package/src/introduction.md +0 -33
  778. package/src/offline-signing/durable-nonce.md +0 -247
  779. package/src/offline-signing.md +0 -174
  780. package/src/pages/index.js +0 -160
  781. package/src/pages/styles.module.css +0 -41
  782. package/src/proposals/accepted-design-proposals.md +0 -11
  783. package/src/proposals/accounts-db-replication.md +0 -185
  784. package/src/proposals/bankless-leader.md +0 -57
  785. package/src/proposals/block-confirmation.md +0 -85
  786. package/src/proposals/cluster-test-framework.md +0 -102
  787. package/src/proposals/comprehensive-compute-fees.md +0 -164
  788. package/src/proposals/embedding-move.md +0 -37
  789. package/src/proposals/interchain-transaction-verification.md +0 -105
  790. package/src/proposals/ledger-replication-to-implement.md +0 -417
  791. package/src/proposals/log_data.md +0 -146
  792. package/src/proposals/optimistic-confirmation-and-slashing.md +0 -89
  793. package/src/proposals/optimistic-transaction-propagation-signal.md +0 -109
  794. package/src/proposals/optimistic_confirmation.md +0 -408
  795. package/src/proposals/program-instruction-macro.md +0 -226
  796. package/src/proposals/return-data.md +0 -144
  797. package/src/proposals/rip-curl.md +0 -56
  798. package/src/proposals/rust-clients.md +0 -54
  799. package/src/proposals/simple-payment-and-state-verification.md +0 -258
  800. package/src/proposals/slashing.md +0 -60
  801. package/src/proposals/snapshot-verification.md +0 -11
  802. package/src/proposals/tick-verification.md +0 -70
  803. package/src/proposals/transactions-v2.md +0 -334
  804. package/src/proposals/validator-proposal.md +0 -54
  805. package/src/proposals/vote-signing-to-implement.md +0 -116
  806. package/src/running-validator/restart-cluster.md +0 -117
  807. package/src/running-validator/validator-failover.md +0 -146
  808. package/src/running-validator/validator-info.md +0 -64
  809. package/src/running-validator/validator-monitor.md +0 -47
  810. package/src/running-validator/validator-reqs.md +0 -115
  811. package/src/running-validator/validator-stake.md +0 -132
  812. package/src/running-validator/validator-start.md +0 -492
  813. package/src/running-validator/validator-troubleshoot.md +0 -17
  814. package/src/running-validator/vote-accounts.md +0 -219
  815. package/src/running-validator.md +0 -7
  816. package/src/staking/stake-accounts.md +0 -141
  817. package/src/staking/stake-programming.md +0 -27
  818. package/src/staking.md +0 -117
  819. package/src/storage_rent_economics.md +0 -17
  820. package/src/terminology.md +0 -346
  821. package/src/theme/Footer/index.js +0 -126
  822. package/src/theme/Footer/styles.module.css +0 -15
  823. package/src/transaction_fees.md +0 -21
  824. package/src/validator/anatomy.md +0 -13
  825. package/src/validator/blockstore.md +0 -91
  826. package/src/validator/gossip.md +0 -90
  827. package/src/validator/runtime.md +0 -69
  828. package/src/validator/tpu.md +0 -5
  829. package/src/validator/tvu.md +0 -9
  830. package/src/wallet-guide/apps.md +0 -74
  831. package/src/wallet-guide/cli.md +0 -67
  832. package/src/wallet-guide/file-system-wallet.md +0 -65
  833. package/src/wallet-guide/hardware-wallets/ledger.md +0 -219
  834. package/src/wallet-guide/hardware-wallets.md +0 -53
  835. package/src/wallet-guide/ledger-live.md +0 -77
  836. package/src/wallet-guide/paper-wallet.md +0 -203
  837. package/src/wallet-guide/solflare.md +0 -201
  838. package/src/wallet-guide/support.md +0 -16
  839. package/src/wallet-guide/web-wallets.md +0 -52
  840. package/src/wallet-guide.md +0 -63
  841. package/static/.nojekyll +0 -0
  842. package/static/img/favicon.ico +0 -0
  843. package/static/katex/README.md +0 -91
  844. package/static/katex/contrib/auto-render.js +0 -350
  845. package/static/katex/contrib/auto-render.min.js +0 -1
  846. package/static/katex/contrib/auto-render.mjs +0 -226
  847. package/static/katex/contrib/copy-tex.css +0 -13
  848. package/static/katex/contrib/copy-tex.js +0 -213
  849. package/static/katex/contrib/copy-tex.min.css +0 -1
  850. package/static/katex/contrib/copy-tex.min.js +0 -1
  851. package/static/katex/contrib/copy-tex.mjs +0 -85
  852. package/static/katex/contrib/mathtex-script-type.js +0 -137
  853. package/static/katex/contrib/mathtex-script-type.min.js +0 -1
  854. package/static/katex/contrib/mathtex-script-type.mjs +0 -24
  855. package/static/katex/contrib/mhchem.js +0 -3241
  856. package/static/katex/contrib/mhchem.min.js +0 -1
  857. package/static/katex/contrib/mhchem.mjs +0 -3109
  858. package/static/katex/contrib/render-a11y-string.js +0 -870
  859. package/static/katex/contrib/render-a11y-string.min.js +0 -1
  860. package/static/katex/contrib/render-a11y-string.mjs +0 -753
  861. package/static/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  862. package/static/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  863. package/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  864. package/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  865. package/static/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  866. package/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  867. package/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  868. package/static/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  869. package/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  870. package/static/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  871. package/static/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  872. package/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  873. package/static/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  874. package/static/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  875. package/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  876. package/static/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  877. package/static/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  878. package/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  879. package/static/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  880. package/static/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  881. package/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  882. package/static/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  883. package/static/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  884. package/static/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  885. package/static/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  886. package/static/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  887. package/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  888. package/static/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  889. package/static/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  890. package/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  891. package/static/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  892. package/static/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  893. package/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  894. package/static/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  895. package/static/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  896. package/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  897. package/static/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  898. package/static/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  899. package/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  900. package/static/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  901. package/static/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  902. package/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  903. package/static/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  904. package/static/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  905. package/static/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  906. package/static/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  907. package/static/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  908. package/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  909. package/static/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  910. package/static/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  911. package/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  912. package/static/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  913. package/static/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  914. package/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  915. package/static/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  916. package/static/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  917. package/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  918. package/static/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  919. package/static/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  920. package/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  921. package/static/katex/katex.css +0 -1034
  922. package/static/katex/katex.js +0 -17308
  923. package/static/katex/katex.min.css +0 -1
  924. package/static/katex/katex.min.js +0 -1
  925. package/static/katex/katex.mjs +0 -16911
@@ -1,161 +0,0 @@
1
- ---
2
- title: Solana ABI management process
3
- ---
4
-
5
- This document proposes the Solana ABI management process. The ABI management
6
- process is an engineering practice and a supporting technical framework to avoid
7
- introducing unintended incompatible ABI changes.
8
-
9
- # Problem
10
-
11
- The Solana ABI (binary interface to the cluster) is currently only defined
12
- implicitly by the implementation and requires a very careful eye to notice
13
- breaking changes. This makes it extremely difficult to upgrade the software
14
- on an existing cluster without rebooting the ledger.
15
-
16
- # Requirements and objectives
17
-
18
- - Unintended ABI changes can be detected as CI failures mechanically.
19
- - Newer implementation must be able to process the oldest data (since genesis)
20
- once we go mainnet.
21
- - The objective of this proposal is to protect the ABI while sustaining rather
22
- rapid development by opting for a mechanical process rather than a very long
23
- human-driven auditing process.
24
- - Once signed cryptographically, data blob must be identical, so no
25
- in-place data format update is possible regardless of inbound and outbound of
26
- the online system. Also, considering the sheer volume of transactions we're
27
- aiming to handle, retrospective in-place update is undesirable at best.
28
-
29
- # Solution
30
-
31
- Instead of natural human's eye due-diligence, which should be assumed to fail
32
- regularly, we need a systematic assurance of not breaking the cluster when
33
- changing the source code.
34
-
35
- For that purpose, we introduce a mechanism of marking every ABI-related things
36
- in source code (`struct`s, `enum`s) with the new `#[frozen_abi]` attribute. This
37
- takes hard-coded digest value derived from types of its fields via
38
- `ser::Serialize`. And the attribute automatically generates a unit test to try
39
- to detect any unsanctioned changes to the marked ABI-related things.
40
-
41
- However, the detection cannot be complete; no matter how hard we statically
42
- analyze the source code, it's still possible to break ABI. For example, this
43
- includes not-`derive`d hand-written `ser::Serialize`, underlying library's
44
- implementation changes (for example `bincode`), CPU architecture differences.
45
- The detection of these possible ABI incompatibilities is out-of-scope for this
46
- ABI management.
47
-
48
- # Definitions
49
-
50
- ABI item/type: various types to be used for serialization, which collectively
51
- comprises the whole ABI for any system components. For example, those types
52
- include `struct`s and `enum`s.
53
-
54
- ABI item digest: Some fixed hash derived from type information of ABI item's
55
- fields.
56
-
57
- # Example
58
-
59
- ```patch
60
- +#[frozen_abi(digest="eXSMM7b89VY72V...")]
61
- #[derive(Serialize, Default, Deserialize, Debug, PartialEq, Eq, Clone)]
62
- pub struct Vote {
63
- /// A stack of votes starting with the oldest vote
64
- pub slots: Vec<Slot>,
65
- /// signature of the bank's state at the last slot
66
- pub hash: Hash,
67
- }
68
- ```
69
-
70
- # Developer's workflow
71
-
72
- To know the digest for new ABI items, developers can add `frozen_abi` with a
73
- random digest value and run the unit tests and replace it with the correct
74
- digest from the assertion test error message.
75
-
76
- In general, once we add `frozen_abi` and its change is published in the stable
77
- release channel, its digest should never change. If such a change is needed, we
78
- should opt for defining a new `struct` like `FooV1`. And special release flow
79
- like hard forks should be approached.
80
-
81
- # Implementation remarks
82
-
83
- We use some degree of macro machinery to automatically generate unit tests
84
- and calculate a digest from ABI items. This is doable by clever use of
85
- `serde::Serialize` (`[1]`) and `any::type_name` (`[2]`). For a precedent for similar
86
- implementation, `ink` from the Parity Technologies `[3]` could be informational.
87
-
88
- # Implementation details
89
-
90
- The implementation's goal is to detect unintended ABI changes automatically as
91
- much as possible. To that end, the digest of structural ABI information is
92
- calculated with best-effort accuracy and stability.
93
-
94
- When the ABI digest check is run, it dynamically computes an ABI digest by
95
- recursively digesting the ABI of fields of the ABI item, by re-using the
96
- `serde`'s serialization functionality, proc macro and generic specialization.
97
- And then, the check `assert!`s that its finalized digest value is identical as
98
- what is specified in the `frozen_abi` attribute.
99
-
100
- To realize that, it creates an example instance of the type and a custom
101
- `Serializer` instance for `serde` to recursively traverse its fields as if
102
- serializing the example for real. This traversing must be done via `serde` to
103
- really capture what kinds of data actually would be serialized by `serde`, even
104
- considering custom non-`derive`d `Serialize` trait implementations.
105
-
106
- # The ABI digesting process
107
-
108
- This part is a bit complex. There is three inter-depending parts: `AbiExample`,
109
- `AbiDigester` and `AbiEnumVisitor`.
110
-
111
- First, the generated test creates an example instance of the digested type with
112
- a trait called `AbiExample`, which should be implemented for all of digested
113
- types like the `Serialize` and return `Self` like the `Default` trait. Usually,
114
- it's provided via generic trait specialization for most of common types. Also
115
- it is possible to `derive` for `struct` and `enum` and can be hand-written if
116
- needed.
117
-
118
- The custom `Serializer` is called `AbiDigester`. And when it's called by `serde`
119
- to serialize some data, it recursively collects ABI information as much as
120
- possible. `AbiDigester`'s internal state for the ABI digest is updated
121
- differentially depending on the type of data. This logic is specifically
122
- redirected via with a trait called `AbiEnumVisitor` for each `enum` type. As the
123
- name suggests, there is no need to implement `AbiEnumVisitor` for other types.
124
-
125
- To summarize this interplay, `serde` handles the recursive serialization control
126
- flow in tandem with `AbiDigester`. The initial entry point in tests and child
127
- `AbiDigester`s use `AbiExample` recursively to create an example object
128
- hierarchal graph. And `AbiDigester` uses `AbiEnumVisitor` to inquiry the actual
129
- ABI information using the constructed sample.
130
-
131
- `Default` isn't enough for `AbiExample`. Various collection's `::default()` is
132
- empty, yet, we want to digest them with actual items. And, ABI digesting can't
133
- be realized only with `AbiEnumVisitor`. `AbiExample` is required because an
134
- actual instance of type is needed to actually traverse the data via `serde`.
135
-
136
- On the other hand, ABI digesting can't be done only with `AbiExample`, either.
137
- `AbiEnumVisitor` is required because all variants of an `enum` cannot be
138
- traversed just with a single variant of it as a ABI example.
139
-
140
- Digestable information:
141
-
142
- - rust's type name
143
- - `serde`'s data type name
144
- - all fields in `struct`
145
- - all variants in `enum`
146
- - `struct`: normal(`struct {...}`) and tuple-style (`struct(...)`)
147
- - `enum`: normal variants and `struct`- and `tuple`- styles.
148
- - attributes: `serde(serialize_with=...)` and `serde(skip)`
149
-
150
- Not digestable information:
151
-
152
- - Any custom serialize code path not touched by the sample provided by
153
- `AbiExample`. (technically not possible)
154
- - generics (must be a concrete type; use `frozen_abi` on concrete type
155
- aliases)
156
-
157
- # References
158
-
159
- 1. [(De)Serialization with type info · Issue #1095 · serde-rs/serde](https://github.com/serde-rs/serde/issues/1095#issuecomment-345483479)
160
- 2. [`std::any::type_name` - Rust](https://doc.rust-lang.org/std/any/fn.type_name.html)
161
- 3. [Parity's ink to write smart contracts](https://github.com/paritytech/ink)
@@ -1,77 +0,0 @@
1
- ---
2
- title: Bank Timestamp Correction
3
- ---
4
-
5
- Each Bank has a timestamp that is stashed in the Clock sysvar and used to assess
6
- time-based stake account lockups. However, since genesis, this value has been
7
- based on a theoretical slots-per-second instead of reality, so it's quite
8
- inaccurate. This poses a problem for lockups, since the accounts will not
9
- register as lockup-free on (or anytime near) the date the lockup is set to
10
- expire.
11
-
12
- Block times are already being estimated to cache in Blockstore and long-term
13
- storage using a [validator timestamp oracle](validator-timestamp-oracle.md);
14
- this data provides an opportunity to align the bank timestamp more closely with
15
- real-world time.
16
-
17
- The general outline of the proposed implementation is as follows:
18
-
19
- - Correct each Bank timestamp using the validator-provided timestamp.
20
- - Update the validator-provided timestamp calculation to use a stake-weighted
21
- median, rather than a stake-weighted mean.
22
- - Bound the timestamp correction so that it cannot deviate too far from the
23
- expected theoretical estimate
24
-
25
- ## Timestamp Correction
26
-
27
- On every new Bank, the runtime calculates a realistic timestamp estimate using
28
- validator timestamp-oracle data. The Bank timestamp is corrected to this value
29
- if it is greater than or equal to the previous Bank's timestamp. That is, time
30
- should not ever go backward, so that locked up accounts may be released by the
31
- correction, but once released, accounts can never be relocked by a time
32
- correction.
33
-
34
- ### Calculating Stake-Weighted Median Timestamp
35
-
36
- In order to calculate the estimated timestamp for a particular Bank, the runtime
37
- first needs to get the most recent vote timestamps from the active validator
38
- set. The `Bank::vote_accounts()` method provides the vote accounts state, and
39
- these can be filtered to all accounts whose most recent timestamp was provided
40
- within the last epoch.
41
-
42
- From each vote timestamp, an estimate for the current Bank is calculated using
43
- the epoch's target ns_per_slot for any delta between the Bank slot and the
44
- timestamp slot. Each timestamp estimate is associated with the stake delegated
45
- to that vote account, and all the timestamps are collected to create a
46
- stake-weighted timestamp distribution.
47
-
48
- From this set, the stake-weighted median timestamp -- that is, the timestamp at
49
- which 50% of the stake estimates a greater-or-equal timestamp and 50% of the
50
- stake estimates a lesser-or-equal timestamp -- is selected as the potential
51
- corrected timestamp.
52
-
53
- This stake-weighted median timestamp is preferred over the stake-weighted mean
54
- because the multiplication of stake by proposed timestamp in the mean
55
- calculation allows a node with very small stake to still have a large effect on
56
- the resulting timestamp by proposing a timestamp that is very large or very
57
- small. For example, using the previous `calculate_stake_weighted_timestamp()`
58
- method, a node with 0.00003% of the stake proposing a timestamp of `i64::MAX`
59
- can shift the timestamp forward 97k years!
60
-
61
- ### Bounding Timestamps
62
-
63
- In addition to preventing time moving backward, we can prevent malicious
64
- activity by bounding the corrected timestamp to an acceptable level of deviation
65
- from the theoretical expected time.
66
-
67
- This proposal suggests that each timestamp be allowed to deviate up to 25% from
68
- the expected time since the start of the epoch.
69
-
70
- In order to calculate the timestamp deviation, each Bank needs to log the
71
- `epoch_start_timestamp` in the Clock sysvar. This value is set to the
72
- `Clock::unix_timestamp` on the first slot of each epoch.
73
-
74
- Then, the runtime compares the expected elapsed time since the start of the
75
- epoch with the proposed elapsed time based on the corrected timestamp. If the
76
- corrected elapsed time is within +/- 25% of expected, the corrected timestamp is
77
- accepted. Otherwise, it is bounded to the acceptable deviation.
@@ -1,92 +0,0 @@
1
- ---
2
- title: Commitment
3
- ---
4
-
5
- The commitment metric aims to give clients a measure of the network confirmation
6
- and stake levels on a particular block. Clients can then use this information to
7
- derive their own measures of commitment.
8
-
9
- # Calculation RPC
10
-
11
- Clients can request commitment metrics from a validator for a signature `s`
12
- through `get_block_commitment(s: Signature) -> BlockCommitment` over RPC. The
13
- `BlockCommitment` struct contains an array of u64 `[u64, MAX_CONFIRMATIONS]`. This
14
- array represents the commitment metric for the particular block `N` that
15
- contains the signature `s` as of the last block `M` that the validator voted on.
16
-
17
- An entry `s` at index `i` in the `BlockCommitment` array implies that the
18
- validator observed `s` total stake in the cluster reaching `i` confirmations on
19
- block `N` as observed in some block `M`. There will be `MAX_CONFIRMATIONS` elements in
20
- this array, representing all the possible number of confirmations from 1 to
21
- `MAX_CONFIRMATIONS`.
22
-
23
- # Computation of commitment metric
24
-
25
- Building this `BlockCommitment` struct leverages the computations already being
26
- performed for building consensus. The `collect_vote_lockouts` function in
27
- `consensus.rs` builds a HashMap, where each entry is of the form `(b, s)`
28
- where `s` is the amount of stake on a bank `b`.
29
-
30
- This computation is performed on a votable candidate bank `b` as follows.
31
-
32
- ```text
33
- let output: HashMap<b, Stake> = HashMap::new();
34
- for vote_account in b.vote_accounts {
35
- for v in vote_account.vote_stack {
36
- for a in ancestors(v) {
37
- f(*output.get_mut(a), vote_account, v);
38
- }
39
- }
40
- }
41
- ```
42
-
43
- where `f` is some accumulation function that modifies the `Stake` entry
44
- for slot `a` with some data derivable from vote `v` and `vote_account`
45
- (stake, lockout, etc.). Note here that the `ancestors` here only includes
46
- slots that are present in the current status cache. Signatures for banks earlier
47
- than those present in the status cache would not be queryable anyway, so those
48
- banks are not included in the commitment calculations here.
49
-
50
- Now we can naturally augment the above computation to also build a
51
- `BlockCommitment` array for every bank `b` by:
52
-
53
- 1. Adding a `ForkCommitmentCache` to collect the `BlockCommitment` structs
54
- 2. Replacing `f` with `f'` such that the above computation also builds this
55
- `BlockCommitment` for every bank `b`.
56
-
57
- We will proceed with the details of 2) as 1) is trivial.
58
-
59
- Before continuing, it is noteworthy that for some validator's vote account `a`,
60
- the number of local confirmations for that validator on slot `s` is
61
- `v.num_confirmations`, where `v` is the smallest vote in the stack of votes
62
- `a.votes` such that `v.slot >= s` (i.e. there is no need to look at any
63
- votes > v as the number of confirmations will be lower).
64
-
65
- Now more specifically, we augment the above computation to:
66
-
67
- ```text
68
- let output: HashMap<b, Stake> = HashMap::new();
69
- let fork_commitment_cache = ForkCommitmentCache::default();
70
- for vote_account in b.vote_accounts {
71
- // vote stack is sorted from oldest vote to newest vote
72
- for (v1, v2) in vote_account.vote_stack.windows(2) {
73
- for a in ancestors(v1).difference(ancestors(v2)) {
74
- f'(*output.get_mut(a), *fork_commitment_cache.get_mut(a), vote_account, v);
75
- }
76
- }
77
- }
78
- ```
79
-
80
- where `f'` is defined as:
81
-
82
- ```text
83
- fn f`(
84
- stake: &mut Stake,
85
- some_ancestor: &mut BlockCommitment,
86
- vote_account: VoteAccount,
87
- v: Vote, total_stake: u64
88
- ){
89
- f(stake, vote_account, v);
90
- *some_ancestor.commitment[v.num_confirmations] += vote_account.stake;
91
- }
92
- ```
@@ -1,131 +0,0 @@
1
- ---
2
- title: Durable Transaction Nonces
3
- ---
4
-
5
- ## Problem
6
-
7
- To prevent replay, Solana transactions contain a nonce field populated with a
8
- "recent" blockhash value. A transaction containing a blockhash that is too old
9
- (~2min as of this writing) is rejected by the network as invalid. Unfortunately
10
- certain use cases, such as custodial services, require more time to produce a
11
- signature for the transaction. A mechanism is needed to enable these potentially
12
- offline network participants.
13
-
14
- ## Requirements
15
-
16
- 1. The transaction's signature needs to cover the nonce value
17
- 2. The nonce must not be reusable, even in the case of signing key disclosure
18
-
19
- ## A Contract-based Solution
20
-
21
- Here we describe a contract-based solution to the problem, whereby a client can
22
- "stash" a nonce value for future use in a transaction's `recent_blockhash`
23
- field. This approach is akin to the Compare and Swap atomic instruction,
24
- implemented by some CPU ISAs.
25
-
26
- When making use of a durable nonce, the client must first query its value from
27
- account data. A transaction is now constructed in the normal way, but with the
28
- following additional requirements:
29
-
30
- 1. The durable nonce value is used in the `recent_blockhash` field
31
- 2. An `AdvanceNonceAccount` instruction is the first issued in the transaction
32
-
33
- ### Contract Mechanics
34
-
35
- TODO: svgbob this into a flowchart
36
-
37
- ```text
38
- Start
39
- Create Account
40
- state = Uninitialized
41
- NonceInstruction
42
- if state == Uninitialized
43
- if account.balance < rent_exempt
44
- error InsufficientFunds
45
- state = Initialized
46
- elif state != Initialized
47
- error BadState
48
- if sysvar.recent_blockhashes.is_empty()
49
- error EmptyRecentBlockhashes
50
- if !sysvar.recent_blockhashes.contains(stored_nonce)
51
- error NotReady
52
- stored_hash = sysvar.recent_blockhashes[0]
53
- success
54
- WithdrawInstruction(to, lamports)
55
- if state == Uninitialized
56
- if !signers.contains(owner)
57
- error MissingRequiredSignatures
58
- elif state == Initialized
59
- if !sysvar.recent_blockhashes.contains(stored_nonce)
60
- error NotReady
61
- if lamports != account.balance && lamports + rent_exempt > account.balance
62
- error InsufficientFunds
63
- account.balance -= lamports
64
- to.balance += lamports
65
- success
66
- ```
67
-
68
- A client wishing to use this feature starts by creating a nonce account under
69
- the system program. This account will be in the `Uninitialized` state with no
70
- stored hash, and thus unusable.
71
-
72
- To initialize a newly created account, an `InitializeNonceAccount` instruction must be
73
- issued. This instruction takes one parameter, the `Pubkey` of the account's
74
- [authority](../offline-signing/durable-nonce.md#nonce-authority). Nonce accounts
75
- must be [rent-exempt](rent.md#two-tiered-rent-regime) to meet the data-persistence
76
- requirements of the feature, and as such, require that sufficient lamports be
77
- deposited before they can be initialized. Upon successful initialization, the
78
- cluster's most recent blockhash is stored along with specified nonce authority
79
- `Pubkey`.
80
-
81
- The `AdvanceNonceAccount` instruction is used to manage the account's stored nonce
82
- value. It stores the cluster's most recent blockhash in the account's state data,
83
- failing if that matches the value already stored there. This check prevents
84
- replaying transactions within the same block.
85
-
86
- Due to nonce accounts' [rent-exempt](rent.md#two-tiered-rent-regime) requirement,
87
- a custom withdraw instruction is used to move funds out of the account.
88
- The `WithdrawNonceAccount` instruction takes a single argument, lamports to withdraw,
89
- and enforces rent-exemption by preventing the account's balance from falling
90
- below the rent-exempt minimum. An exception to this check is if the final balance
91
- would be zero lamports, which makes the account eligible for deletion. This
92
- account closure detail has an additional requirement that the stored nonce value
93
- must not match the cluster's most recent blockhash, as per `AdvanceNonceAccount`.
94
-
95
- The account's [nonce authority](../offline-signing/durable-nonce.md#nonce-authority)
96
- can be changed using the `AuthorizeNonceAccount` instruction. It takes one parameter,
97
- the `Pubkey` of the new authority. Executing this instruction grants full
98
- control over the account and its balance to the new authority.
99
-
100
- > `AdvanceNonceAccount`, `WithdrawNonceAccount` and `AuthorizeNonceAccount` all require the current [nonce authority](../offline-signing/durable-nonce.md#nonce-authority) for the account to sign the transaction.
101
-
102
- ### Runtime Support
103
-
104
- The contract alone is not sufficient for implementing this feature. To enforce
105
- an extant `recent_blockhash` on the transaction and prevent fee theft via
106
- failed transaction replay, runtime modifications are necessary.
107
-
108
- Any transaction failing the usual `check_hash_age` validation will be tested
109
- for a Durable Transaction Nonce. This is signaled by including a `AdvanceNonceAccount`
110
- instruction as the first instruction in the transaction.
111
-
112
- If the runtime determines that a Durable Transaction Nonce is in use, it will
113
- take the following additional actions to validate the transaction:
114
-
115
- 1. The `NonceAccount` specified in the `Nonce` instruction is loaded.
116
- 2. The `NonceState` is deserialized from the `NonceAccount`'s data field and
117
- confirmed to be in the `Initialized` state.
118
- 3. The nonce value stored in the `NonceAccount` is tested to match against the
119
- one specified in the transaction's `recent_blockhash` field.
120
-
121
- If all three of the above checks succeed, the transaction is allowed to continue
122
- validation.
123
-
124
- Since transactions that fail with an `InstructionError` are charged a fee and
125
- changes to their state rolled back, there is an opportunity for fee theft if an
126
- `AdvanceNonceAccount` instruction is reverted. A malicious validator could replay the
127
- failed transaction until the stored nonce is successfully advanced. Runtime
128
- changes prevent this behavior. When a durable nonce transaction fails with an
129
- `InstructionError` aside from the `AdvanceNonceAccount` instruction, the nonce account
130
- is rolled back to its pre-execution state as usual. Then the runtime advances
131
- its nonce value and the advanced nonce account stored as if it succeeded.
@@ -1,9 +0,0 @@
1
- ---
2
- title: Economic Sustainability
3
- ---
4
-
5
- **Subject to change.**
6
-
7
- Long term economic sustainability is one of the guiding principles of Solana’s economic design. While it is impossible to predict how decentralized economies will develop over time, especially economies with flexible decentralized governances, we can arrange economic components such that, under certain conditions, a sustainable economy may take shape in the long term. In the case of Solana’s network, these components take the form of token issuance \(via inflation\) and token burning.
8
-
9
- The dominant remittances from the Solana mining pool are validator rewards. The disinflationary mechanism is a flat, protocol-specified and adjusted, % of each transaction fee.
@@ -1,24 +0,0 @@
1
- ---
2
- title: Economic Design MVP
3
- ---
4
-
5
- **Subject to change.**
6
-
7
- The preceding sections, outlined in the
8
- [Economic Design Overview](ed_overview.md),
9
- describe a long-term vision of a sustainable Solana economy.
10
- Of course, we don't expect the final implementation to perfectly match what has
11
- been described above. We intend to fully engage with network stakeholders
12
- throughout the implementation phases \(i.e. pre-testnet, testnet, mainnet\)
13
- to ensure the system supports, and is representative of, the various network
14
- participants' interests. The first step toward this goal, however, is outlining
15
- a some desired MVP economic features to be available for early pre-testnet and
16
- testnet participants. Below is a rough sketch outlining basic economic
17
- functionality from which a more complete and functional system can be developed.
18
-
19
- ## MVP Economic Features
20
-
21
- - Faucet to deliver testnet SOLs to validators for staking and application development.
22
- - Mechanism by which validators are rewarded via network inflation.
23
- - Ability to delegate tokens to validator nodes
24
- - Validator set commission fees on interest from delegated tokens.
@@ -1,19 +0,0 @@
1
- ---
2
- title: Cluster Economics
3
- ---
4
-
5
- **Subject to change. Follow most recent economic discussions in the Solana forums: https://forums.solana.com**
6
-
7
- Solana’s crypto-economic system is designed to promote a healthy, long term self-sustaining economy with participant incentives aligned to the security and decentralization of the network. The main participants in this economy are validation-clients. Their contributions to the network, state validation, and their requisite incentive mechanisms are discussed below.
8
-
9
- The main channels of participant remittances are referred to as protocol-based (inflationary) rewards and transaction fees. Protocol-based rewards are issuances from a global, protocol-defined, inflation rate. These rewards will constitute the total reward delivered to validation clients, the remaining sourced from transaction fees. In the early days of the network, it is likely that protocol-based rewards, deployed based on predefined issuance schedule, will drive the majority of participant incentives to participate in the network.
10
-
11
- These protocol-based rewards, to be distributed across the actively staked tokens on the network, are to be a result of a global supply inflation rate, calculated per Solana epoch and distributed amongst the active validator set. As discussed further below, the per annum inflation rate is based on a pre-determined disinflationary schedule. This provides the network with monetary supply predictability which supports long term economic stability and security.
12
-
13
- Transaction fees are market-based participant-to-participant transfers, attached to network interactions as a necessary motivation and compensation for the inclusion and execution of a proposed transaction. A mechanism for long-term economic stability and forking protection through partial burning of each transaction fee is also discussed below.
14
-
15
- A high-level schematic of Solana’s crypto-economic design is shown below in **Figure 1**. The specifics of validation-client economics are described in sections: [Validation-client Economics](ed_validation_client_economics/ed_vce_overview.md), [Inflation Schedule](ed_validation_client_economics/ed_vce_state_validation_protocol_based_rewards.md), and [Transaction Fees](ed_validation_client_economics/ed_vce_state_validation_transaction_fees.md). Also, the section titled [Validation Stake Delegation](ed_validation_client_economics/ed_vce_validation_stake_delegation.md) closes with a discussion of validator delegation opportunities and marketplace. Additionally, in [Storage Rent Economics](ed_storage_rent_economics.md), we describe an implementation of storage rent to account for the externality costs of maintaining the active state of the ledger. An outline of features for an MVP economic design is discussed in the [Economic Design MVP](ed_mvp.md) section.
16
-
17
- ![](/img/economic_design_infl_230719.png)
18
-
19
- **Figure 1**: Schematic overview of Solana economic incentive design.
@@ -1,7 +0,0 @@
1
- ---
2
- title: References
3
- ---
4
-
5
- 1. [https://blog.ethereum.org/2016/07/27/inflation-transaction-fees-cryptocurrency-monetary-policy/](https://blog.ethereum.org/2016/07/27/inflation-transaction-fees-cryptocurrency-monetary-policy/)
6
- 2. [https://medium.com/solana-labs/how-to-create-decentralized-storage-for-a-multi-petabyte-digital-ledger-2499a3a8c281](https://medium.com/solana-labs/how-to-create-decentralized-storage-for-a-multi-petabyte-digital-ledger-2499a3a8c281)
7
- 3. [https://medium.com/solana-labs/how-to-create-decentralized-storage-for-a-multi-petabyte-digital-ledger-2499a3a8c281](https://medium.com/solana-labs/how-to-create-decentralized-storage-for-a-multi-petabyte-digital-ledger-2499a3a8c281)
@@ -1,17 +0,0 @@
1
- ---
2
- title: Storage Rent Economics
3
- ---
4
-
5
- Each transaction that is submitted to the Solana ledger imposes costs. Transaction fees paid by the submitter, and collected by a validator, in theory, account for the acute, transactional, costs of validating and adding that data to the ledger. Unaccounted in this process is the mid-term storage of active ledger state, necessarily maintained by the rotating validator set. This type of storage imposes costs not only to validators but also to the broader network as active state grows so does data transmission and validation overhead. To account for these costs, we describe here our preliminary design and implementation of storage rent.
6
-
7
- Storage rent can be paid via one of two methods:
8
-
9
- Method 1: Set it and forget it
10
-
11
- With this approach, accounts with two-years worth of rent deposits secured are exempt from network rent charges. By maintaining this minimum-balance, the broader network benefits from reduced liquidity and the account holder can rest assured that their `Account::data` will be retained for continual access/usage.
12
-
13
- Method 2: Pay per byte
14
-
15
- If an account has less than two-years worth of deposited rent the network charges rent on a per-epoch basis, in credit for the next epoch. This rent is deducted at a rate specified in genesis, in lamports per kilobyte-year.
16
-
17
- For information on the technical implementation details of this design, see the [Rent](../rent.md) section.
@@ -1,9 +0,0 @@
1
- ---
2
- title: Validation-client Economics
3
- ---
4
-
5
- **Subject to change. Follow most recent economic discussions in the Solana forums: https://forums.solana.com**
6
-
7
- Validator-clients are eligible to charge commission on inflationary rewards distributed to staked tokens. This compensation is for providing compute \(CPU+GPU\) resources to validate and vote on a given PoH state. These protocol-based rewards are determined through an algorithmic disinflationary schedule as a function of total token supply. The network is expected to launch with an annual inflation rate around 8%, set to decrease by 15% per year until a long-term stable rate of 1.5% is reached, however these parameters are yet to be finalized by the community. These issuances are to be split and distributed to participating validators, with around 95% of the issued tokens allocated for validator rewards initiall (the remaining 5% reserved for Foundation operating expenses). Because the network will be distributing a fixed amount of inflation rewards across the stake-weighted validator set, the yield observed for staked tokens will be primarily a function of the amount of staked tokens in relation to the total token supply.
8
-
9
- Additionally, validator clients may earn revenue through fees via state-validation transactions. For clarity, we separately describe the design and motivation of these revenue distributions for validation-clients below: state-validation protocol-based rewards and state-validation transaction fees and rent.
@@ -1,64 +0,0 @@
1
- ---
2
- title: Inflation Schedule
3
- ---
4
-
5
- **Subject to change. Follow most recent economic discussions in the Solana forums: https://forums.solana.com**
6
-
7
- Validator-clients have two functional roles in the Solana network:
8
-
9
- - Validate \(vote\) the current global state of their observed PoH.
10
- - Be elected as ‘leader’ on a stake-weighted round-robin schedule during which time they are responsible for collecting outstanding transactions and incorporating them into their observed PoH, thus updating the global state of the network and providing chain continuity.
11
-
12
- Validator-client rewards for these services are to be distributed at the end of each Solana epoch. As previously discussed, compensation for validator-clients is provided via a commission charged on the protocol-based annual inflation rate dispersed in proportion to the stake-weight of each validator-node \(see below\) along with leader-claimed transaction fees available during each leader rotation. I.e. during the time a given validator-client is elected as leader, it has the opportunity to keep a portion of each transaction fee, less a protocol-specified amount that is destroyed \(see [Validation-client State Transaction Fees](ed_vce_state_validation_transaction_fees.md)\).
13
-
14
- The effective protocol-based annual staking yield \(%\) per epoch received by validation-clients is to be a function of:
15
-
16
- - the current global inflation rate, derived from the pre-determined dis-inflationary issuance schedule \(see [Validation-client Economics](ed_vce_overview.md)\)
17
- - the fraction of staked SOLs out of the current total circulating supply,
18
- - the commission charged by the validation service,
19
- - the up-time/participation \[% of available slots that validator had opportunity to vote on\] of a given validator over the previous epoch.
20
-
21
- The first factor is a function of protocol parameters only \(i.e. independent of validator behavior in a given epoch\) and results in an inflation schedule designed to incentivize early participation, provide clear monetary stability and provide optimal security in the network.
22
-
23
- As a first step to understanding the impact of the _Inflation Schedule_ on the Solana economy, we’ve simulated the upper and lower ranges of what token issuance over time might look like given the current ranges of Inflation Schedule parameters under study.
24
-
25
- Specifically:
26
-
27
- - _Initial Inflation Rate_: 7-9%
28
- - _Dis-inflation Rate_: -14-16%
29
- - _Long-term Inflation Rate_: 1-2%
30
-
31
- Using these ranges to simulate a number of possible Inflation Schedules, we can explore inflation over time:
32
-
33
- ![](/img/p_inflation_schedule_ranges_w_comments.png)
34
-
35
- In the above graph, the average values of the range are identified to illustrate the contribution of each parameter.
36
- From these simulated _Inflation Schedules_, we can also project ranges for token issuance over time.
37
-
38
- ![](/img/p_total_supply_ranges.png)
39
-
40
- Finally we can estimate the _Staked Yield_ on staked SOL, if we introduce an additional parameter, previously discussed, _% of Staked SOL_:
41
-
42
- $$
43
- \%~\text{SOL Staked} = \frac{\text{Total SOL Staked}}{\text{Total Current Supply}}
44
- $$
45
-
46
- In this case, because _% of Staked SOL_ is a parameter that must be estimated (unlike the _Inflation Schedule_ parameters), it is easier to use specific _Inflation Schedule_ parameters and explore a range of _% of Staked SOL_. For the below example, we’ve chosen the middle of the parameter ranges explored above:
47
-
48
- - _Initial Inflation Rate_: 8%
49
- - _Dis-inflation Rate_: -15%
50
- - _Long-term Inflation Rate_: 1.5%
51
-
52
- The values of _% of Staked SOL_ range from 60% - 90%, which we feel covers the likely range we expect to observe, based on feedback from the investor and validator communities as well as what is observed on comparable Proof-of-Stake protocols.
53
-
54
- ![](/img/p_ex_staked_yields.png)
55
-
56
- Again, the above shows an example _Staked Yield_ that a staker might expect over time on the Solana network with the _Inflation Schedule_ as specified. This is an idealized _Staked Yield_ as it neglects validator uptime impact on rewards, validator commissions, potential yield throttling and potential slashing incidents. It additionally ignores that _% of Staked SOL_ is dynamic by design - the economic incentives set up by this _Inflation Schedule_.
57
-
58
- ### Adjusted Staking Yield
59
-
60
- A complete appraisal of earning potential from staking tokens should take into account staked _Token Dilution_ and its impact on staking yield. For this, we define _adjusted staking yield_ as the change in fractional token supply ownership of staked tokens due to the distribution of inflation issuance. I.e. the positive dilutive effects of inflation.
61
-
62
- We can examine the _adjusted staking yield_ as a function of the inflation rate and the percent of staked tokens on the network. We can see this plotted for various staking fractions here:
63
-
64
- ![](/img/p_ex_staked_dilution.png)
@@ -1,20 +0,0 @@
1
- ---
2
- title: State-validation Transaction Fees
3
- ---
4
-
5
- **Subject to change.**
6
-
7
- Each transaction sent through the network, to be processed by the current leader validation-client and confirmed as a global state transaction, must contain a transaction fee. Transaction fees offer many benefits in the Solana economic design, for example they:
8
-
9
- - provide unit compensation to the validator network for the CPU/GPU resources necessary to process the state transaction,
10
- - reduce network spam by introducing real cost to transactions,
11
- - open avenues for a transaction market to incentivize validation-client to collect and process submitted transactions in their function as leader,
12
- - and provide potential long-term economic stability of the network through a protocol-captured minimum fee amount per transaction, as described below.
13
-
14
- Many current blockchain economies \(e.g. Bitcoin, Ethereum\), rely on protocol-based rewards to support the economy in the short term, with the assumption that the revenue generated through transaction fees will support the economy in the long term, when the protocol derived rewards expire. In an attempt to create a sustainable economy through protocol-based rewards and transaction fees, a fixed portion of each transaction fee is destroyed, with the remaining fee going to the current leader processing the transaction. A scheduled global inflation rate provides a source for rewards distributed to validation-clients, through the process described above.
15
-
16
- Transaction fees are set by the network cluster based on recent historical throughput, see [Congestion Driven Fees](../../transaction-fees.md#congestion-driven-fees). This minimum portion of each transaction fee can be dynamically adjusted depending on historical gas usage. In this way, the protocol can use the minimum fee to target a desired hardware utilization. By monitoring a protocol specified gas usage with respect to a desired, target usage amount, the minimum fee can be raised/lowered which should, in turn, lower/raise the actual gas usage per block until it reaches the target amount. This adjustment process can be thought of as similar to the difficulty adjustment algorithm in the Bitcoin protocol, however in this case it is adjusting the minimum transaction fee to guide the transaction processing hardware usage to a desired level.
17
-
18
- As mentioned, a fixed-proportion of each transaction fee is to be destroyed. The intent of this design is to retain leader incentive to include as many transactions as possible within the leader-slot time, while providing an inflation limiting mechanism that protects against "tax evasion" attacks \(i.e. side-channel fee payments\)[1](../ed_references.md).
19
-
20
- Additionally, the burnt fees can be a consideration in fork selection. In the case of a PoH fork with a malicious, censoring leader, we would expect the total fees destroyed to be less than a comparable honest fork, due to the fees lost from censoring. If the censoring leader is to compensate for these lost protocol fees, they would have to replace the burnt fees on their fork themselves, thus potentially reducing the incentive to censor in the first place.