@xyo-network/xl1-protocol 1.3.8 → 1.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +58 -21
  2. package/dist/neutral/index.mjs +216 -101
  3. package/dist/neutral/index.mjs.map +1 -1
  4. package/dist/node/index.mjs +225 -0
  5. package/dist/node/index.mjs.map +1 -0
  6. package/dist/types/Addressable.d.ts +5 -0
  7. package/dist/types/Addressable.d.ts.map +1 -0
  8. package/dist/types/ChainIterator.d.ts +29 -0
  9. package/dist/types/ChainIterator.d.ts.map +1 -0
  10. package/dist/types/ChainIteratorEventData.d.ts +11 -0
  11. package/dist/types/ChainIteratorEventData.d.ts.map +1 -0
  12. package/dist/types/OpenTelemetryProviders.d.ts +6 -0
  13. package/dist/types/OpenTelemetryProviders.d.ts.map +1 -0
  14. package/dist/types/chain/ChainServiceCollection.d.ts +35 -0
  15. package/dist/types/chain/ChainServiceCollection.d.ts.map +1 -0
  16. package/dist/types/chain/Initializable.d.ts +3 -0
  17. package/dist/types/chain/Initializable.d.ts.map +1 -0
  18. package/dist/types/chain/index.d.ts +3 -0
  19. package/dist/types/chain/index.d.ts.map +1 -0
  20. package/dist/types/ethereum.d.ts +11 -0
  21. package/dist/types/ethereum.d.ts.map +1 -0
  22. package/dist/types/index.d.ts +13 -1
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/instances/BoundWitness.d.ts +9 -0
  25. package/dist/types/instances/BoundWitness.d.ts.map +1 -0
  26. package/dist/types/instances/Data.d.ts +4 -0
  27. package/dist/types/instances/Data.d.ts.map +1 -0
  28. package/dist/types/instances/Fees.d.ts +8 -0
  29. package/dist/types/instances/Fees.d.ts.map +1 -0
  30. package/dist/types/instances/HydratedBoundWitness.d.ts +10 -0
  31. package/dist/types/instances/HydratedBoundWitness.d.ts.map +1 -0
  32. package/dist/types/instances/Object.d.ts +5 -0
  33. package/dist/types/instances/Object.d.ts.map +1 -0
  34. package/dist/types/instances/Payload.d.ts +6 -0
  35. package/dist/types/instances/Payload.d.ts.map +1 -0
  36. package/dist/types/instances/Signature.d.ts +8 -0
  37. package/dist/types/instances/Signature.d.ts.map +1 -0
  38. package/dist/types/instances/block/BlockFields.d.ts +9 -0
  39. package/dist/types/instances/block/BlockFields.d.ts.map +1 -0
  40. package/dist/types/instances/block/HydratedBlock.d.ts +8 -0
  41. package/dist/types/instances/block/HydratedBlock.d.ts.map +1 -0
  42. package/dist/types/instances/block/SignedHydratedBlock.d.ts +6 -0
  43. package/dist/types/instances/block/SignedHydratedBlock.d.ts.map +1 -0
  44. package/dist/types/instances/block/index.d.ts +3 -0
  45. package/dist/types/instances/block/index.d.ts.map +1 -0
  46. package/dist/types/instances/index.d.ts +10 -0
  47. package/dist/types/instances/index.d.ts.map +1 -0
  48. package/dist/types/instances/modifiers/Signed.d.ts +7 -0
  49. package/dist/types/instances/modifiers/Signed.d.ts.map +1 -0
  50. package/dist/types/instances/modifiers/Validatable.d.ts +5 -0
  51. package/dist/types/instances/modifiers/Validatable.d.ts.map +1 -0
  52. package/dist/types/instances/modifiers/index.d.ts +3 -0
  53. package/dist/types/instances/modifiers/index.d.ts.map +1 -0
  54. package/dist/types/instances/transaction/HydratedTransaction.d.ts +6 -0
  55. package/dist/types/instances/transaction/HydratedTransaction.d.ts.map +1 -0
  56. package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts +6 -0
  57. package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts.map +1 -0
  58. package/dist/types/instances/transaction/TransactionFields.d.ts +9 -0
  59. package/dist/types/instances/transaction/TransactionFields.d.ts.map +1 -0
  60. package/dist/types/instances/transaction/index.d.ts +3 -0
  61. package/dist/types/instances/transaction/index.d.ts.map +1 -0
  62. package/dist/types/payload/elevatable/ChainStakeIntent.d.ts +17 -0
  63. package/dist/types/payload/elevatable/ChainStakeIntent.d.ts.map +1 -0
  64. package/dist/types/payload/elevatable/Executable.d.ts +14 -0
  65. package/dist/types/payload/elevatable/Executable.d.ts.map +1 -0
  66. package/dist/types/payload/elevatable/Hash.d.ts +19 -0
  67. package/dist/types/payload/elevatable/Hash.d.ts.map +1 -0
  68. package/dist/types/payload/elevatable/TransferPayload.d.ts +17 -0
  69. package/dist/types/payload/elevatable/TransferPayload.d.ts.map +1 -0
  70. package/dist/types/payload/elevatable/index.d.ts +5 -0
  71. package/dist/types/payload/elevatable/index.d.ts.map +1 -0
  72. package/dist/types/payload/index.d.ts +2 -0
  73. package/dist/types/payload/index.d.ts.map +1 -0
  74. package/dist/types/protocol/AllowedBlockPayload.d.ts +11 -0
  75. package/dist/types/protocol/AllowedBlockPayload.d.ts.map +1 -0
  76. package/dist/types/protocol/BlockBoundWitness.d.ts +32 -0
  77. package/dist/types/protocol/BlockBoundWitness.d.ts.map +1 -0
  78. package/dist/types/protocol/BlockDuration.d.ts +23 -0
  79. package/dist/types/protocol/BlockDuration.d.ts.map +1 -0
  80. package/dist/types/protocol/BlockNumber.d.ts +37 -0
  81. package/dist/types/protocol/BlockNumber.d.ts.map +1 -0
  82. package/dist/types/protocol/ChainAnalyzer.d.ts +9 -0
  83. package/dist/types/protocol/ChainAnalyzer.d.ts.map +1 -0
  84. package/dist/types/protocol/ChainReference.d.ts +11 -0
  85. package/dist/types/protocol/ChainReference.d.ts.map +1 -0
  86. package/dist/types/protocol/HydratedBlock.d.ts +6 -0
  87. package/dist/types/protocol/HydratedBlock.d.ts.map +1 -0
  88. package/dist/types/protocol/HydratedTransaction.d.ts +9 -0
  89. package/dist/types/protocol/HydratedTransaction.d.ts.map +1 -0
  90. package/dist/types/protocol/Issuer.d.ts +5 -0
  91. package/dist/types/protocol/Issuer.d.ts.map +1 -0
  92. package/dist/types/protocol/Steps.d.ts +2 -0
  93. package/dist/types/protocol/Steps.d.ts.map +1 -0
  94. package/dist/types/protocol/TransactionBoundWitness.d.ts +26 -0
  95. package/dist/types/protocol/TransactionBoundWitness.d.ts.map +1 -0
  96. package/dist/types/protocol/TransactionFeesFields.d.ts +35 -0
  97. package/dist/types/protocol/TransactionFeesFields.d.ts.map +1 -0
  98. package/dist/types/protocol/index.d.ts +13 -0
  99. package/dist/types/protocol/index.d.ts.map +1 -0
  100. package/dist/types/provider/XyoProvider.d.ts +18 -0
  101. package/dist/types/provider/XyoProvider.d.ts.map +1 -0
  102. package/dist/types/provider/XyoRunner.d.ts +7 -0
  103. package/dist/types/provider/XyoRunner.d.ts.map +1 -0
  104. package/dist/types/provider/XyoSigner.d.ts +10 -0
  105. package/dist/types/provider/XyoSigner.d.ts.map +1 -0
  106. package/dist/types/provider/XyoStorage.d.ts +16 -0
  107. package/dist/types/provider/XyoStorage.d.ts.map +1 -0
  108. package/dist/types/provider/XyoViewer.d.ts +17 -0
  109. package/dist/types/provider/XyoViewer.d.ts.map +1 -0
  110. package/dist/types/provider/XyoWallet.d.ts +13 -0
  111. package/dist/types/provider/XyoWallet.d.ts.map +1 -0
  112. package/dist/types/provider/index.d.ts +7 -0
  113. package/dist/types/provider/index.d.ts.map +1 -0
  114. package/dist/types/repository/Repository.d.ts +10 -0
  115. package/dist/types/repository/Repository.d.ts.map +1 -0
  116. package/dist/types/repository/TransactionReadRepository.d.ts +5 -0
  117. package/dist/types/repository/TransactionReadRepository.d.ts.map +1 -0
  118. package/dist/types/repository/TransactionRepository.d.ts +10 -0
  119. package/dist/types/repository/TransactionRepository.d.ts.map +1 -0
  120. package/dist/types/repository/TransactionRepositoryIterator.d.ts +5 -0
  121. package/dist/types/repository/TransactionRepositoryIterator.d.ts.map +1 -0
  122. package/dist/types/repository/TransactionWriteRepository.d.ts +5 -0
  123. package/dist/types/repository/TransactionWriteRepository.d.ts.map +1 -0
  124. package/dist/types/repository/index.d.ts +6 -0
  125. package/dist/types/repository/index.d.ts.map +1 -0
  126. package/dist/types/services/AccountBalanceService.d.ts +7 -0
  127. package/dist/types/services/AccountBalanceService.d.ts.map +1 -0
  128. package/dist/types/services/BlockProducer.d.ts +7 -0
  129. package/dist/types/services/BlockProducer.d.ts.map +1 -0
  130. package/dist/types/services/BlockReward.d.ts +6 -0
  131. package/dist/types/services/BlockReward.d.ts.map +1 -0
  132. package/dist/types/services/Chain/ChainContractViewer.d.ts +12 -0
  133. package/dist/types/services/Chain/ChainContractViewer.d.ts.map +1 -0
  134. package/dist/types/services/Chain/ChainIdentification.d.ts +14 -0
  135. package/dist/types/services/Chain/ChainIdentification.d.ts.map +1 -0
  136. package/dist/types/services/Chain/ChainInformation.d.ts +12 -0
  137. package/dist/types/services/Chain/ChainInformation.d.ts.map +1 -0
  138. package/dist/types/services/Chain/ChainService.d.ts +8 -0
  139. package/dist/types/services/Chain/ChainService.d.ts.map +1 -0
  140. package/dist/types/services/Chain/ChainStakeViewer.d.ts +10 -0
  141. package/dist/types/services/Chain/ChainStakeViewer.d.ts.map +1 -0
  142. package/dist/types/services/Chain/ChainStaker.d.ts +6 -0
  143. package/dist/types/services/Chain/ChainStaker.d.ts.map +1 -0
  144. package/dist/types/services/Chain/index.d.ts +7 -0
  145. package/dist/types/services/Chain/index.d.ts.map +1 -0
  146. package/dist/types/services/Election.d.ts +11 -0
  147. package/dist/types/services/Election.d.ts.map +1 -0
  148. package/dist/types/services/Params.d.ts +9 -0
  149. package/dist/types/services/Params.d.ts.map +1 -0
  150. package/dist/types/services/PendingTransactionsService.d.ts +7 -0
  151. package/dist/types/services/PendingTransactionsService.d.ts.map +1 -0
  152. package/dist/types/services/Service.d.ts +9 -0
  153. package/dist/types/services/Service.d.ts.map +1 -0
  154. package/dist/types/services/index.d.ts +10 -0
  155. package/dist/types/services/index.d.ts.map +1 -0
  156. package/dist/types/services/stakeIntent/ChainIndexingServiceStateSchema.d.ts +39 -0
  157. package/dist/types/services/stakeIntent/ChainIndexingServiceStateSchema.d.ts.map +1 -0
  158. package/dist/types/services/stakeIntent/StakeIntentService.d.ts +24 -0
  159. package/dist/types/services/stakeIntent/StakeIntentService.d.ts.map +1 -0
  160. package/dist/types/services/stakeIntent/index.d.ts +3 -0
  161. package/dist/types/services/stakeIntent/index.d.ts.map +1 -0
  162. package/dist/types/validation/block/BlockValidationFunction.d.ts +5 -0
  163. package/dist/types/validation/block/BlockValidationFunction.d.ts.map +1 -0
  164. package/dist/types/validation/block/HydratedBlockStateValidationFunction.d.ts +13 -0
  165. package/dist/types/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -0
  166. package/dist/types/validation/block/HydratedBlockValidationFunction.d.ts +11 -0
  167. package/dist/types/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -0
  168. package/dist/types/validation/block/index.d.ts +4 -0
  169. package/dist/types/validation/block/index.d.ts.map +1 -0
  170. package/dist/types/validation/boundwitness/BoundWitnessValidationFunction.d.ts +4 -0
  171. package/dist/types/validation/boundwitness/BoundWitnessValidationFunction.d.ts.map +1 -0
  172. package/dist/types/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts +6 -0
  173. package/dist/types/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts.map +1 -0
  174. package/dist/types/validation/boundwitness/index.d.ts +3 -0
  175. package/dist/types/validation/boundwitness/index.d.ts.map +1 -0
  176. package/dist/types/validation/index.d.ts +5 -0
  177. package/dist/types/validation/index.d.ts.map +1 -0
  178. package/dist/types/validation/payload/InBlockPayloadValidationFunction.d.ts +5 -0
  179. package/dist/types/validation/payload/InBlockPayloadValidationFunction.d.ts.map +1 -0
  180. package/dist/types/validation/payload/index.d.ts +2 -0
  181. package/dist/types/validation/payload/index.d.ts.map +1 -0
  182. package/dist/types/validation/transaction/HydratedTransactionStateValidationFunction.d.ts +13 -0
  183. package/dist/types/validation/transaction/HydratedTransactionStateValidationFunction.d.ts.map +1 -0
  184. package/dist/types/validation/transaction/HydratedTransactionValidationFunction.d.ts +12 -0
  185. package/dist/types/validation/transaction/HydratedTransactionValidationFunction.d.ts.map +1 -0
  186. package/dist/types/validation/transaction/index.d.ts +3 -0
  187. package/dist/types/validation/transaction/index.d.ts.map +1 -0
  188. package/documents/proof-of-perfect/proof-of-perfect-draft.log +741 -0
  189. package/documents/proof-of-perfect/proof-of-perfect-draft.pdf +0 -0
  190. package/documents/proof-of-perfect/proof-of-perfect-draft.tex +311 -0
  191. package/documents/xyol1-white-paper/white-paper-draft.log +547 -0
  192. package/documents/xyol1-white-paper/white-paper-draft.pdf +0 -0
  193. package/documents/xyol1-white-paper/white-paper-draft.tex +799 -0
  194. package/eslint.config.mjs +35 -0
  195. package/knip.config.ts +1 -1
  196. package/knip.log +491 -0
  197. package/package.json +32 -20
  198. package/src/Addressable.ts +6 -0
  199. package/src/ChainIterator.ts +29 -0
  200. package/src/ChainIteratorEventData.ts +11 -0
  201. package/src/OpenTelemetryProviders.ts +6 -0
  202. package/src/chain/ChainServiceCollection.ts +41 -0
  203. package/src/chain/Initializable.ts +3 -0
  204. package/src/chain/index.ts +2 -0
  205. package/src/ethereum.ts +26 -0
  206. package/src/index.ts +13 -1
  207. package/src/instances/BoundWitness.ts +13 -0
  208. package/src/instances/Data.ts +3 -0
  209. package/src/instances/Fees.ts +8 -0
  210. package/src/instances/HydratedBoundWitness.ts +15 -0
  211. package/src/instances/Object.ts +5 -0
  212. package/src/instances/Payload.ts +6 -0
  213. package/src/instances/Signature.ts +11 -0
  214. package/src/instances/block/BlockFields.ts +13 -0
  215. package/src/instances/block/HydratedBlock.ts +9 -0
  216. package/src/instances/block/SignedHydratedBlock.ts +5 -0
  217. package/src/instances/block/index.ts +2 -0
  218. package/src/instances/index.ts +9 -0
  219. package/src/instances/modifiers/Signed.ts +8 -0
  220. package/src/instances/modifiers/Validatable.ts +5 -0
  221. package/src/instances/modifiers/index.ts +2 -0
  222. package/src/instances/transaction/HydratedTransaction.ts +8 -0
  223. package/src/instances/transaction/SignedHydratedTransaction.ts +7 -0
  224. package/src/instances/transaction/TransactionFields.ts +12 -0
  225. package/src/instances/transaction/index.ts +2 -0
  226. package/src/payload/elevatable/ChainStakeIntent.ts +32 -0
  227. package/src/payload/elevatable/Executable.ts +29 -0
  228. package/src/payload/elevatable/Hash.ts +19 -0
  229. package/src/payload/elevatable/TransferPayload.ts +26 -0
  230. package/src/payload/elevatable/index.ts +4 -0
  231. package/src/payload/index.ts +1 -0
  232. package/src/protocol/AllowedBlockPayload.ts +29 -0
  233. package/src/protocol/BlockBoundWitness.ts +43 -0
  234. package/src/protocol/BlockDuration.ts +23 -0
  235. package/src/protocol/BlockNumber.ts +39 -0
  236. package/src/protocol/ChainAnalyzer.ts +10 -0
  237. package/src/protocol/ChainReference.ts +11 -0
  238. package/src/protocol/HydratedBlock.ts +8 -0
  239. package/src/protocol/HydratedTransaction.ts +19 -0
  240. package/src/protocol/Issuer.ts +5 -0
  241. package/src/protocol/Steps.ts +1 -0
  242. package/src/protocol/TransactionBoundWitness.ts +51 -0
  243. package/src/protocol/TransactionFeesFields.ts +38 -0
  244. package/src/protocol/index.ts +12 -0
  245. package/src/provider/XyoProvider.ts +29 -0
  246. package/src/provider/XyoRunner.ts +8 -0
  247. package/src/provider/XyoSigner.ts +21 -0
  248. package/src/provider/XyoStorage.ts +17 -0
  249. package/src/provider/XyoViewer.ts +18 -0
  250. package/src/provider/XyoWallet.ts +15 -0
  251. package/src/provider/index.ts +6 -0
  252. package/src/repository/Repository.ts +11 -0
  253. package/src/repository/TransactionReadRepository.ts +4 -0
  254. package/src/repository/TransactionRepository.ts +9 -0
  255. package/src/repository/TransactionRepositoryIterator.ts +4 -0
  256. package/src/repository/TransactionWriteRepository.ts +4 -0
  257. package/src/repository/index.ts +5 -0
  258. package/src/services/AccountBalanceService.ts +9 -0
  259. package/src/services/BlockProducer.ts +7 -0
  260. package/src/services/BlockReward.ts +7 -0
  261. package/src/services/Chain/ChainContractViewer.ts +12 -0
  262. package/src/services/Chain/ChainIdentification.ts +17 -0
  263. package/src/services/Chain/ChainInformation.ts +20 -0
  264. package/src/services/Chain/ChainService.ts +7 -0
  265. package/src/services/Chain/ChainStakeViewer.ts +10 -0
  266. package/src/services/Chain/ChainStaker.ts +5 -0
  267. package/src/services/Chain/index.ts +6 -0
  268. package/src/services/Election.ts +14 -0
  269. package/src/services/Params.ts +11 -0
  270. package/src/services/PendingTransactionsService.ts +8 -0
  271. package/src/services/Service.ts +10 -0
  272. package/src/services/index.ts +9 -0
  273. package/src/services/stakeIntent/ChainIndexingServiceStateSchema.ts +46 -0
  274. package/src/services/stakeIntent/StakeIntentService.ts +28 -0
  275. package/src/services/stakeIntent/index.ts +2 -0
  276. package/src/validation/block/BlockValidationFunction.ts +9 -0
  277. package/src/validation/block/HydratedBlockStateValidationFunction.ts +18 -0
  278. package/src/validation/block/HydratedBlockValidationFunction.ts +15 -0
  279. package/src/validation/block/index.ts +3 -0
  280. package/src/validation/boundwitness/BoundWitnessValidationFunction.ts +6 -0
  281. package/src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts +10 -0
  282. package/src/validation/boundwitness/index.ts +2 -0
  283. package/src/validation/index.ts +4 -0
  284. package/src/validation/payload/InBlockPayloadValidationFunction.ts +8 -0
  285. package/src/validation/payload/index.ts +1 -0
  286. package/src/validation/transaction/HydratedTransactionStateValidationFunction.ts +18 -0
  287. package/src/validation/transaction/HydratedTransactionValidationFunction.ts +16 -0
  288. package/src/validation/transaction/index.ts +2 -0
  289. package/typedoc.json +5 -0
  290. package/vite.config.ts +30 -0
  291. package/vitest.config.ts +14 -0
  292. package/vitest.teardown.ts +10 -0
  293. package/vitest.workspace.ts +5 -0
  294. package/xy.config.ts +2 -2
  295. package/dist/types/transaction/buildTransaction.d.ts +0 -7
  296. package/dist/types/transaction/buildTransaction.d.ts.map +0 -1
  297. package/dist/types/transaction/hydrateTransaction.d.ts +0 -11
  298. package/dist/types/transaction/hydrateTransaction.d.ts.map +0 -1
  299. package/dist/types/transaction/index.d.ts +0 -3
  300. package/dist/types/transaction/index.d.ts.map +0 -1
  301. package/src/transaction/buildTransaction.ts +0 -61
  302. package/src/transaction/hydrateTransaction.ts +0 -73
  303. package/src/transaction/index.ts +0 -2
@@ -0,0 +1,799 @@
1
+ % Preamble
2
+ % ---
3
+ \documentclass{article}
4
+
5
+ % Packages
6
+ % ---
7
+ \usepackage{amsmath} % Advanced math typesetting
8
+ \usepackage[utf8]{inputenc} % Unicode support (Umlauts etc.)
9
+ \usepackage{hyperref} % Add a link to your document
10
+ \hypersetup{
11
+ colorlinks=true,
12
+ linkcolor=black,
13
+ filecolor=black,
14
+ citecolor=blue,
15
+ urlcolor=blue,
16
+ }
17
+ \usepackage{graphicx} % Add pictures to your document
18
+ \usepackage{listings} % Source code formatting and highlighting
19
+ \usepackage{framed} % Source code formatting and highlighting
20
+ \usepackage{appendix} % Source code formatting and highlighting
21
+ \usepackage{csquotes} % Pretty quotes
22
+ \usepackage[letterpaper, portrait, margin=1in]{geometry}
23
+ \usepackage{multicol}
24
+ \usepackage{parskip}
25
+ \usepackage{ragged2e}
26
+ \usepackage{tabularx}
27
+ \addtolength{\skip\footins}{10pt}
28
+ \usepackage{indentfirst}
29
+ \graphicspath{ {images/} }
30
+
31
+ \title {XYO Layer One Blockchain White Paper}
32
+
33
+
34
+ \author{
35
+ Arie Trouw,
36
+ Joel Carter,
37
+ Matt Jones,
38
+ Jordan Trouw
39
+ \thanks{XYO - \texttt{arie.trouw@xyo.network, joel.carter@xyo.network, matt.jones@xyo.network, jordan.trouw@xyo.network}}
40
+ }
41
+
42
+ \date{March 2025}
43
+
44
+ \begin{document}
45
+ \maketitle
46
+
47
+ \begin{center}
48
+ \line(1,0){50}
49
+ \end{center}
50
+
51
+ %Abstract Section
52
+ \begin{abstract}
53
+ XYO Layer One Blockchain is the first blockchain designed for high-throughput data, which allows for a truly scalable ecosystem while maintaining speed and efficiency. Using the XYO Layer One Protocol, the blockchain addresses multiple existing limitations in the current blockchain landscape, namely issues with data sovereignty and cryptographic bloat through features such as Lookback Windowing, Step Hashes, Rollups, Proof of Perfect, Framing Cursors, BoundWitness Trees, Bearer Proofs and Proof of Participation. Through XYO Layer One Blockchain, separate XYO Proof of Origin Chains can be bound into a decentralized, consensus driven, shared state. This shared chain is built and managed by a network of staked nodes that follow this protocol.
54
+ \begin{center}
55
+ \line(1,0){50}
56
+ \end{center}
57
+ \end{abstract}
58
+
59
+ %Introduction
60
+ \section{Why XYO Layer One Blockchain is Needed}
61
+ XYO Layer One, both a blockchain and a protocol, addresses one of the biggest
62
+ issues with nearly every blockchain in the current landscape: \textbf{the
63
+ ever-increasing size of the chain itself.} Nearly all existing layer one
64
+ blockchains are predicated on a single shared state between every client,
65
+ encompassing the current head of the chain to its genesis block. In this
66
+ structure, \textbf{every requested blockchain value} requires the history of
67
+ the entire chain, which gets increasingly larger as the blockchain is built.
68
+
69
+ \subsection{The Consequences of Blockchain Bloat}
70
+ Multiple structural and integrity issues arise as a result of increasing block
71
+ sizes, including high requirements for blockchain compute, slower block speeds,
72
+ increased environmental toll, network latency, and difficulty with historical
73
+ data integrity. The rising computational demands for engaging with blockchain
74
+ technology are making it inaccessible to everyday individuals and independent
75
+ developers. Instead, participation is increasingly concentrated among large
76
+ corporations and nation-states that can afford to use off-chain fiat resources
77
+ to seize control of blockchain ecosystems—undermining the core principles of
78
+ decentralization and equal access.
79
+
80
+ \subsection{The XYO Layer One Solution}
81
+ XYO Layer One blockchain is designed to provide a single consensus-driven Proof
82
+ of Origin chain that \textbf{does not require a full record of the entire chain
83
+ for each block}. Using Lookback Windowing, Step Hashes, ZKRollups, Framing
84
+ Cursors, Merkles, and Bearer Proofs, the size of the working set required to
85
+ determine the state of the block chain is reduced substantially and does not
86
+ grow over time. \textbf{This solves the storage problem that makes most layer
87
+ one block chains unusable for many data-reliant applications, such as DePIN
88
+ (Decentralized Physical Infrastructure Networks), Artificial Intelligence,
89
+ Machine Learning, Telecommunications, Healthcare, Finance, Logistics, and
90
+ more.}
91
+
92
+ \begin{center}
93
+ \line(1,0){50}
94
+ \end{center}
95
+
96
+ \section{Key Concepts in XYO Layer One Blockchain}
97
+ XYO Layer One introduces several novel concepts and uses some existing key concepts to
98
+ address the challenges of blockchain bloat, scalability and performance.
99
+
100
+ \begin{itemize}
101
+ \item \textbf{Lookback Window}: Reduces the amount of historical data that needs to be maintained and analyzed for each block.
102
+ \item \textbf{Step Hashes}: Allows for efficient grouping and retrieval of blocks, improving data access speed and reducing storage requirements.
103
+ \item \textbf{Rollups}: Bundles multiple transactions into a single proof, reducing the amount of data stored on-chain and improving scalability.
104
+ \item \textbf{Proof of Perfect}: Algorithmic proof that ranks items such as chain heads in order of perfectness.
105
+ \item \textbf{Framing Cursors}: Optimizes data retrieval by segmenting the blockchain into manageable sections.
106
+ \item \textbf{BoundWitness Trees}: Organizes transactions into a tree structure for efficient verification and scalability.
107
+ \item \textbf{Bearer Proofs}: Provides cryptographic proof of data inclusion in a set without needing the entire containing set.
108
+ \item \textbf{Proof of Participation}: Ensures that actors who perform tasks without direct evidence can still be rewarded.
109
+ \end{itemize}
110
+
111
+ \begin{center}
112
+ \line(1,0){50}
113
+ \end{center}
114
+
115
+ \section{Building Off the Original XYO Protocol}
116
+ The original XYO Proof of Origin Protocol was designed to provide immutability
117
+ and data validation to singular data sources, resulting in many sovereign but
118
+ isolated individual XYO Proof of Origin chains that lacked a shared state.
119
+ Individual chains could occasionally become “entangled”, whenever the chains
120
+ co-signed a shared Bound Witness, but there was no representation of the
121
+ collective state across multiple XYO Proof of Origin Chains as a whole.
122
+
123
+ The new XYO Layer One Protocol defines a way to create a "Chain of Chains" from
124
+ individual XYO Proof of Origin Chains allowing for a single collective state
125
+ amongst participants. Through numerous novel features, the Protocol opens the
126
+ door for a public XYO Layer One Blockchain. The XYO Layer One Blockchain
127
+ ensures verifiable, collectively-immutable state from individually sovereign
128
+ data sources.
129
+
130
+ Using the XYO Layer One Protocol, additional features become available in the
131
+ XYO Layer One Blockchain:
132
+ \begin{enumerate}
133
+ \item \textbf{Staking of the XYO Token} for participation rewards
134
+ \item \textbf{An inflationary native token} for gas and payments of services and data in real time
135
+ \item \textbf{A consensus-driven shared reality} that unifies the isolated Proof of Origin chains that exist in XYO today
136
+ \end{enumerate}
137
+
138
+ \begin{center}
139
+ \line(1,0){50}
140
+ \end{center}
141
+
142
+ \section{XYO Layer One Blockchain Features}
143
+ The features of XYO Layer One bring significant advancements in scalability,
144
+ speed, and efficiency, addressing common challenges faced by traditional
145
+ blockchain systems. \textbf{Lookback Windowing} optimizes performance by
146
+ focusing on the most recent transactions, reducing storage needs and improving
147
+ transaction speeds while storing older transactions in a backup system for easy
148
+ access. \textbf{Step Hashes} enhance data retrieval by grouping blocks and
149
+ assigning an umbrella hash to each group, enabling faster searches and more
150
+ efficient access to blockchain data. \textbf{ZK-Rollups} further elevate
151
+ scalability by bundling off-chain transactions into batches and submitting
152
+ summarized validity proofs to the blockchain, reducing data storage and
153
+ computational demands while ensuring privacy and security. The system also uses
154
+ Framing Cursors, Merkle Trees, and Bearer Proofs to improve efficiency.
155
+ Together, these features enable XYO Layer One to provide a more responsive,
156
+ efficient, and scalable blockchain solution suitable for data-intensive
157
+ industries like AI, Machine Learning, and DePIN.
158
+
159
+ \subsection{Lookback Windowing}
160
+ In XYO Layer One, block building, validating and indexing become more efficient
161
+ through the concept of \textbf{“Lookback Windowing”}. Lookback Windowing refers
162
+ to the narrowed amount of previous blocks across which block builders and
163
+ validators need to maintain to operate within the network.
164
+
165
+ Most blockchains have a Lookback Window equal to the length of the entire chain
166
+ — in order to analyze the chain for data, a node must scan the full length of
167
+ the chain. Although this allows for immediate access of all historical data, it
168
+ comes at the expense of increasingly increasing compute and storage
169
+ requirements. With the precondition that each node maintains and analyzes a
170
+ complete record of the entire blockchain, the requirements for network
171
+ participation grow in an ever increasing fashion. This has led to an erosion of
172
+ the decentralization for blockchains that have been operational long enough to
173
+ realize this effect, as network participation by enthusiasts has been
174
+ superseded by the few participants who can afford high-end hardware, and
175
+ network indexing has been outsourced to centralized Web2 services.
176
+
177
+ XYO Layer One contains an advanced Lookback Window algorithm that allows for
178
+ variable Lookback Windows. This feature optimizes blockchain operations by
179
+ focusing on the most recent N transactions—such as the last 10,000 or 1
180
+ million—actively used to maintain the system. Each node is only required to
181
+ store these recent transactions, significantly reducing storage requirements
182
+ and boosting transaction speeds. Older transactions are stored in a backup
183
+ system, ensuring minimal disruption to performance while still allowing easy
184
+ access when needed. This approach contrasts with traditional blockchains like
185
+ Bitcoin and Ethereum, where nodes must store the entire blockchain history as
186
+ well as maintain and index historical global state such as UTXOs or Address
187
+ Balance, leading to ever increasing hardware requirements and inefficiencies as
188
+ the network grows. XYO’s Lookback Window ensures scalability and speed,
189
+ allowing for faster processing and more efficient use of resources as the
190
+ blockchain scales, setting the foundation for a more robust and responsive
191
+ decentralized ecosystem.
192
+
193
+ \subsection{Step Hash}
194
+ Step Hashes in the XYO Layer One Blockchain are a unique innovation that
195
+ significantly improves the efficiency of locating data contained within the
196
+ blockchain. Unlike traditional blockchains, which can sometimes require a full
197
+ walk of the entire chain to verify included data, Step Hashes group blocks
198
+ together into multiple segments of progressively larger sizes. The varying
199
+ group sizes allow for faster searches, as you can first check the group hashes
200
+ and then zoom into specific blocks within that group. Instead of checking
201
+ blocks one-by-one, Step Hashes enable giant steps through the blockchain,
202
+ making it easier and more efficient to access the oldest parts of the chain.
203
+ This innovation enhances both speed and scalability, setting XYO Layer One
204
+ apart from other blockchain systems.
205
+
206
+ \subsection{Rollups}
207
+ Rollups are a crucial feature for enhancing the scalability and performance of
208
+ the XYO Layer One blockchain, particularly in industries requiring high volumes
209
+ of data processing such as AI, Machine Learning, and DePIN (Decentralized
210
+ Physical Infrastructure Networks).
211
+
212
+ Instead of processing every transaction directly on the blockchain, Rollups
213
+ bundle multiple transactions together off-chain and then submit a summarized
214
+ proof of these transactions to the main blockchain. This proof ensures that the
215
+ transactions are valid and optionally without revealing sensitive data. By
216
+ doing this, Rollups help reduce the amount of data stored on the blockchain.
217
+ This approach significantly reduces the computational load and storage
218
+ requirements of the base layer. The key features of Rollups in XYO Layer One
219
+ include:
220
+ \begin{itemize}
221
+ \item \textbf{Off-chain transaction bundling:} Multiple transactions are processed off-chain and bundled into a single batch, reducing the number of individual transactions that need to be processed on-chain.
222
+ \item \textbf{Zero-Knowledge Proofs (ZKPs):} These cryptographic proofs are used to verify the correctness of off-chain transactions without revealing the underlying data, ensuring both privacy and security.
223
+ \item \textbf{Efficiency and reduced transaction costs:} By submitting only proofs to the blockchain, Rollups minimize on-chain data, improving throughput and lowering transaction costs.
224
+ \end{itemize}
225
+
226
+ \subsection{Framing Cursors}
227
+ Framing Cursors are a key feature in the XYO Layer One Blockchain that optimize
228
+ the process of accessing and validating data across large-scale decentralized
229
+ networks using Step Hashes. They act as pointers or markers that help navigate
230
+ the blockchain more efficiently by segmenting the blockchain into manageable
231
+ “frames” or sections. This allows for targeted data retrieval rather than
232
+ performing a full scan of the entire blockchain. By using Framing Cursors, XYO
233
+ reduces the computational load required to find relevant data, enabling faster
234
+ query responses and improving overall blockchain performance. This mechanism is
235
+ particularly useful as the network scales, ensuring that data retrieval remains
236
+ efficient even as the blockchain grows in size.
237
+
238
+ \subsection{BoundWitness Trees}
239
+ BoundWitness Trees are a foundational component of XYO Layer One, enhancing the
240
+ efficiency and integrity of the blockchain. By organizing transactions into a
241
+ tree structure, where each leaf node contains a hash of a transaction and
242
+ non-leaf nodes aggregate these hashes, BoundWitness Trees enable quick and
243
+ efficient data verification. In XYO, this structure improves scalability by
244
+ allowing nodes to verify large datasets with minimal computation. Only the
245
+ BoundWitness root needs to be stored and compared, reducing the amount of data
246
+ that must be processed for transaction validation. This enables faster
247
+ transaction verifications and significantly reduces the storage and
248
+ computational load on the network, making the XYO Layer One Blockchain both
249
+ more efficient and scalable.
250
+
251
+ \subsection{Bearer Proofs}
252
+ Bearer Proofs play a crucial role in enhancing data integrity and verification
253
+ within the XYO Layer One Blockchain. This cryptographic proof allows for the
254
+ verification of ownership and authenticity of data without exposing the data
255
+ itself. Bearer Proofs are particularly useful in ensuring that the information
256
+ being transmitted or stored on the blockchain is legitimate and unaltered. In
257
+ XYO, Bearer Proofs enable more efficient data validation by providing a secure
258
+ and lightweight way to confirm data ownership, thus reducing the need for full
259
+ access to the underlying data. This leads to faster, more secure transactions,
260
+ contributing to both the scalability and security of the XYO network.
261
+
262
+ \section{XL1 Token}
263
+
264
+ \subsection{Introduction to XL1 Token}
265
+ The XL1 Token is the native currency of the XYO Layer One blockchain,
266
+ primarily used for transaction fees, gas fees, and incentivizing network
267
+ participants. XL1 plays a crucial role in ensuring the scalability and
268
+ efficiency of the XYO ecosystem by enabling transactions, rewarding
269
+ participants, and securing the network through staking.
270
+
271
+ \subsection{Purpose}
272
+ The XL1 Token serves multiple functions within the XYO Layer One Blockchain:
273
+
274
+ \begin{itemize}
275
+ \item \textbf{Transaction Fees}: XL1 is used to pay for transaction processing, covering the computational costs of transactions and services.
276
+ \item \textbf{Gas Fees}: XL1 powers blockchain operations, particularly by covering the gas required for the execution of smart contracts and validation of transactions.
277
+ \item \textbf{Incentives}: XL1 is used to reward block producers, validators, and other network participants for their contribution to the network.
278
+ \end{itemize}
279
+
280
+ \subsection{Usage}
281
+ XL1 is used as a block reward mechanism for incentivization within XYO Layer
282
+ One Blockchain. It can also be transferred between addresses for:
283
+ \begin{itemize}
284
+ \item \textbf{Payments} – Used for services like storage and compute.
285
+ \item \textbf{Gifts} – Sent without contractual obligations.
286
+ \end{itemize}
287
+
288
+ \subsubsection{Lookback Window Rule}
289
+ To prevent balance inconsistencies, XL1 transactions must be within the
290
+ \textbf{current lookback window} of the producer validating the transaction. If
291
+ an address has XL1 outside the window, it must refresh its balance before
292
+ transferring.
293
+
294
+ \subsection{Inflationary XL1 and Deflationary XYO}
295
+ XYO Layer One utilizes two distinct tokens: XYO and XL1. Each serves a
296
+ complementary purpose to enhance scalability, incentivization, and governance.
297
+ XYO is a deflationary token with a fixed supply, designed to facilitate
298
+ governance decisions within the network. Its limited supply ensures stability
299
+ and security for key network operations. In contrast, XL1 is an inflationary
300
+ token, minted to reward network participants and support high-throughput
301
+ transactions. This dual-token structure enables the XYO network to balance the
302
+ need for stable governance and ownership with the flexibility required to
303
+ incentivize network growth and ensure efficient transaction processing.
304
+ Together, XYO and XL1 optimize both the operational scalability and the
305
+ long-term sustainability of the ecosystem.
306
+
307
+ \section{Incentivizing Behavior with XL1}
308
+ XL1’s tokenomics\footnote{See XL1 Tokenomics in Section 9} are structured to
309
+ encourage \textbf{positive network behavior} and penalize malicious actions.
310
+
311
+ By structuring the network's incentive mechanisms effectively, XYO Layer One
312
+ ensures that participation aligns with the overarching goals of security,
313
+ efficiency, and decentralization.
314
+
315
+ \subsection{Methods of Influence}
316
+ \begin{itemize}
317
+ \item \textbf{Minting}: Reward an actor with newly minted XL1 as a reward for a behavior, such as producing blocks.
318
+ \item \textbf{Burning}: Punish an actor by burning some of their tokens for a negative behavior, such as submitting a transaction that fails block producer validation.
319
+ \item \textbf{Transferring}: Take from one actor and give to another actor for a behavior that inappropriately inflicted a cost on the other actor. This is similar to Burning, except there is a complete or partial beneficiary of the tokens.
320
+ \end{itemize}
321
+
322
+ \subsection{Encourage}
323
+ \begin{itemize}
324
+ \item Efficient and valid block production
325
+ \item Continuous and rapid building of useful blocks
326
+ \item Fair transaction inclusion based on priority
327
+ \item Sustainable blockchain growth
328
+ \item Appropriate gas fee for transaction inclusion
329
+ \item Initial creation and expansion of the blockchain
330
+ \end{itemize}
331
+
332
+ \subsection{Discourage}
333
+ \begin{itemize}
334
+ \item Invalid transactions from clients
335
+ \item Block producers including invalid blocks
336
+ \end{itemize}
337
+
338
+ \section{Node Structure}
339
+ The XYO Layer One Blockchain is run by a set of XYO Nodes that comply with the
340
+ XYO Protocol to achieve the desired functionality. \textbf{Block Producer
341
+ Nodes} construct blocks and data payloads from a transaction queue,
342
+ \textbf{Block Validator Nodes} confirm the created blocks are valid, and
343
+ \textbf{Efficiency Nodes} improve Producer and Validator efficiency with a
344
+ maintained list of balances as a reference.
345
+
346
+ \subsection{Block Producer Nodes}
347
+ Block Producer Nodes produce blocks from transactions that are in the shared
348
+ transaction queues. It is the producer’s responsibility to validate the
349
+ transactions that are being included in the block (protocol validation). The
350
+ produced block’s payload hashes include the hash of each included transaction
351
+ and the hash of every elevated payload directly in the transaction.
352
+
353
+ \subsection{Block Validator Nodes}
354
+ Block Validators are responsible for confirming that the blocks created are
355
+ valid before the slashing window for those blocks expires. In the case that an
356
+ invalid block is discovered, the validator proposes a course of action
357
+ including a repair and slash. In all the cases of accepted actions, both the
358
+ action and original state remain in the blockchain for future transparency.
359
+
360
+ \begin{itemize}
361
+ \item \textbf{Rollback Repair}: A rollback repair is the simplest, but also the most disruptive repair. This involves resetting the head of the chain back to the block before the invalid block was produced.
362
+ \item \textbf{Replacement Repair}: A replacement repair is a new block that supersedes the previous block. This causes state aggregators to use the new block in place of the original block. The resulting state, to be valid, must result in the aggregate state that would have existed if the byzantine block was properly processed.
363
+ \end{itemize}
364
+
365
+ \subsection{Efficiency Nodes}
366
+ Efficiency Nodes improve the efficiency of Block Producers and Block Validators
367
+ by maintaining a streamlined reference for Block Producers and Block
368
+ Validators. For example, an Efficiency Node for balances might keep a reference
369
+ related to XL1 transfers and gas payments. By maintaining an optimized
370
+ reference for account balances, these nodes improve transaction efficiency and
371
+ prevent invalid transfers from being included in blocks.
372
+
373
+ \section{Block Structure}
374
+
375
+ \subsection{Producer Payloads}
376
+ Producer payloads are payloads that are allowed to be included in a block
377
+ without being inside a transaction. They are always generated by the block
378
+ producer and will be fully validated when determining chain state.
379
+
380
+ \begin{itemize}
381
+ \item \textbf{Inclusion Criteria}: For a transaction to be included in a block by a block builder, it needs to be first order validated. This means that all payloads in the transaction bound witness must be available (hash matches provided payload) and pass full validation.
382
+ \item \textbf{Voting}: Block Producers can participate in \textbf{Producer Voting} to vote on adopting a protocol update. This is done via the \texttt{network.xyo.vote} payload.
383
+ \end{itemize}
384
+ \textbf{Producer Payload Schemas}
385
+ \begin{itemize}
386
+ \item \texttt{network.xyo.transfer}
387
+ \item \texttt{network.xyo.chain.stake.intent}
388
+ \item \texttt{network.xyo.chain.claim}
389
+ \item \texttt{network.xyo.chain.vote}
390
+ \end{itemize}
391
+
392
+ \subsection{Client Fees}
393
+ Client fees are any funds provided by the client when submitting a transaction
394
+ to be included in a block.
395
+
396
+ \subsubsection{Base Fee}
397
+ Amount of XL1 that needs to be provided for a transaction to enter the pending
398
+ transaction pool. These XL1 are always forfeited, unless the transaction fails
399
+ the initial signature check. In the case that the transaction passes the
400
+ initial signature check but fails protocol validation, the actor who is being
401
+ asked to accept the transaction may claim the base fee by wrapping the invalid
402
+ transaction in a claim transaction. \textbf{100\% of this fee is burned}.
403
+
404
+ \subsubsection{Gas Fee}
405
+ Amount of XL1 that is provided to cover the cost of processing/including the
406
+ transaction by the block producer. This is augmented by the size of the
407
+ transaction (including elevated payloads) and the opcodes processed during
408
+ block building. If the gas is insufficient to cover the calculated cost, then
409
+ it is forfeited and the transaction is not included in the blockchain.
410
+ \textbf{100\% of this fee may be transferred to the producer’s address of
411
+ choice}.
412
+
413
+ \subsubsection{Priority Fee}
414
+ Amount of XL1 that is granted to the block producer to raise the priority of
415
+ the transaction. To determine the priority score, the priority amount is
416
+ divided by the gas amount. When the transaction is included in a block,
417
+ \textbf{100\% of this fee may be transferred to the producer's address of
418
+ choice}.
419
+
420
+ \section{Node Staking}
421
+ Node Staking in XYO Layer One is integral to securing the blockchain. Users can
422
+ stake XYO tokens at any address, participating in the consensus mechanism of
423
+ the network. In return, stakers face both rewards for good behavior and
424
+ penalties for misconduct. If a node performs a Byzantine action\footnote{A
425
+ Byzantine action in blockchain refers to malicious or dishonest behavior that
426
+ disrupts consensus and the integrity of the system.}, then the stake which was
427
+ provided is slashed.
428
+
429
+ \subsection{Stakers}
430
+ SNode taking actions involve adding, removing, and withdrawing stake. These actions
431
+ are designed to encourage honest participation in XYO Layer One.
432
+ \begin{itemize}
433
+ \item \textbf{Adding Stake}: Stake may be added to an address at any time. That stake becomes active immediately.
434
+ \item \textbf{Removing Stake}: Stake may be fully or partially removed by the initial staker on an address at any time. While the stake becomes inactive immediately, it remains at risk for being slashed until withdrawn.
435
+ \item \textbf{Withdrawing Stake}: Stake may be withdrawn after it has been removed from an address. However, there is a cooldown period that must pass before withdrawing is allowed to allow the stake to be at risk of slashing until the actions of the node that it had staked becomes final. This is usually expressed in relative time for the system that is being used for the staking. In the case of a smart contract, it generally is a fixed number of blocks that must pass before withdrawal is allowed.
436
+ \end{itemize}
437
+ In addition to these actions, the following rules are applied to staking with regards to stake access, rewards, and slashing.
438
+ \begin{itemize}
439
+ \item \textbf{Anyone may stake any address:} This means that any participant in the system can choose to stake tokens on any address (which could be their own or someone else’s) to help secure the network or participate in the staking process.
440
+ \item \textbf{In a rewarding event:} All the stakers are rewarded pro-rata: When the system rewards participants (for example, for good behavior or network contributions), the rewards are distributed proportionally to the amount of stake each participant has contributed. The more tokens someone has staked, the larger their share of the reward.
441
+ \item \textbf{In a slashing event}: all the stakes of a specific address are slashed pro-rata: If a “slashing event”\footnote{Slashing is a counter-incentive designed to punish bad actors in the system who may provide dishonest data or seek to harm and/or hack the network.} occurs, the staked tokens associated with that address are forfeited proportionally. So, if an address has multiple participants staking, their staked amounts will be slashed in proportion to their share.
442
+ \end{itemize}
443
+
444
+ \subsection{Slashing}
445
+ During a slashing event, the staked tokens associated with that address are
446
+ forfeited proportionally. If an address has multiple participants staking,
447
+ their staked amounts will be slashed in proportion to their share. Slashing
448
+ usually occurs due a variety of
449
+ \begin{itemize}
450
+ \item \textbf{Invalid First Order Payloads:} A block producer has included a first order payload that is not valid.
451
+ \item \textbf{Including Invalid Blocks:} A block producer might include a block that violates consensus rules or contains incorrect data.
452
+ \item \textbf{Dishonest Block Validation:} Validators might accept invalid blocks or provide false information in the validation process.
453
+ \item \textbf{Failure to Participate Honestly:} Nodes that fail to properly engage in consensus or verification processes may face slashing.
454
+ \end{itemize}
455
+
456
+ \section{XL1 Tokenomics}
457
+ Block Producers earn XL1 rewards for each successfully completed block in XYO
458
+ Layer One. Each block also contributes a small portion of the rewards to a
459
+ greater "Step Reward Pool", which distributes a portion of the pool as rewards
460
+ at specific block steps. These steps also make up the cadence for XYO Layer
461
+ One's Step Hashing System. As blocks are created, the per-block reward
462
+ decreases\footnote{Refer to the reward calculation algorithm in Appendix A.}
463
+ every 1,000,000 blocks, but the Step Reward Pool grows larger.
464
+
465
+ \subsection{Block Creation Rewards}
466
+ The block reward starts at \textbf{1,000 XL1 per block}, with a minimum of
467
+ \textbf{30 XL1 per block}, decreasing every \textbf{1,000,000 blocks}. For
468
+ each block created, a reward is given to two parties:
469
+ \begin{itemize}
470
+ \item \textbf{Block Producer}: Rewarded XL1 as an incentive for block creation.
471
+ \item \textbf{Step Reward Pool}: Rewarded XL1 for a network-wide incentive pool.
472
+ \end{itemize}
473
+
474
+ \subsection{Genesis Period Reward Distribution}
475
+ The Genesis Period is the first 53 Block Steps (~53M Blocks) of the XYO Layer
476
+ One Blockchain. During this period, the block reward is started at
477
+ \textbf{1,000 XL1 per block} and going down to \textbf{30 XL1 per block}. The
478
+ rewards are distributed as follows:
479
+ \begin{itemize}
480
+ \item \textbf{Total}: 40 Billion XL1 (Approx.)
481
+ \item \textbf{Block and Step Rewards}: 10 Billion XL1 (Approx.)
482
+ \item \textbf{Team \& Advisory}: 10.6 Billion XL1
483
+ \item \textbf{XY Labs Treasury}: 9.4B Billion XL1
484
+ \end{itemize}
485
+
486
+ Total XL1 minted all time will be \textbf{approximately 40 Billion XL1}.
487
+
488
+ \subsection{Transaction Fees}
489
+ XL1 provided by the address submitting a transaction are divided into three
490
+ parts:
491
+ \begin{itemize}
492
+ \item \textbf{Base}: Required for inclusion in a new block.
493
+ \item \textbf{Gas}: Cost of inclusion in a new block.
494
+ \item \textbf{Priority}: Additional XL1 to raise the priority of block inclusion.
495
+ \end{itemize}
496
+
497
+ \subsection{Burning}
498
+ 100\% of Base Fees provided by clients are burned. This deflationary mechanism helps to reduce the overall supply of XL1 over time, contributing to its value. It is expected that there will be an inflection point where the amount of XL1 burned per block exceeds the amount of XL1 generated in a block as rewards.
499
+
500
+ \subsection{Staking}
501
+ There are two types of staking in XYO Layer One: \textbf{General Staking} and \textbf{Node Staking}.
502
+ General Staking is the process of locking up XYO tokens to earn XL1 and Node Staking is directly staking a node to secure that node. Both staking types are done with XYO tokens.
503
+
504
+ All Staking Rewards are taken from the Block Rewards and Step Reward Pools and
505
+ are distributed to the stakers. Staking rewards are distributed pro-rata to the
506
+ amount of XYO staked. Stake is also subject to slashing in the case of
507
+ byzantine behavior by the address that is staked.
508
+
509
+ The only way to participate in the Block and Step Rewards is by staking XYO
510
+ tokens and all the rewards will be paid out in XL1 tokens. This is the primary
511
+ way for XYO token holders to earn XL1 tokens.
512
+
513
+ Liquid staking of XYO is planned for for the future but will not be included in
514
+ the initial phases of the XYO Layer One Blockchain.
515
+
516
+ \section{Block Rewards and Step Rewards}
517
+
518
+ XYO Layer One Blockchain implements two primary reward mechanisms:
519
+ \textbf{Block Rewards} and \textbf{Step Rewards}. While both serve to
520
+ incentivize network participation, they operate differently in terms of
521
+ distribution, frequency, and purpose.
522
+
523
+ \subsection{Calculating Block Rewards and Step Reward Pool}
524
+ The block reward drops every 1,000,000 Blocks (Step Size). Step number for a
525
+ given block number is determined by taking the block number and dividing it by
526
+ the step size and flooring the result. Block 0 and 999,999 are the respective
527
+ first and last block of step 0. 1,000,000 and 1,999,999 the first and last for
528
+ Step 2. And so on.
529
+
530
+ The Decay Rate is one minus the reduction of block reward per block per step
531
+ (0.95\%).
532
+
533
+ \subsection{Reward Transfer}
534
+ Block Producers may opt to transfer 50\% of the reward for a block, or any
535
+ amount less than that to any address it desires (usually its own). 50\% of the
536
+ reward must be transferred to the Step Reward Pool.
537
+
538
+ \begin{itemize}
539
+ \item \textbf{Producers}: 50\%
540
+ \item \textbf{Step Reward Pool}: 50\%
541
+ \end{itemize}
542
+
543
+ \subsection{Block Rewards}
544
+
545
+ Block Rewards are granted to \textbf{Block Producers} for successfully creating
546
+ new blocks. They are the primary mechanism for rewarding active participation
547
+ in block generation and ensuring continuous chain growth.
548
+
549
+ \subsubsection{Key Aspects of Block Rewards}
550
+ \begin{itemize}
551
+ \item \textbf{Earned by:} Block Producers.
552
+ \item \textbf{When:} Every time a block is produced.
553
+ \item \textbf{Purpose:} Provides direct incentive for block production and secures the network.
554
+ \item \textbf{Decay Mechanism:} The initial block reward is \textbf{1,000 XL1 per block}, decreasing every \textbf{1,000,000 blocks} at a \textbf{0.95\% decay rate}.
555
+ \end{itemize}
556
+
557
+ \subsection{Step Rewards}
558
+
559
+ Step Rewards are granted at predefined milestone blocks. Unlike Block Rewards,
560
+ which are continuously distributed to Block Producers, Step Rewards are
561
+ designed to incentivize long-term network participation across different roles.
562
+
563
+ \subsubsection{Step Reward Pool}
564
+
565
+ The \textbf{Step Reward Pool} is an incentive mechanism that distributes
566
+ rewards at specific block milestones.
567
+
568
+ \subsubsection{Step Triggers}
569
+ \begin{itemize}
570
+ \item 10 (no rewards)
571
+ \item 105 (no rewards)
572
+ \item 1,103 (no rewards)
573
+ \item 11,576 (0.01\% of rewards)
574
+ \item 121,551 (0.2\% of rewards)
575
+ \item 1,276,282 (3\% of rewards)
576
+ \item 13,400,956 (45\% of rewards)
577
+ \end{itemize}
578
+
579
+ \subsubsection{Step Reward Allocation}
580
+ \begin{itemize}
581
+ \item \textbf{Producers}: 20\%
582
+ \item \textbf{Validators}: 40\%
583
+ \item \textbf{XYO General Staking}: 40\%
584
+ \end{itemize}
585
+
586
+ \subsubsection{Step Reward Pool Growth Over Time}
587
+ The block reward for blocks in a given step is calculated using the following
588
+ formula:
589
+
590
+ \[
591
+ \text{Step Number} = (\text{Starting Max Reward}) \times (\text{Decay Rate})^{\text{Step}}
592
+ \]
593
+
594
+ While \textbf{block rewards decay over time}, the \textbf{Step Reward Pool
595
+ continues to grow indefinitely} due to the way rewards are allocated.
596
+
597
+ \begin{itemize}
598
+ \item A portion of every block reward is contributed to the Step Reward Pool, even
599
+ though block rewards decrease every 1,000,000 blocks.
600
+ \item \textbf{Step Rewards never fully deplete the pool}; instead, they \textbf{pay out only a percentage} at milestone blocks (e.g., 0.01\%, 0.2\%, 3\%, 45\%).
601
+ \item As a result, the Step Reward Pool accumulates excess rewards over time,
602
+ ensuring an ever-growing reserve of incentives.
603
+ \end{itemize}
604
+
605
+ The block reward for blocks in a given step is calculated using the following
606
+ formula:
607
+
608
+ \[
609
+ B_S = B_0 \times D^S
610
+ \]
611
+
612
+ where:
613
+
614
+ \[
615
+ B_0 = 1000 \text{ XL1}
616
+ \]
617
+
618
+ \[
619
+ D = 0.95 \text{ every 1,000,000 blocks}
620
+ \]
621
+
622
+ \[
623
+ S = \lfloor \frac{\text{block number}}{1,000,000} \rfloor
624
+ \]
625
+
626
+ Since a fixed percentage of each block’s reward is added to the Step Reward
627
+ Pool, even as \( B_S \) decreases, the continuous inflow ensures the pool
628
+ \textbf{continues to grow indefinitely}. Because Step Rewards only distribute a
629
+ fraction of the pool at predefined milestones, the total Step Reward Pool size
630
+ increases over time.
631
+
632
+ \subsubsection{Step Reward Proof of Participation for Reward Receipt}
633
+
634
+ Certain network tasks leave no visible trace (e.g., filtering valid
635
+ transactions), making it hard to reward participants. To address this:
636
+ \begin{itemize}
637
+ \item Actors submit \textbf{“participation transactions”} to prove recent activity.
638
+ \item These submissions put stakes at risk but qualify actors for Step Rewards.
639
+ \end{itemize}
640
+
641
+ \subsubsection{Key Aspects of Step Rewards}
642
+ \begin{itemize}
643
+ \item \textbf{Earned by:} Block Producers, Chain Validators, and Pending Transaction Validators.
644
+ \item \textbf{When:} At predefined milestone block numbers (e.g., 10, 105, 1,103, 11,576, etc.).
645
+ \item \textbf{Purpose:} Encourages ongoing participation and incentivizes validators.
646
+ \item \textbf{Distribution:} Rewards are pulled from the \textbf{Step Reward Pool} and allocated as follows:
647
+ \begin{itemize}
648
+ \item \textbf{Block Producers}: 20\%
649
+ \item \textbf{Validators}: 80\%
650
+ \end{itemize}
651
+ \end{itemize}
652
+
653
+ \subsection{Comparison of Block Rewards and Step Rewards}
654
+
655
+ To better understand the distinctions, the following table summarizes the key
656
+ differences:
657
+
658
+ \begin{table}[ht]
659
+ \centering
660
+ \setlength{\tabcolsep}{10pt} % Adjust column spacing
661
+ \renewcommand{\arraystretch}{1.8} % Adjust row spacing
662
+ \newcommand{\heading}[1]{\multicolumn{1}{c}{#1}}
663
+ \begin{tabularx}{\textwidth}{ X | X | X }
664
+ \textbf{} & \textbf{Block Reward} & \textbf{Step Reward} \\
665
+ \hline
666
+ \textbf{Who earns it?} & Block Producers & Producers, Validators, Pending Tx Validators \\
667
+ \textbf{When is it earned?} & Every block produced & At milestone block numbers \\
668
+ \textbf{Purpose} & Incentivize block \newline production & \RaggedRight{Encourages long-term participation} \\
669
+ \textbf{Distribution Method} & Directly assigned to \newline Block Producers & Distributed from the Step \newline Reward Pool \\
670
+ \textbf{Decay Mechanism?} & Yes, decreases per step & Naturally, as block rewards decay. \\
671
+ \end{tabularx}
672
+ \label{table:rewards_comparison}
673
+ \end{table}
674
+
675
+ \subsection{How Step Rewards Complement Block Rewards}
676
+
677
+ Both reward systems work together to maintain a healthy, decentralized network:
678
+ \begin{itemize}
679
+ \item \textbf{Block Rewards} ensure that blocks continue to be produced consistently by compensating Block Producers directly.
680
+ \item \textbf{Step Rewards} provide incentives for validators and other participants who contribute to network security and efficiency.
681
+ \item The inclusion of Step Rewards helps prevent excessive centralization by
682
+ distributing additional incentives beyond just block producers.
683
+ \end{itemize}
684
+
685
+ Together, these mechanisms create a balanced approach that rewards both
686
+ immediate contributions and long-term network stability.
687
+
688
+ \section{Proof of Participation}
689
+ In some cases, an actor in the system does a task, but in some outcomes of that
690
+ task, there is no evidence as such that the task was done. For example, a gate
691
+ keeper for the pending transaction pool only is visible when an incoming
692
+ transaction is invalid and a claim is made against it. The vast majority of the
693
+ time, that actor receives valid transactions and just includes them in the
694
+ pending pool.
695
+
696
+ To address this we use a two-pronged approach. First, each actor has the
697
+ ability to submit a participation transaction in an interval of its choosing.
698
+ This payload does two things. First, it attests to the fact that this actor was
699
+ active during a range of recent blocks, and also may list specific actions that
700
+ it did during that time. Submitting a participation payload puts the stake of
701
+ that actor at risk and also makes that actor eligible for the appropriate Step
702
+ Rewards.
703
+
704
+ \section{Block Validation \& Finalization} - \textit{Needs Review on Whether this Stays}
705
+ A portion of the block reward is reserved for finalization. Finalization is done by a validator node and must be done faster than the time it takes for removed stake to become available for withdrawal. This allows a validator to recommend slashing before slashing possibly becomes impossible due to lack of funds.
706
+
707
+ Blocks are considered finalized (not allowed to be slashed) after a
708
+ predetermined time as defined by the chain information. This is generally
709
+ determined by a fixed number of blocks passing in a 3rd party chain such as
710
+ Ethereum.
711
+
712
+ \subsection{Finalization Process}
713
+
714
+ A portion of the block reward is reserved for finalization, ensuring blocks are
715
+ validated before stake withdrawals.
716
+
717
+ \subsubsection{Finalization Steps}
718
+
719
+ The \textbf{Chatter Chain} protocol helps decentralize the mempool by
720
+ socializing pending transactions. Instead of relying on a single source,
721
+ transactions are shared among multiple producers, allowing for a more resilient
722
+ validation process.
723
+
724
+ \begin{enumerate}
725
+ \item \textbf{Validate Blocks} – Validators assess block validity based on consensus rules.
726
+ \item \textbf{Consensus \& Rewards}
727
+ \begin{itemize}
728
+ \item If a block reaches consensus as \textbf{valid}, it is finalized and rewards are
729
+ released to the Block Producer.
730
+ \item If a block reaches consensus as \textbf{invalid}, the stakers of the Block
731
+ Producer are provisionally slashed, and the slashing/repair flow is initiated.
732
+ Rewards associated with the block are locked.
733
+ \end{itemize}
734
+ \item \textbf{Repair Process (If Needed)}
735
+ \begin{itemize}
736
+ \item If an invalid block is detected, corrective actions are triggered to maintain
737
+ chain integrity.
738
+ \item Blocks may be \textbf{rolled back} to the last valid state or \textbf{replaced}
739
+ with a new block that supersedes the invalid one.
740
+ \item The repair block includes records of the Byzantine chain, the slashing
741
+ decision, and any additional required actions.
742
+ \end{itemize}
743
+ \end{enumerate}
744
+
745
+ At this stage, the block is either finalized, or the rewards and stake remain
746
+ locked until a repair is agreed upon.
747
+
748
+ \newpage
749
+ \section*{Appendix}
750
+ \appendix % Start the appendices section
751
+ \section{Protocol Validation}
752
+ Protocol validation is outsourced to the pending transaction pool. Initially,
753
+ each producer has its own pending transaction pool and associated validator.
754
+
755
+ \subsection{Hash Validation of First Order Payloads}
756
+ Hash validation ensures that each payload within a transaction has a valid
757
+ cryptographic hash before inclusion in the blockchain.
758
+
759
+ \subsection{Field Type Validation of First Order Payloads}
760
+ Field type validation confirms that the data within each payload conforms to
761
+ the expected format and structure, preventing malformed transactions from
762
+ entering the network.
763
+
764
+ \section{State Validation}
765
+ State validation is performed by the block producer against its lookback
766
+ window. The outcome of this validation falls into one of the following
767
+ categories:
768
+
769
+ \begin{itemize}
770
+ \item \textbf{Invalid against local lookback window and not possible to be valid against global lookback window.}
771
+ \newline
772
+ \textbf{Action:} Submit a claim against the transaction address, resulting in the loss of fees by the submitting address.
773
+
774
+ \item \textbf{Invalid against local lookback window but possibly valid against global lookback window.}
775
+ \newline
776
+ \textbf{Action:} Remove the transaction from the pending transaction pool. Another producer with a larger lookback window may include it in the future.
777
+
778
+ \item \textbf{Valid against local lookback window.}
779
+ \newline
780
+ \textbf{Action:} Include the transaction in the block.
781
+ \end{itemize}
782
+
783
+ \section{Slashing Procedure}
784
+ A stake-weighted \textbf{Vote Payload} is generated and signed by the majority
785
+ of the producers. This signed payload is then passed to the smart contract,
786
+ which executes the slashing procedure.
787
+
788
+ \section{Decentralization in XYO Layer One (WIP)}
789
+ See \textit{Decentralization in the XYO Blockchain} for additional details on
790
+ the decentralization approach within XYO Layer One.
791
+
792
+ \section{Levels of Sovereignty}
793
+ \begin{itemize}
794
+ \item \textbf{Authoritarian} - Unknown Algorithm [Opaque]
795
+ \item \textbf{Centralized} - Verifiable Algorithm [Transparent, Objective]
796
+ \item \textbf{Decentralized} - Consensus Algorithm [Transparent, Subjective]
797
+ \item \textbf{Sovereign} - Algorithmic Proof [Transparent, Objective]
798
+ \end{itemize}
799
+ \end{document}