@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.
- package/README.md +58 -21
- package/dist/neutral/index.mjs +216 -101
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/node/index.mjs +225 -0
- package/dist/node/index.mjs.map +1 -0
- package/dist/types/Addressable.d.ts +5 -0
- package/dist/types/Addressable.d.ts.map +1 -0
- package/dist/types/ChainIterator.d.ts +29 -0
- package/dist/types/ChainIterator.d.ts.map +1 -0
- package/dist/types/ChainIteratorEventData.d.ts +11 -0
- package/dist/types/ChainIteratorEventData.d.ts.map +1 -0
- package/dist/types/OpenTelemetryProviders.d.ts +6 -0
- package/dist/types/OpenTelemetryProviders.d.ts.map +1 -0
- package/dist/types/chain/ChainServiceCollection.d.ts +35 -0
- package/dist/types/chain/ChainServiceCollection.d.ts.map +1 -0
- package/dist/types/chain/Initializable.d.ts +3 -0
- package/dist/types/chain/Initializable.d.ts.map +1 -0
- package/dist/types/chain/index.d.ts +3 -0
- package/dist/types/chain/index.d.ts.map +1 -0
- package/dist/types/ethereum.d.ts +11 -0
- package/dist/types/ethereum.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/instances/BoundWitness.d.ts +9 -0
- package/dist/types/instances/BoundWitness.d.ts.map +1 -0
- package/dist/types/instances/Data.d.ts +4 -0
- package/dist/types/instances/Data.d.ts.map +1 -0
- package/dist/types/instances/Fees.d.ts +8 -0
- package/dist/types/instances/Fees.d.ts.map +1 -0
- package/dist/types/instances/HydratedBoundWitness.d.ts +10 -0
- package/dist/types/instances/HydratedBoundWitness.d.ts.map +1 -0
- package/dist/types/instances/Object.d.ts +5 -0
- package/dist/types/instances/Object.d.ts.map +1 -0
- package/dist/types/instances/Payload.d.ts +6 -0
- package/dist/types/instances/Payload.d.ts.map +1 -0
- package/dist/types/instances/Signature.d.ts +8 -0
- package/dist/types/instances/Signature.d.ts.map +1 -0
- package/dist/types/instances/block/BlockFields.d.ts +9 -0
- package/dist/types/instances/block/BlockFields.d.ts.map +1 -0
- package/dist/types/instances/block/HydratedBlock.d.ts +8 -0
- package/dist/types/instances/block/HydratedBlock.d.ts.map +1 -0
- package/dist/types/instances/block/SignedHydratedBlock.d.ts +6 -0
- package/dist/types/instances/block/SignedHydratedBlock.d.ts.map +1 -0
- package/dist/types/instances/block/index.d.ts +3 -0
- package/dist/types/instances/block/index.d.ts.map +1 -0
- package/dist/types/instances/index.d.ts +10 -0
- package/dist/types/instances/index.d.ts.map +1 -0
- package/dist/types/instances/modifiers/Signed.d.ts +7 -0
- package/dist/types/instances/modifiers/Signed.d.ts.map +1 -0
- package/dist/types/instances/modifiers/Validatable.d.ts +5 -0
- package/dist/types/instances/modifiers/Validatable.d.ts.map +1 -0
- package/dist/types/instances/modifiers/index.d.ts +3 -0
- package/dist/types/instances/modifiers/index.d.ts.map +1 -0
- package/dist/types/instances/transaction/HydratedTransaction.d.ts +6 -0
- package/dist/types/instances/transaction/HydratedTransaction.d.ts.map +1 -0
- package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts +6 -0
- package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts.map +1 -0
- package/dist/types/instances/transaction/TransactionFields.d.ts +9 -0
- package/dist/types/instances/transaction/TransactionFields.d.ts.map +1 -0
- package/dist/types/instances/transaction/index.d.ts +3 -0
- package/dist/types/instances/transaction/index.d.ts.map +1 -0
- package/dist/types/payload/elevatable/ChainStakeIntent.d.ts +17 -0
- package/dist/types/payload/elevatable/ChainStakeIntent.d.ts.map +1 -0
- package/dist/types/payload/elevatable/Executable.d.ts +14 -0
- package/dist/types/payload/elevatable/Executable.d.ts.map +1 -0
- package/dist/types/payload/elevatable/Hash.d.ts +19 -0
- package/dist/types/payload/elevatable/Hash.d.ts.map +1 -0
- package/dist/types/payload/elevatable/TransferPayload.d.ts +17 -0
- package/dist/types/payload/elevatable/TransferPayload.d.ts.map +1 -0
- package/dist/types/payload/elevatable/index.d.ts +5 -0
- package/dist/types/payload/elevatable/index.d.ts.map +1 -0
- package/dist/types/payload/index.d.ts +2 -0
- package/dist/types/payload/index.d.ts.map +1 -0
- package/dist/types/protocol/AllowedBlockPayload.d.ts +11 -0
- package/dist/types/protocol/AllowedBlockPayload.d.ts.map +1 -0
- package/dist/types/protocol/BlockBoundWitness.d.ts +32 -0
- package/dist/types/protocol/BlockBoundWitness.d.ts.map +1 -0
- package/dist/types/protocol/BlockDuration.d.ts +23 -0
- package/dist/types/protocol/BlockDuration.d.ts.map +1 -0
- package/dist/types/protocol/BlockNumber.d.ts +37 -0
- package/dist/types/protocol/BlockNumber.d.ts.map +1 -0
- package/dist/types/protocol/ChainAnalyzer.d.ts +9 -0
- package/dist/types/protocol/ChainAnalyzer.d.ts.map +1 -0
- package/dist/types/protocol/ChainReference.d.ts +11 -0
- package/dist/types/protocol/ChainReference.d.ts.map +1 -0
- package/dist/types/protocol/HydratedBlock.d.ts +6 -0
- package/dist/types/protocol/HydratedBlock.d.ts.map +1 -0
- package/dist/types/protocol/HydratedTransaction.d.ts +9 -0
- package/dist/types/protocol/HydratedTransaction.d.ts.map +1 -0
- package/dist/types/protocol/Issuer.d.ts +5 -0
- package/dist/types/protocol/Issuer.d.ts.map +1 -0
- package/dist/types/protocol/Steps.d.ts +2 -0
- package/dist/types/protocol/Steps.d.ts.map +1 -0
- package/dist/types/protocol/TransactionBoundWitness.d.ts +26 -0
- package/dist/types/protocol/TransactionBoundWitness.d.ts.map +1 -0
- package/dist/types/protocol/TransactionFeesFields.d.ts +35 -0
- package/dist/types/protocol/TransactionFeesFields.d.ts.map +1 -0
- package/dist/types/protocol/index.d.ts +13 -0
- package/dist/types/protocol/index.d.ts.map +1 -0
- package/dist/types/provider/XyoProvider.d.ts +18 -0
- package/dist/types/provider/XyoProvider.d.ts.map +1 -0
- package/dist/types/provider/XyoRunner.d.ts +7 -0
- package/dist/types/provider/XyoRunner.d.ts.map +1 -0
- package/dist/types/provider/XyoSigner.d.ts +10 -0
- package/dist/types/provider/XyoSigner.d.ts.map +1 -0
- package/dist/types/provider/XyoStorage.d.ts +16 -0
- package/dist/types/provider/XyoStorage.d.ts.map +1 -0
- package/dist/types/provider/XyoViewer.d.ts +17 -0
- package/dist/types/provider/XyoViewer.d.ts.map +1 -0
- package/dist/types/provider/XyoWallet.d.ts +13 -0
- package/dist/types/provider/XyoWallet.d.ts.map +1 -0
- package/dist/types/provider/index.d.ts +7 -0
- package/dist/types/provider/index.d.ts.map +1 -0
- package/dist/types/repository/Repository.d.ts +10 -0
- package/dist/types/repository/Repository.d.ts.map +1 -0
- package/dist/types/repository/TransactionReadRepository.d.ts +5 -0
- package/dist/types/repository/TransactionReadRepository.d.ts.map +1 -0
- package/dist/types/repository/TransactionRepository.d.ts +10 -0
- package/dist/types/repository/TransactionRepository.d.ts.map +1 -0
- package/dist/types/repository/TransactionRepositoryIterator.d.ts +5 -0
- package/dist/types/repository/TransactionRepositoryIterator.d.ts.map +1 -0
- package/dist/types/repository/TransactionWriteRepository.d.ts +5 -0
- package/dist/types/repository/TransactionWriteRepository.d.ts.map +1 -0
- package/dist/types/repository/index.d.ts +6 -0
- package/dist/types/repository/index.d.ts.map +1 -0
- package/dist/types/services/AccountBalanceService.d.ts +7 -0
- package/dist/types/services/AccountBalanceService.d.ts.map +1 -0
- package/dist/types/services/BlockProducer.d.ts +7 -0
- package/dist/types/services/BlockProducer.d.ts.map +1 -0
- package/dist/types/services/BlockReward.d.ts +6 -0
- package/dist/types/services/BlockReward.d.ts.map +1 -0
- package/dist/types/services/Chain/ChainContractViewer.d.ts +12 -0
- package/dist/types/services/Chain/ChainContractViewer.d.ts.map +1 -0
- package/dist/types/services/Chain/ChainIdentification.d.ts +14 -0
- package/dist/types/services/Chain/ChainIdentification.d.ts.map +1 -0
- package/dist/types/services/Chain/ChainInformation.d.ts +12 -0
- package/dist/types/services/Chain/ChainInformation.d.ts.map +1 -0
- package/dist/types/services/Chain/ChainService.d.ts +8 -0
- package/dist/types/services/Chain/ChainService.d.ts.map +1 -0
- package/dist/types/services/Chain/ChainStakeViewer.d.ts +10 -0
- package/dist/types/services/Chain/ChainStakeViewer.d.ts.map +1 -0
- package/dist/types/services/Chain/ChainStaker.d.ts +6 -0
- package/dist/types/services/Chain/ChainStaker.d.ts.map +1 -0
- package/dist/types/services/Chain/index.d.ts +7 -0
- package/dist/types/services/Chain/index.d.ts.map +1 -0
- package/dist/types/services/Election.d.ts +11 -0
- package/dist/types/services/Election.d.ts.map +1 -0
- package/dist/types/services/Params.d.ts +9 -0
- package/dist/types/services/Params.d.ts.map +1 -0
- package/dist/types/services/PendingTransactionsService.d.ts +7 -0
- package/dist/types/services/PendingTransactionsService.d.ts.map +1 -0
- package/dist/types/services/Service.d.ts +9 -0
- package/dist/types/services/Service.d.ts.map +1 -0
- package/dist/types/services/index.d.ts +10 -0
- package/dist/types/services/index.d.ts.map +1 -0
- package/dist/types/services/stakeIntent/ChainIndexingServiceStateSchema.d.ts +39 -0
- package/dist/types/services/stakeIntent/ChainIndexingServiceStateSchema.d.ts.map +1 -0
- package/dist/types/services/stakeIntent/StakeIntentService.d.ts +24 -0
- package/dist/types/services/stakeIntent/StakeIntentService.d.ts.map +1 -0
- package/dist/types/services/stakeIntent/index.d.ts +3 -0
- package/dist/types/services/stakeIntent/index.d.ts.map +1 -0
- package/dist/types/validation/block/BlockValidationFunction.d.ts +5 -0
- package/dist/types/validation/block/BlockValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/block/HydratedBlockStateValidationFunction.d.ts +13 -0
- package/dist/types/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/block/HydratedBlockValidationFunction.d.ts +11 -0
- package/dist/types/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/block/index.d.ts +4 -0
- package/dist/types/validation/block/index.d.ts.map +1 -0
- package/dist/types/validation/boundwitness/BoundWitnessValidationFunction.d.ts +4 -0
- package/dist/types/validation/boundwitness/BoundWitnessValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts +6 -0
- package/dist/types/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/boundwitness/index.d.ts +3 -0
- package/dist/types/validation/boundwitness/index.d.ts.map +1 -0
- package/dist/types/validation/index.d.ts +5 -0
- package/dist/types/validation/index.d.ts.map +1 -0
- package/dist/types/validation/payload/InBlockPayloadValidationFunction.d.ts +5 -0
- package/dist/types/validation/payload/InBlockPayloadValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/payload/index.d.ts +2 -0
- package/dist/types/validation/payload/index.d.ts.map +1 -0
- package/dist/types/validation/transaction/HydratedTransactionStateValidationFunction.d.ts +13 -0
- package/dist/types/validation/transaction/HydratedTransactionStateValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/transaction/HydratedTransactionValidationFunction.d.ts +12 -0
- package/dist/types/validation/transaction/HydratedTransactionValidationFunction.d.ts.map +1 -0
- package/dist/types/validation/transaction/index.d.ts +3 -0
- package/dist/types/validation/transaction/index.d.ts.map +1 -0
- package/documents/proof-of-perfect/proof-of-perfect-draft.log +741 -0
- package/documents/proof-of-perfect/proof-of-perfect-draft.pdf +0 -0
- package/documents/proof-of-perfect/proof-of-perfect-draft.tex +311 -0
- package/documents/xyol1-white-paper/white-paper-draft.log +547 -0
- package/documents/xyol1-white-paper/white-paper-draft.pdf +0 -0
- package/documents/xyol1-white-paper/white-paper-draft.tex +799 -0
- package/eslint.config.mjs +35 -0
- package/knip.config.ts +1 -1
- package/knip.log +491 -0
- package/package.json +32 -20
- package/src/Addressable.ts +6 -0
- package/src/ChainIterator.ts +29 -0
- package/src/ChainIteratorEventData.ts +11 -0
- package/src/OpenTelemetryProviders.ts +6 -0
- package/src/chain/ChainServiceCollection.ts +41 -0
- package/src/chain/Initializable.ts +3 -0
- package/src/chain/index.ts +2 -0
- package/src/ethereum.ts +26 -0
- package/src/index.ts +13 -1
- package/src/instances/BoundWitness.ts +13 -0
- package/src/instances/Data.ts +3 -0
- package/src/instances/Fees.ts +8 -0
- package/src/instances/HydratedBoundWitness.ts +15 -0
- package/src/instances/Object.ts +5 -0
- package/src/instances/Payload.ts +6 -0
- package/src/instances/Signature.ts +11 -0
- package/src/instances/block/BlockFields.ts +13 -0
- package/src/instances/block/HydratedBlock.ts +9 -0
- package/src/instances/block/SignedHydratedBlock.ts +5 -0
- package/src/instances/block/index.ts +2 -0
- package/src/instances/index.ts +9 -0
- package/src/instances/modifiers/Signed.ts +8 -0
- package/src/instances/modifiers/Validatable.ts +5 -0
- package/src/instances/modifiers/index.ts +2 -0
- package/src/instances/transaction/HydratedTransaction.ts +8 -0
- package/src/instances/transaction/SignedHydratedTransaction.ts +7 -0
- package/src/instances/transaction/TransactionFields.ts +12 -0
- package/src/instances/transaction/index.ts +2 -0
- package/src/payload/elevatable/ChainStakeIntent.ts +32 -0
- package/src/payload/elevatable/Executable.ts +29 -0
- package/src/payload/elevatable/Hash.ts +19 -0
- package/src/payload/elevatable/TransferPayload.ts +26 -0
- package/src/payload/elevatable/index.ts +4 -0
- package/src/payload/index.ts +1 -0
- package/src/protocol/AllowedBlockPayload.ts +29 -0
- package/src/protocol/BlockBoundWitness.ts +43 -0
- package/src/protocol/BlockDuration.ts +23 -0
- package/src/protocol/BlockNumber.ts +39 -0
- package/src/protocol/ChainAnalyzer.ts +10 -0
- package/src/protocol/ChainReference.ts +11 -0
- package/src/protocol/HydratedBlock.ts +8 -0
- package/src/protocol/HydratedTransaction.ts +19 -0
- package/src/protocol/Issuer.ts +5 -0
- package/src/protocol/Steps.ts +1 -0
- package/src/protocol/TransactionBoundWitness.ts +51 -0
- package/src/protocol/TransactionFeesFields.ts +38 -0
- package/src/protocol/index.ts +12 -0
- package/src/provider/XyoProvider.ts +29 -0
- package/src/provider/XyoRunner.ts +8 -0
- package/src/provider/XyoSigner.ts +21 -0
- package/src/provider/XyoStorage.ts +17 -0
- package/src/provider/XyoViewer.ts +18 -0
- package/src/provider/XyoWallet.ts +15 -0
- package/src/provider/index.ts +6 -0
- package/src/repository/Repository.ts +11 -0
- package/src/repository/TransactionReadRepository.ts +4 -0
- package/src/repository/TransactionRepository.ts +9 -0
- package/src/repository/TransactionRepositoryIterator.ts +4 -0
- package/src/repository/TransactionWriteRepository.ts +4 -0
- package/src/repository/index.ts +5 -0
- package/src/services/AccountBalanceService.ts +9 -0
- package/src/services/BlockProducer.ts +7 -0
- package/src/services/BlockReward.ts +7 -0
- package/src/services/Chain/ChainContractViewer.ts +12 -0
- package/src/services/Chain/ChainIdentification.ts +17 -0
- package/src/services/Chain/ChainInformation.ts +20 -0
- package/src/services/Chain/ChainService.ts +7 -0
- package/src/services/Chain/ChainStakeViewer.ts +10 -0
- package/src/services/Chain/ChainStaker.ts +5 -0
- package/src/services/Chain/index.ts +6 -0
- package/src/services/Election.ts +14 -0
- package/src/services/Params.ts +11 -0
- package/src/services/PendingTransactionsService.ts +8 -0
- package/src/services/Service.ts +10 -0
- package/src/services/index.ts +9 -0
- package/src/services/stakeIntent/ChainIndexingServiceStateSchema.ts +46 -0
- package/src/services/stakeIntent/StakeIntentService.ts +28 -0
- package/src/services/stakeIntent/index.ts +2 -0
- package/src/validation/block/BlockValidationFunction.ts +9 -0
- package/src/validation/block/HydratedBlockStateValidationFunction.ts +18 -0
- package/src/validation/block/HydratedBlockValidationFunction.ts +15 -0
- package/src/validation/block/index.ts +3 -0
- package/src/validation/boundwitness/BoundWitnessValidationFunction.ts +6 -0
- package/src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts +10 -0
- package/src/validation/boundwitness/index.ts +2 -0
- package/src/validation/index.ts +4 -0
- package/src/validation/payload/InBlockPayloadValidationFunction.ts +8 -0
- package/src/validation/payload/index.ts +1 -0
- package/src/validation/transaction/HydratedTransactionStateValidationFunction.ts +18 -0
- package/src/validation/transaction/HydratedTransactionValidationFunction.ts +16 -0
- package/src/validation/transaction/index.ts +2 -0
- package/typedoc.json +5 -0
- package/vite.config.ts +30 -0
- package/vitest.config.ts +14 -0
- package/vitest.teardown.ts +10 -0
- package/vitest.workspace.ts +5 -0
- package/xy.config.ts +2 -2
- package/dist/types/transaction/buildTransaction.d.ts +0 -7
- package/dist/types/transaction/buildTransaction.d.ts.map +0 -1
- package/dist/types/transaction/hydrateTransaction.d.ts +0 -11
- package/dist/types/transaction/hydrateTransaction.d.ts.map +0 -1
- package/dist/types/transaction/index.d.ts +0 -3
- package/dist/types/transaction/index.d.ts.map +0 -1
- package/src/transaction/buildTransaction.ts +0 -61
- package/src/transaction/hydrateTransaction.ts +0 -73
- 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}
|