@xyo-network/xl1-protocol 5.2.1 → 5.2.2
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/dist/neutral/modules/network-model/staticRest/layout/admissionShadow.d.ts +35 -1
- package/dist/neutral/modules/network-model/staticRest/layout/admissionShadow.d.ts.map +1 -1
- package/dist/neutral/modules/network-model/staticRest/layout/chainParams.d.ts +16 -10
- package/dist/neutral/modules/network-model/staticRest/layout/chainParams.d.ts.map +1 -1
- package/dist/neutral/modules/network-model/staticRest/layout/chainParamsRules.d.ts +15 -0
- package/dist/neutral/modules/network-model/staticRest/layout/chainParamsRules.d.ts.map +1 -1
- package/dist/neutral/modules/protocol-model/model/RuleActivation.d.ts +1 -1
- package/dist/neutral/modules/protocol-model/model/RuleActivation.d.ts.map +1 -1
- package/dist/neutral/network-model.mjs +60 -7
- package/dist/neutral/network-model.mjs.map +2 -2
- package/dist/neutral/protocol-model.mjs +3 -0
- package/dist/neutral/protocol-model.mjs.map +2 -2
- package/package.json +1 -1
|
@@ -7,14 +7,17 @@ export declare const AdmissionShadowReportSchema: "network.xyo.s3.admission.shad
|
|
|
7
7
|
export type AdmissionShadowReportSchema = typeof AdmissionShadowReportSchema;
|
|
8
8
|
/** What both admission gates concluded about one candidate. */
|
|
9
9
|
export declare const AdmissionShadowAssessmentZod: z.ZodObject<{
|
|
10
|
+
activeStake: z.ZodOptional<z.ZodString>;
|
|
10
11
|
admittedByAllowList: z.ZodBoolean;
|
|
11
12
|
block: z.ZodInt;
|
|
12
13
|
dataHash: z.ZodString;
|
|
13
14
|
eStar: z.ZodOptional<z.ZodInt>;
|
|
14
15
|
eligible: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
intentValid: z.ZodOptional<z.ZodBoolean>;
|
|
15
17
|
producer: z.ZodString;
|
|
16
18
|
reason: z.ZodOptional<z.ZodString>;
|
|
17
19
|
resolvable: z.ZodBoolean;
|
|
20
|
+
selfBond: z.ZodOptional<z.ZodString>;
|
|
18
21
|
}, z.core.$strip>;
|
|
19
22
|
/** What both admission gates concluded about one candidate. */
|
|
20
23
|
export type AdmissionShadowAssessment = z.infer<typeof AdmissionShadowAssessmentZod>;
|
|
@@ -30,26 +33,36 @@ export type AdmissionShadowAssessment = z.infer<typeof AdmissionShadowAssessment
|
|
|
30
33
|
*/
|
|
31
34
|
export declare const AdmissionShadowReportZod: z.ZodObject<{
|
|
32
35
|
assessments: z.ZodArray<z.ZodObject<{
|
|
36
|
+
activeStake: z.ZodOptional<z.ZodString>;
|
|
33
37
|
admittedByAllowList: z.ZodBoolean;
|
|
34
38
|
block: z.ZodInt;
|
|
35
39
|
dataHash: z.ZodString;
|
|
36
40
|
eStar: z.ZodOptional<z.ZodInt>;
|
|
37
41
|
eligible: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
intentValid: z.ZodOptional<z.ZodBoolean>;
|
|
38
43
|
producer: z.ZodString;
|
|
39
44
|
reason: z.ZodOptional<z.ZodString>;
|
|
40
45
|
resolvable: z.ZodBoolean;
|
|
46
|
+
selfBond: z.ZodOptional<z.ZodString>;
|
|
41
47
|
}, z.core.$strip>>;
|
|
42
48
|
divergent: z.ZodArray<z.ZodObject<{
|
|
49
|
+
activeStake: z.ZodOptional<z.ZodString>;
|
|
43
50
|
admittedByAllowList: z.ZodBoolean;
|
|
44
51
|
block: z.ZodInt;
|
|
45
52
|
dataHash: z.ZodString;
|
|
46
53
|
eStar: z.ZodOptional<z.ZodInt>;
|
|
47
54
|
eligible: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
intentValid: z.ZodOptional<z.ZodBoolean>;
|
|
48
56
|
producer: z.ZodString;
|
|
49
57
|
reason: z.ZodOptional<z.ZodString>;
|
|
50
58
|
resolvable: z.ZodBoolean;
|
|
59
|
+
selfBond: z.ZodOptional<z.ZodString>;
|
|
51
60
|
}, z.core.$strip>>;
|
|
52
61
|
head: z.ZodInt;
|
|
62
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
63
|
+
shadow: "shadow";
|
|
64
|
+
enforce: "enforce";
|
|
65
|
+
}>>;
|
|
53
66
|
previous: z.ZodOptional<z.ZodInt>;
|
|
54
67
|
schema: z.ZodLiteral<"network.xyo.s3.admission.shadow" & {
|
|
55
68
|
readonly __schema: true;
|
|
@@ -65,9 +78,12 @@ export declare const isAdmissionShadowReport: <T>(value: T) => value is T & {
|
|
|
65
78
|
dataHash: string;
|
|
66
79
|
producer: string;
|
|
67
80
|
resolvable: boolean;
|
|
81
|
+
activeStake?: string | undefined;
|
|
68
82
|
eStar?: number | undefined;
|
|
69
83
|
eligible?: boolean | undefined;
|
|
84
|
+
intentValid?: boolean | undefined;
|
|
70
85
|
reason?: string | undefined;
|
|
86
|
+
selfBond?: string | undefined;
|
|
71
87
|
}[];
|
|
72
88
|
divergent: {
|
|
73
89
|
admittedByAllowList: boolean;
|
|
@@ -75,14 +91,18 @@ export declare const isAdmissionShadowReport: <T>(value: T) => value is T & {
|
|
|
75
91
|
dataHash: string;
|
|
76
92
|
producer: string;
|
|
77
93
|
resolvable: boolean;
|
|
94
|
+
activeStake?: string | undefined;
|
|
78
95
|
eStar?: number | undefined;
|
|
79
96
|
eligible?: boolean | undefined;
|
|
97
|
+
intentValid?: boolean | undefined;
|
|
80
98
|
reason?: string | undefined;
|
|
99
|
+
selfBond?: string | undefined;
|
|
81
100
|
}[];
|
|
82
101
|
head: number;
|
|
83
102
|
schema: "network.xyo.s3.admission.shadow" & {
|
|
84
103
|
readonly __schema: true;
|
|
85
104
|
};
|
|
105
|
+
mode?: "shadow" | "enforce" | undefined;
|
|
86
106
|
previous?: number | undefined;
|
|
87
107
|
};
|
|
88
108
|
/** Converts a value to AdmissionShadowReportDocument, throwing if invalid. */
|
|
@@ -94,9 +114,12 @@ export declare const asAdmissionShadowReport: {
|
|
|
94
114
|
dataHash: string;
|
|
95
115
|
producer: string;
|
|
96
116
|
resolvable: boolean;
|
|
117
|
+
activeStake?: string | undefined;
|
|
97
118
|
eStar?: number | undefined;
|
|
98
119
|
eligible?: boolean | undefined;
|
|
120
|
+
intentValid?: boolean | undefined;
|
|
99
121
|
reason?: string | undefined;
|
|
122
|
+
selfBond?: string | undefined;
|
|
100
123
|
}[];
|
|
101
124
|
divergent: {
|
|
102
125
|
admittedByAllowList: boolean;
|
|
@@ -104,14 +127,18 @@ export declare const asAdmissionShadowReport: {
|
|
|
104
127
|
dataHash: string;
|
|
105
128
|
producer: string;
|
|
106
129
|
resolvable: boolean;
|
|
130
|
+
activeStake?: string | undefined;
|
|
107
131
|
eStar?: number | undefined;
|
|
108
132
|
eligible?: boolean | undefined;
|
|
133
|
+
intentValid?: boolean | undefined;
|
|
109
134
|
reason?: string | undefined;
|
|
135
|
+
selfBond?: string | undefined;
|
|
110
136
|
}[];
|
|
111
137
|
head: number;
|
|
112
138
|
schema: "network.xyo.s3.admission.shadow" & {
|
|
113
139
|
readonly __schema: true;
|
|
114
140
|
};
|
|
141
|
+
mode?: "shadow" | "enforce" | undefined;
|
|
115
142
|
previous?: number | undefined;
|
|
116
143
|
}) | undefined;
|
|
117
144
|
<T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
|
|
@@ -121,9 +148,12 @@ export declare const asAdmissionShadowReport: {
|
|
|
121
148
|
dataHash: string;
|
|
122
149
|
producer: string;
|
|
123
150
|
resolvable: boolean;
|
|
151
|
+
activeStake?: string | undefined;
|
|
124
152
|
eStar?: number | undefined;
|
|
125
153
|
eligible?: boolean | undefined;
|
|
154
|
+
intentValid?: boolean | undefined;
|
|
126
155
|
reason?: string | undefined;
|
|
156
|
+
selfBond?: string | undefined;
|
|
127
157
|
}[];
|
|
128
158
|
divergent: {
|
|
129
159
|
admittedByAllowList: boolean;
|
|
@@ -131,17 +161,21 @@ export declare const asAdmissionShadowReport: {
|
|
|
131
161
|
dataHash: string;
|
|
132
162
|
producer: string;
|
|
133
163
|
resolvable: boolean;
|
|
164
|
+
activeStake?: string | undefined;
|
|
134
165
|
eStar?: number | undefined;
|
|
135
166
|
eligible?: boolean | undefined;
|
|
167
|
+
intentValid?: boolean | undefined;
|
|
136
168
|
reason?: string | undefined;
|
|
169
|
+
selfBond?: string | undefined;
|
|
137
170
|
}[];
|
|
138
171
|
head: number;
|
|
139
172
|
schema: "network.xyo.s3.admission.shadow" & {
|
|
140
173
|
readonly __schema: true;
|
|
141
174
|
};
|
|
175
|
+
mode?: "shadow" | "enforce" | undefined;
|
|
142
176
|
previous?: number | undefined;
|
|
143
177
|
};
|
|
144
178
|
};
|
|
145
179
|
/** Builds a validated admission shadow report. */
|
|
146
|
-
export declare function createAdmissionShadowReport(head: number, assessments: AdmissionShadowAssessment[], divergent: AdmissionShadowAssessment[], previous?: number): AdmissionShadowReportDocument;
|
|
180
|
+
export declare function createAdmissionShadowReport(head: number, assessments: AdmissionShadowAssessment[], divergent: AdmissionShadowAssessment[], previous?: number, mode?: AdmissionShadowReportDocument['mode']): AdmissionShadowReportDocument;
|
|
147
181
|
//# sourceMappingURL=admissionShadow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admissionShadow.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/admissionShadow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;CAAoD,CAAA;AAC5F,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"admissionShadow.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/admissionShadow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;CAAoD,CAAA;AAC5F,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;iBAuBvC,CAAA;AAEF,+DAA+D;AAC/D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEpF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYnC,CAAA;AAEF,+CAA+C;AAC/C,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF,kFAAkF;AAClF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyC,CAAA;AAC7E,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoE,CAAA;AAExG,kDAAkD;AAClD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,yBAAyB,EAAE,EACxC,SAAS,EAAE,yBAAyB,EAAE,EACtC,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,6BAA6B,CAAC,MAAM,CAAC,GAC3C,6BAA6B,CAI/B"}
|
|
@@ -17,6 +17,8 @@ export declare const RuleIdZod: z.ZodEnum<{
|
|
|
17
17
|
"eligibility-admission": "eligibility-admission";
|
|
18
18
|
"attestation-admission": "attestation-admission";
|
|
19
19
|
"certificate-execution": "certificate-execution";
|
|
20
|
+
"fork-choice-v2": "fork-choice-v2";
|
|
21
|
+
"bridge-value-ceiling": "bridge-value-ceiling";
|
|
20
22
|
"equivocation.reportable": "equivocation.reportable";
|
|
21
23
|
"invalid-block.reportable": "invalid-block.reportable";
|
|
22
24
|
"reward-overmint.reportable": "reward-overmint.reportable";
|
|
@@ -49,6 +51,8 @@ export declare const ChainParamsZod: z.ZodObject<{
|
|
|
49
51
|
"eligibility-admission": "eligibility-admission";
|
|
50
52
|
"attestation-admission": "attestation-admission";
|
|
51
53
|
"certificate-execution": "certificate-execution";
|
|
54
|
+
"fork-choice-v2": "fork-choice-v2";
|
|
55
|
+
"bridge-value-ceiling": "bridge-value-ceiling";
|
|
52
56
|
"equivocation.reportable": "equivocation.reportable";
|
|
53
57
|
"invalid-block.reportable": "invalid-block.reportable";
|
|
54
58
|
"reward-overmint.reportable": "reward-overmint.reportable";
|
|
@@ -81,6 +85,8 @@ export declare const ChainParamsZod: z.ZodObject<{
|
|
|
81
85
|
"eligibility-admission": "eligibility-admission";
|
|
82
86
|
"attestation-admission": "attestation-admission";
|
|
83
87
|
"certificate-execution": "certificate-execution";
|
|
88
|
+
"fork-choice-v2": "fork-choice-v2";
|
|
89
|
+
"bridge-value-ceiling": "bridge-value-ceiling";
|
|
84
90
|
"equivocation.reportable": "equivocation.reportable";
|
|
85
91
|
"invalid-block.reportable": "invalid-block.reportable";
|
|
86
92
|
"reward-overmint.reportable": "reward-overmint.reportable";
|
|
@@ -138,7 +144,7 @@ export type ChainParams = z.infer<typeof ChainParamsZod>;
|
|
|
138
144
|
export type ChainParamsInput = z.input<typeof ChainParamsZod>;
|
|
139
145
|
/** Type guard that checks if a value is a valid ChainParams. */
|
|
140
146
|
export declare const isChainParams: <T>(value: T) => value is T & {
|
|
141
|
-
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
147
|
+
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
142
148
|
arbiter: string;
|
|
143
149
|
attestationRewardBps: number;
|
|
144
150
|
bountyCapAtto: string;
|
|
@@ -171,12 +177,12 @@ export declare const isChainParams: <T>(value: T) => value is T & {
|
|
|
171
177
|
slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
|
|
172
178
|
slashQuorumCount: number;
|
|
173
179
|
version: number;
|
|
174
|
-
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
180
|
+
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
175
181
|
};
|
|
176
182
|
/** Converts a value to ChainParams, throwing if invalid. */
|
|
177
183
|
export declare const asChainParams: {
|
|
178
184
|
<T>(value: T): (T & {
|
|
179
|
-
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
185
|
+
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
180
186
|
arbiter: string;
|
|
181
187
|
attestationRewardBps: number;
|
|
182
188
|
bountyCapAtto: string;
|
|
@@ -209,10 +215,10 @@ export declare const asChainParams: {
|
|
|
209
215
|
slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
|
|
210
216
|
slashQuorumCount: number;
|
|
211
217
|
version: number;
|
|
212
|
-
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
218
|
+
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
213
219
|
}) | undefined;
|
|
214
220
|
<T>(value: T, assert: import("@ariestools/sdk").ZodFactoryConfig): T & {
|
|
215
|
-
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
221
|
+
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
216
222
|
arbiter: string;
|
|
217
223
|
attestationRewardBps: number;
|
|
218
224
|
bountyCapAtto: string;
|
|
@@ -245,13 +251,13 @@ export declare const asChainParams: {
|
|
|
245
251
|
slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
|
|
246
252
|
slashQuorumCount: number;
|
|
247
253
|
version: number;
|
|
248
|
-
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
254
|
+
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
249
255
|
};
|
|
250
256
|
};
|
|
251
257
|
/** Non-validating cast to ChainParams. */
|
|
252
258
|
export declare const toChainParams: {
|
|
253
259
|
(value: unknown): {
|
|
254
|
-
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
260
|
+
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
255
261
|
arbiter: string;
|
|
256
262
|
attestationRewardBps: number;
|
|
257
263
|
bountyCapAtto: string;
|
|
@@ -284,10 +290,10 @@ export declare const toChainParams: {
|
|
|
284
290
|
slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
|
|
285
291
|
slashQuorumCount: number;
|
|
286
292
|
version: number;
|
|
287
|
-
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
293
|
+
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
288
294
|
} | undefined;
|
|
289
295
|
(value: unknown, assert: import("@ariestools/sdk").ZodFactoryConfig): {
|
|
290
|
-
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
296
|
+
activations: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>>;
|
|
291
297
|
arbiter: string;
|
|
292
298
|
attestationRewardBps: number;
|
|
293
299
|
bountyCapAtto: string;
|
|
@@ -320,7 +326,7 @@ export declare const toChainParams: {
|
|
|
320
326
|
slashFractionsBps: Partial<Record<"equivocation" | "invalid-block" | "reward-overmint" | "false-anchor" | "ineligible-production" | "invalid-slash-request" | "false-attestation", number>>;
|
|
321
327
|
slashQuorumCount: number;
|
|
322
328
|
version: number;
|
|
323
|
-
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
329
|
+
deactivations?: Partial<Record<"intent-binding" | "anchor-rules" | "single-signer" | "supersedes-field" | "slash-payloads" | "eligibility-admission" | "attestation-admission" | "certificate-execution" | "fork-choice-v2" | "bridge-value-ceiling" | "equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable", number>> | undefined;
|
|
324
330
|
};
|
|
325
331
|
};
|
|
326
332
|
/** Schema id for the register head pointer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainParams.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB;;CAAgD,CAAA;AAC9E,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA;AAExD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAKrC,wCAAwC;AACxC,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"chainParams.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB;;CAAgD,CAAA;AAC9E,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA;AAExD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAKrC,wCAAwC;AACxC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAAkB,CAAA;AAKxC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgEzB,CAAA;AAEF,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAE7D,gEAAgE;AAChE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA+B,CAAA;AACzD,4DAA4D;AAC5D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAC1E,0CAA0C;AAC1C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgD,CAAA;AAE1E,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB;;CAAqD,CAAA;AACvF,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAA;AAEhE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAA;AAEF,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEhE,oEAAoE;AACpE,eAAO,MAAM,iBAAiB;;;;;;CAAmC,CAAA;AACjE,gEAAgE;AAChE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;CAAwD,CAAA;AAEtF,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,WAAW,CAEvF;AAED,gDAAgD;AAChD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAIpF"}
|
|
@@ -27,10 +27,25 @@ export declare function protocolMinAt(params: ChainParams, height: number): numb
|
|
|
27
27
|
* The register is append-only over history: a version may add rules and move future heights, but
|
|
28
28
|
* never rewrite what was true at a height the chain has already passed. Without that, a rule
|
|
29
29
|
* could be made retroactive and blocks that were valid when produced would become offenses.
|
|
30
|
+
*
|
|
31
|
+
* The one sanctioned rewrite is re-activation. A rule whose deactivation the chain has passed may
|
|
32
|
+
* return at a new future height, and the spent deactivation is dropped in the same version — the
|
|
33
|
+
* heights between read as unenforced either way, and only-forward moves mean history can never be
|
|
34
|
+
* judged more strictly than it was lived.
|
|
30
35
|
* @param previous The currently published version, when there is one
|
|
31
36
|
* @param next The version being published
|
|
32
37
|
* @param finalizedHeight The current finalized head height
|
|
33
38
|
* @returns The reasons the version may not be published, empty when it may
|
|
34
39
|
*/
|
|
35
40
|
export declare function chainParamsSuccessionErrors(previous: ChainParams | undefined, next: ChainParams, finalizedHeight: number): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Checks the relationships a register version's economics must hold on their own (yellow §11.2).
|
|
43
|
+
*
|
|
44
|
+
* Only register-derivable checks live here. The withdrawal-delay inequality needs the staking
|
|
45
|
+
* contract's delay, so it belongs to the governance runbook that sets these numbers, not to a
|
|
46
|
+
* document check every reader can run.
|
|
47
|
+
* @param params The version being judged
|
|
48
|
+
* @returns The reasons the version is internally inconsistent, empty when it is sound
|
|
49
|
+
*/
|
|
50
|
+
export declare function chainParamsInvariantErrors(params: ChainParams): string[];
|
|
36
51
|
//# sourceMappingURL=chainParamsRules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainParamsRules.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParamsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAAE,mBAAmB,EACjC,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAExG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb,mBAAmB,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErF;AAED
|
|
1
|
+
{"version":3,"file":"chainParamsRules.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network-model/staticRest/layout/chainParamsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAAE,mBAAmB,EACjC,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAExG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb,mBAAmB,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,IAAI,EAAE,WAAW,EACjB,eAAe,EAAE,MAAM,GACtB,MAAM,EAAE,CAwCV;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAmBxE"}
|
|
@@ -10,7 +10,7 @@ import type { OffenseCode } from './OffenseCode.js';
|
|
|
10
10
|
* This list lives beside the offense codes rather than with the register, because in-block
|
|
11
11
|
* validators have to name rules without depending on the register document's shape.
|
|
12
12
|
*/
|
|
13
|
-
export declare const RuleIds: readonly ["intent-binding", "anchor-rules", "single-signer", "supersedes-field", "slash-payloads", "eligibility-admission", "attestation-admission", "certificate-execution", ...("equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable")[]];
|
|
13
|
+
export declare const RuleIds: readonly ["intent-binding", "anchor-rules", "single-signer", "supersedes-field", "slash-payloads", "eligibility-admission", "attestation-admission", "certificate-execution", "fork-choice-v2", "bridge-value-ceiling", ...("equivocation.reportable" | "invalid-block.reportable" | "reward-overmint.reportable" | "false-anchor.reportable" | "ineligible-production.reportable" | "invalid-slash-request.reportable" | "false-attestation.reportable" | "equivocation.adjudicable" | "invalid-block.adjudicable" | "reward-overmint.adjudicable" | "false-anchor.adjudicable" | "ineligible-production.adjudicable" | "invalid-slash-request.adjudicable" | "false-attestation.adjudicable")[]];
|
|
14
14
|
/** A rule whose activation height the register records. */
|
|
15
15
|
export type RuleId = typeof RuleIds[number];
|
|
16
16
|
/** The rule id gating whether reports naming an offense may be recorded. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleActivation.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol-model/model/RuleActivation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"RuleActivation.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol-model/model/RuleActivation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,oqBAcV,CAAA;AAEV,2DAA2D;AAC3D,MAAM,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;AAE3C,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE7D;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE9D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5C,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,mBAAmB,CAMrB;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtG"}
|
|
@@ -112,6 +112,8 @@ import { asSchema as asSchema2 } from "@xyo-network/sdk";
|
|
|
112
112
|
import { z } from "zod";
|
|
113
113
|
var AdmissionShadowReportSchema = asSchema2("network.xyo.s3.admission.shadow", true);
|
|
114
114
|
var AdmissionShadowAssessmentZod = z.object({
|
|
115
|
+
/** Seasoned active stake measured at the evaluation point, hex atto, when it could be. */
|
|
116
|
+
activeStake: z.optional(z.string()),
|
|
115
117
|
/** Whether the allow-list admits it. */
|
|
116
118
|
admittedByAllowList: z.boolean(),
|
|
117
119
|
/** The candidate's height. */
|
|
@@ -122,12 +124,16 @@ var AdmissionShadowAssessmentZod = z.object({
|
|
|
122
124
|
eStar: z.optional(z.int().nonnegative()),
|
|
123
125
|
/** Whether participation admits it, when that could be established. */
|
|
124
126
|
eligible: z.optional(z.boolean()),
|
|
127
|
+
/** Whether the address held a current intent, when that could be established. */
|
|
128
|
+
intentValid: z.optional(z.boolean()),
|
|
125
129
|
/** The producer. */
|
|
126
130
|
producer: z.string(),
|
|
127
131
|
/** Why participation refused, when it did. */
|
|
128
132
|
reason: z.optional(z.string()),
|
|
129
133
|
/** False when the participation question could not be put at all. */
|
|
130
|
-
resolvable: z.boolean()
|
|
134
|
+
resolvable: z.boolean(),
|
|
135
|
+
/** The seasoned portion staked by the address on itself, hex atto, when it could be. */
|
|
136
|
+
selfBond: z.optional(z.string())
|
|
131
137
|
});
|
|
132
138
|
var AdmissionShadowReportZod = z.object({
|
|
133
139
|
/** Every candidate considered this round. */
|
|
@@ -136,17 +142,20 @@ var AdmissionShadowReportZod = z.object({
|
|
|
136
142
|
divergent: z.array(AdmissionShadowAssessmentZod),
|
|
137
143
|
/** The finalized height this round was selected against. */
|
|
138
144
|
head: z.int().nonnegative(),
|
|
145
|
+
/** The admission posture that produced the round; reports keep flowing when gating starts. */
|
|
146
|
+
mode: z.optional(z.enum(["shadow", "enforce"])),
|
|
139
147
|
/** Height of the previous published report, so the series can be walked backwards. */
|
|
140
148
|
previous: z.optional(z.int().nonnegative()),
|
|
141
149
|
schema: z.literal(AdmissionShadowReportSchema)
|
|
142
150
|
});
|
|
143
151
|
var isAdmissionShadowReport = zodIsFactory(AdmissionShadowReportZod);
|
|
144
152
|
var asAdmissionShadowReport = zodAsFactory(AdmissionShadowReportZod, "asAdmissionShadowReport");
|
|
145
|
-
function createAdmissionShadowReport(head, assessments, divergent, previous) {
|
|
153
|
+
function createAdmissionShadowReport(head, assessments, divergent, previous, mode) {
|
|
146
154
|
return AdmissionShadowReportZod.parse({
|
|
147
155
|
assessments,
|
|
148
156
|
divergent,
|
|
149
157
|
head,
|
|
158
|
+
mode,
|
|
150
159
|
previous,
|
|
151
160
|
schema: AdmissionShadowReportSchema
|
|
152
161
|
});
|
|
@@ -438,19 +447,62 @@ function chainParamsSuccessionErrors(previous, next, finalizedHeight) {
|
|
|
438
447
|
if (next.chainId !== previous.chainId) {
|
|
439
448
|
errors.push(`chainId must not change: ${previous.chainId} -> ${next.chainId}`);
|
|
440
449
|
}
|
|
450
|
+
if (next.protocolMin < previous.protocolMin) {
|
|
451
|
+
errors.push(`protocolMin must not lower: ${previous.protocolMin} -> ${next.protocolMin}`);
|
|
452
|
+
}
|
|
453
|
+
const previousDeactivations = previous.deactivations ?? {};
|
|
454
|
+
const nextDeactivations = next.deactivations ?? {};
|
|
455
|
+
const isReactivation = (ruleId) => {
|
|
456
|
+
const deactivation = previousDeactivations[ruleId];
|
|
457
|
+
const nextActivation = next.activations[ruleId];
|
|
458
|
+
return deactivation !== void 0 && deactivation <= finalizedHeight && nextActivation !== void 0 && nextActivation > finalizedHeight && nextDeactivations[ruleId] === void 0;
|
|
459
|
+
};
|
|
441
460
|
for (const [ruleId, height] of Object.entries(previous.activations)) {
|
|
442
461
|
if (height > finalizedHeight) continue;
|
|
443
|
-
if (next.activations[ruleId]
|
|
444
|
-
|
|
445
|
-
}
|
|
462
|
+
if (next.activations[ruleId] === height) continue;
|
|
463
|
+
if (isReactivation(ruleId)) continue;
|
|
464
|
+
errors.push(`activation for '${ruleId}' is already in force at ${height} and must not move`);
|
|
446
465
|
}
|
|
447
|
-
for (const [ruleId, height] of Object.entries(
|
|
448
|
-
if (height
|
|
466
|
+
for (const [ruleId, height] of Object.entries(previousDeactivations)) {
|
|
467
|
+
if (height > finalizedHeight) continue;
|
|
468
|
+
if (nextDeactivations[ruleId] === height) continue;
|
|
469
|
+
if (isReactivation(ruleId)) continue;
|
|
470
|
+
errors.push(`deactivation for '${ruleId}' is already in force at ${height} and must not move`);
|
|
471
|
+
}
|
|
472
|
+
for (const [ruleId, height] of Object.entries(nextDeactivations)) {
|
|
473
|
+
if (height < finalizedHeight && previousDeactivations[ruleId] !== height) {
|
|
449
474
|
errors.push(`deactivation for '${ruleId}' at ${height} is in the past`);
|
|
450
475
|
}
|
|
451
476
|
}
|
|
452
477
|
return errors;
|
|
453
478
|
}
|
|
479
|
+
function chainParamsInvariantErrors(params) {
|
|
480
|
+
const errors = [];
|
|
481
|
+
if (params.burnFloorBps + params.bountyShareBps > 1e4) {
|
|
482
|
+
errors.push(`burnFloorBps + bountyShareBps must not exceed 10000: ${params.burnFloorBps} + ${params.bountyShareBps}`);
|
|
483
|
+
}
|
|
484
|
+
const minValidatorStake = tryBigInt(params.minValidatorStakeAtto);
|
|
485
|
+
const bountyCap = tryBigInt(params.bountyCapAtto);
|
|
486
|
+
if (minValidatorStake === void 0 || bountyCap === void 0) {
|
|
487
|
+
errors.push("minValidatorStakeAtto and bountyCapAtto must be parseable amounts");
|
|
488
|
+
return errors;
|
|
489
|
+
}
|
|
490
|
+
const counterSlashBps = BigInt(params.slashFractionsBps["invalid-slash-request"] ?? 0);
|
|
491
|
+
const counterSlashMin = minValidatorStake * counterSlashBps / 10000n;
|
|
492
|
+
if (counterSlashMin < bountyCap * 2n) {
|
|
493
|
+
errors.push(
|
|
494
|
+
`the counter-slash at minimum validator stake (${counterSlashMin}) must be at least twice bountyCapAtto (${bountyCap})`
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
return errors;
|
|
498
|
+
}
|
|
499
|
+
function tryBigInt(value) {
|
|
500
|
+
try {
|
|
501
|
+
return BigInt(value.startsWith("0x") ? value : `0x${value}`);
|
|
502
|
+
} catch {
|
|
503
|
+
return void 0;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
454
506
|
|
|
455
507
|
// src/modules/network-model/staticRest/layout/evmEventIndex.ts
|
|
456
508
|
import {
|
|
@@ -1034,6 +1086,7 @@ export {
|
|
|
1034
1086
|
chainContractByIdPath,
|
|
1035
1087
|
chainManifestPathTemplates,
|
|
1036
1088
|
chainParamsHeadPath,
|
|
1089
|
+
chainParamsInvariantErrors,
|
|
1037
1090
|
chainParamsSuccessionErrors,
|
|
1038
1091
|
chainParamsVersionPath,
|
|
1039
1092
|
createAdmissionShadowReport,
|