@typeberry/lib 0.5.7 → 0.5.8-dbdc34c
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/package.json +3 -1
- package/packages/core/utils/debug.d.ts.map +1 -1
- package/packages/core/utils/debug.js +14 -3
- package/packages/jam/block/block.d.ts +3 -3
- package/packages/jam/block/header.d.ts +6 -6
- package/packages/jam/block/test-helpers.d.ts +2 -2
- package/packages/jam/block/tickets.d.ts +5 -4
- package/packages/jam/block/tickets.d.ts.map +1 -1
- package/packages/jam/block/tickets.js +13 -6
- package/packages/jam/block-json/block.d.ts +2 -2
- package/packages/jam/block-json/block.js +1 -1
- package/packages/jam/block-json/common.d.ts +2 -1
- package/packages/jam/block-json/common.d.ts.map +1 -1
- package/packages/jam/block-json/common.js +2 -5
- package/packages/jam/block-json/extrinsic.js +1 -1
- package/packages/jam/block-json/header.d.ts +2 -1
- package/packages/jam/block-json/header.d.ts.map +1 -1
- package/packages/jam/block-json/header.js +34 -32
- package/packages/jam/block-json/tickets-extrinsic.d.ts +2 -1
- package/packages/jam/block-json/tickets-extrinsic.d.ts.map +1 -1
- package/packages/jam/block-json/tickets-extrinsic.js +7 -5
- package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
- package/packages/jam/jamnp-s/network.d.ts +2 -0
- package/packages/jam/jamnp-s/network.d.ts.map +1 -1
- package/packages/jam/jamnp-s/network.js +4 -0
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +10 -3
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +12 -4
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +4 -3
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
- package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts +34 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts.map +1 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.js +115 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.d.ts +2 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.d.ts.map +1 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +220 -0
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +56 -26
- package/packages/jam/node/reader.d.ts +2 -2
- package/packages/jam/node/workers.d.ts +32 -25
- package/packages/jam/node/workers.d.ts.map +1 -1
- package/packages/jam/node/workers.js +16 -7
- package/packages/jam/safrole/bandersnatch-vrf.d.ts +3 -2
- package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-vrf.js +2 -2
- package/packages/jam/safrole/bandersnatch-vrf.test.js +3 -2
- package/packages/jam/safrole/safrole.test.js +80 -72
- package/packages/jam/state/safrole-data.d.ts +1 -1
- package/packages/jam/state/test.utils.js +1 -1
- package/packages/jam/state-json/dump.js +2 -2
- package/packages/jam/state-json/safrole.d.ts +2 -2
- package/packages/jam/state-json/safrole.d.ts.map +1 -1
- package/packages/jam/state-json/safrole.js +8 -6
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +1 -1
- package/packages/jam/state-vectors/index.d.ts +8 -7
- package/packages/jam/state-vectors/index.d.ts.map +1 -1
- package/packages/jam/state-vectors/index.js +6 -4
- package/packages/jam/transition/hasher.test.js +1 -1
- package/packages/workers/api-node/config.d.ts +5 -1
- package/packages/workers/api-node/config.d.ts.map +1 -1
- package/packages/workers/api-node/config.js +9 -3
- package/packages/workers/api-node/port.d.ts +8 -0
- package/packages/workers/api-node/port.d.ts.map +1 -1
- package/packages/workers/api-node/port.js +10 -0
- package/packages/workers/block-authorship/bootstrap-main.js +10 -3
- package/packages/workers/block-authorship/main.d.ts +2 -1
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +31 -4
- package/packages/workers/block-authorship/protocol.d.ts +4 -4
- package/packages/workers/block-authorship/ticket-generator.d.ts +3 -2
- package/packages/workers/block-authorship/ticket-generator.d.ts.map +1 -1
- package/packages/workers/block-authorship/ticket-generator.js +2 -3
- package/packages/workers/block-authorship/ticket-generator.test.js +11 -10
- package/packages/workers/comms-authorship-network/index.d.ts +3 -0
- package/packages/workers/comms-authorship-network/index.d.ts.map +1 -0
- package/packages/workers/comms-authorship-network/index.js +2 -0
- package/packages/workers/comms-authorship-network/protocol.d.ts +27 -0
- package/packages/workers/comms-authorship-network/protocol.d.ts.map +1 -0
- package/packages/workers/comms-authorship-network/protocol.js +24 -0
- package/packages/workers/comms-authorship-network/tickets-message.d.ts +18 -0
- package/packages/workers/comms-authorship-network/tickets-message.d.ts.map +1 -0
- package/packages/workers/comms-authorship-network/tickets-message.js +19 -0
- package/packages/workers/importer/protocol.d.ts +8 -8
- package/packages/workers/jam-network/bootstrap-main.js +10 -3
- package/packages/workers/jam-network/main.d.ts +2 -1
- package/packages/workers/jam-network/main.d.ts.map +1 -1
- package/packages/workers/jam-network/main.js +8 -1
- package/packages/workers/jam-network/protocol.d.ts +10 -10
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typeberry/lib",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.8-dbdc34c",
|
|
4
4
|
"description": "Typeberry Library",
|
|
5
5
|
"main": "./bin/lib/index.js",
|
|
6
6
|
"types": "./bin/lib/index.d.ts",
|
|
@@ -256,6 +256,8 @@
|
|
|
256
256
|
"#@typeberry/workers-api-node/*": "./packages/workers/api-node/*",
|
|
257
257
|
"#@typeberry/block-authorship": "./packages/workers/block-authorship/index.js",
|
|
258
258
|
"#@typeberry/block-authorship/*": "./packages/workers/block-authorship/*",
|
|
259
|
+
"#@typeberry/comms-authorship-network": "./packages/workers/comms-authorship-network/index.js",
|
|
260
|
+
"#@typeberry/comms-authorship-network/*": "./packages/workers/comms-authorship-network/*",
|
|
259
261
|
"#@typeberry/importer": "./packages/workers/importer/index.js",
|
|
260
262
|
"#@typeberry/importer/*": "./packages/workers/importer/*",
|
|
261
263
|
"#@typeberry/jam-network": "./packages/workers/jam-network/index.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAEzC;AAkED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,gBAGjC;AAED,mFAAmF;AACnF,8BAAsB,SAAS;IAC7B,QAAQ;CAGT;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;;EAMpC"}
|
|
@@ -55,6 +55,12 @@ export function assertEmpty(value) {
|
|
|
55
55
|
}
|
|
56
56
|
/** Debug print an object. */
|
|
57
57
|
export function inspect(val) {
|
|
58
|
+
return inspectInternal(val, new WeakSet());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Internal implementation of inspect with circular reference detection.
|
|
62
|
+
*/
|
|
63
|
+
function inspectInternal(val, seen) {
|
|
58
64
|
const nest = (v) => v
|
|
59
65
|
.split("\n")
|
|
60
66
|
.map((x) => ` ${x}`)
|
|
@@ -67,10 +73,10 @@ export function inspect(val) {
|
|
|
67
73
|
return "<undefined>";
|
|
68
74
|
}
|
|
69
75
|
if (Array.isArray(val)) {
|
|
70
|
-
return `[${val.map((x) =>
|
|
76
|
+
return `[${val.map((x) => inspectInternal(x, seen))}]`;
|
|
71
77
|
}
|
|
72
78
|
if (val instanceof Map) {
|
|
73
|
-
return
|
|
79
|
+
return inspectInternal(Array.from(val.entries()), seen);
|
|
74
80
|
}
|
|
75
81
|
if (typeof val === "number") {
|
|
76
82
|
return `${val} (0x${val.toString(16)})`;
|
|
@@ -78,6 +84,11 @@ export function inspect(val) {
|
|
|
78
84
|
if (typeof val !== "object") {
|
|
79
85
|
return `${val}`;
|
|
80
86
|
}
|
|
87
|
+
// Check for circular references
|
|
88
|
+
if (seen.has(val)) {
|
|
89
|
+
return "<circular>";
|
|
90
|
+
}
|
|
91
|
+
seen.add(val);
|
|
81
92
|
if ("toString" in val &&
|
|
82
93
|
Object.prototype.toString !== val.toString &&
|
|
83
94
|
WithDebug.prototype.toString !== val.toString) {
|
|
@@ -90,7 +101,7 @@ export function inspect(val) {
|
|
|
90
101
|
for (const k of keys) {
|
|
91
102
|
if (typeof k === "string") {
|
|
92
103
|
v += oneLine ? "" : "\n ";
|
|
93
|
-
v += `${k}: ${nest(
|
|
104
|
+
v += `${k}: ${nest(inspectInternal(val[k], seen))}`;
|
|
94
105
|
v += oneLine ? "," : "";
|
|
95
106
|
}
|
|
96
107
|
}
|
|
@@ -42,7 +42,7 @@ export declare class Extrinsic extends WithDebug {
|
|
|
42
42
|
readonly disputes: DisputesExtrinsic;
|
|
43
43
|
static Codec: import("@typeberry/codec").Descriptor<Extrinsic, import("@typeberry/codec").ViewOf<Extrinsic, {
|
|
44
44
|
tickets: import("@typeberry/codec").Descriptor<readonly import("./tickets.js").SignedTicket[] & import("@typeberry/utils").WithOpaque<"Size: [0..chainSpec.maxTicketsPerExtrinsic)">, import("@typeberry/codec").SequenceView<import("./tickets.js").SignedTicket, import("@typeberry/codec").ViewOf<import("./tickets.js").SignedTicket, {
|
|
45
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
45
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
46
46
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
47
47
|
}>>>;
|
|
48
48
|
preimages: import("@typeberry/codec").Descriptor<import("./preimage.js").Preimage[], import("@typeberry/codec").SequenceView<import("./preimage.js").Preimage, import("@typeberry/codec").ViewOf<import("./preimage.js").Preimage, {
|
|
@@ -172,7 +172,7 @@ export declare class Block extends WithDebug {
|
|
|
172
172
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("./header.js").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("./header.js").TicketsMarker, {
|
|
173
173
|
tickets: import("@typeberry/codec").Descriptor<readonly import("./tickets.js").Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<import("./tickets.js").Ticket, import("@typeberry/codec").ViewOf<import("./tickets.js").Ticket, {
|
|
174
174
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
175
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
175
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
176
176
|
}>>>;
|
|
177
177
|
}> | null>;
|
|
178
178
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -182,7 +182,7 @@ export declare class Block extends WithDebug {
|
|
|
182
182
|
}>>;
|
|
183
183
|
extrinsic: import("@typeberry/codec").Descriptor<Extrinsic, import("@typeberry/codec").ViewOf<Extrinsic, {
|
|
184
184
|
tickets: import("@typeberry/codec").Descriptor<readonly import("./tickets.js").SignedTicket[] & import("@typeberry/utils").WithOpaque<"Size: [0..chainSpec.maxTicketsPerExtrinsic)">, import("@typeberry/codec").SequenceView<import("./tickets.js").SignedTicket, import("@typeberry/codec").ViewOf<import("./tickets.js").SignedTicket, {
|
|
185
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
185
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
186
186
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
187
187
|
}>>>;
|
|
188
188
|
preimages: import("@typeberry/codec").Descriptor<import("./preimage.js").Preimage[], import("@typeberry/codec").SequenceView<import("./preimage.js").Preimage, import("@typeberry/codec").ViewOf<import("./preimage.js").Preimage, {
|
|
@@ -28,7 +28,7 @@ export declare class TicketsMarker extends WithDebug {
|
|
|
28
28
|
static Codec: import("@typeberry/codec").Descriptor<TicketsMarker, import("@typeberry/codec").ViewOf<TicketsMarker, {
|
|
29
29
|
tickets: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
30
30
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
31
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
31
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
32
32
|
}>>>;
|
|
33
33
|
}>>;
|
|
34
34
|
static create({ tickets }: CodecRecord<TicketsMarker>): TicketsMarker;
|
|
@@ -89,7 +89,7 @@ export declare class Header extends WithDebug {
|
|
|
89
89
|
ticketsMarker: import("@typeberry/codec").Descriptor<TicketsMarker | null, import("@typeberry/codec").ViewOf<TicketsMarker, {
|
|
90
90
|
tickets: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
91
91
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
92
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
92
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
93
93
|
}>>>;
|
|
94
94
|
}> | null>;
|
|
95
95
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, Bytes<2>>;
|
|
@@ -155,7 +155,7 @@ export declare const headerViewWithHashCodec: import("@typeberry/codec").Descrip
|
|
|
155
155
|
ticketsMarker: import("@typeberry/codec").Descriptor<TicketsMarker | null, import("@typeberry/codec").ViewOf<TicketsMarker, {
|
|
156
156
|
tickets: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
157
157
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
158
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
158
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
159
159
|
}>>>;
|
|
160
160
|
}> | null>;
|
|
161
161
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, Bytes<2>>;
|
|
@@ -178,7 +178,7 @@ export declare const headerViewWithHashCodec: import("@typeberry/codec").Descrip
|
|
|
178
178
|
ticketsMarker: import("@typeberry/codec").Descriptor<TicketsMarker | null, import("@typeberry/codec").ViewOf<TicketsMarker, {
|
|
179
179
|
tickets: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
180
180
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
181
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
181
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
182
182
|
}>>>;
|
|
183
183
|
}> | null>;
|
|
184
184
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, Bytes<2>>;
|
|
@@ -203,7 +203,7 @@ export declare const headerViewWithHashCodec: import("@typeberry/codec").Descrip
|
|
|
203
203
|
ticketsMarker: import("@typeberry/codec").Descriptor<TicketsMarker | null, import("@typeberry/codec").ViewOf<TicketsMarker, {
|
|
204
204
|
tickets: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
205
205
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
206
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
206
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
207
207
|
}>>>;
|
|
208
208
|
}> | null>;
|
|
209
209
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, Bytes<2>>;
|
|
@@ -226,7 +226,7 @@ export declare const headerViewWithHashCodec: import("@typeberry/codec").Descrip
|
|
|
226
226
|
ticketsMarker: import("@typeberry/codec").Descriptor<TicketsMarker | null, import("@typeberry/codec").ViewOf<TicketsMarker, {
|
|
227
227
|
tickets: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
228
228
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
229
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
229
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
230
230
|
}>>>;
|
|
231
231
|
}> | null>;
|
|
232
232
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, Bytes<2>>;
|
|
@@ -19,7 +19,7 @@ export declare function testBlockView(): import("@typeberry/codec").ViewOf<Block
|
|
|
19
19
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("./header.js").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("./header.js").TicketsMarker, {
|
|
20
20
|
tickets: import("@typeberry/codec").Descriptor<readonly import("./tickets.js").Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<import("./tickets.js").Ticket, import("@typeberry/codec").ViewOf<import("./tickets.js").Ticket, {
|
|
21
21
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
22
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
22
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
23
23
|
}>>>;
|
|
24
24
|
}> | null>;
|
|
25
25
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -29,7 +29,7 @@ export declare function testBlockView(): import("@typeberry/codec").ViewOf<Block
|
|
|
29
29
|
}>>;
|
|
30
30
|
extrinsic: import("@typeberry/codec").Descriptor<import("./block.js").Extrinsic, import("@typeberry/codec").ViewOf<import("./block.js").Extrinsic, {
|
|
31
31
|
tickets: import("@typeberry/codec").Descriptor<readonly import("./tickets.js").SignedTicket[] & import("@typeberry/utils").WithOpaque<"Size: [0..chainSpec.maxTicketsPerExtrinsic)">, import("@typeberry/codec").SequenceView<import("./tickets.js").SignedTicket, import("@typeberry/codec").ViewOf<import("./tickets.js").SignedTicket, {
|
|
32
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
32
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
33
33
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
34
34
|
}>>>;
|
|
35
35
|
preimages: import("@typeberry/codec").Descriptor<import("./preimage.js").Preimage[], import("@typeberry/codec").SequenceView<import("./preimage.js").Preimage, import("@typeberry/codec").ViewOf<import("./preimage.js").Preimage, {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Bytes } from "#@typeberry/bytes";
|
|
2
2
|
import { type CodecRecord } from "#@typeberry/codec";
|
|
3
3
|
import type { KnownSizeArray } from "#@typeberry/collections";
|
|
4
|
+
import type { ChainSpec } from "#@typeberry/config";
|
|
4
5
|
import { type BandersnatchProof } from "#@typeberry/crypto/bandersnatch.js";
|
|
5
6
|
import { type U8 } from "#@typeberry/numbers";
|
|
6
7
|
import { type Opaque, WithDebug } from "#@typeberry/utils";
|
|
@@ -11,14 +12,14 @@ import { type Opaque, WithDebug } from "#@typeberry/utils";
|
|
|
11
12
|
* https://graypaper.fluffylabs.dev/#/579bd12/417200417400
|
|
12
13
|
*/
|
|
13
14
|
export type TicketAttempt = Opaque<U8, "TicketAttempt[0|1|2]">;
|
|
14
|
-
export declare function tryAsTicketAttempt(x: number): TicketAttempt;
|
|
15
|
+
export declare function tryAsTicketAttempt(x: number, chainSpec: ChainSpec): TicketAttempt;
|
|
15
16
|
export declare class SignedTicket extends WithDebug {
|
|
16
17
|
/** Which attempt was it? */
|
|
17
18
|
readonly attempt: TicketAttempt;
|
|
18
19
|
/** The bandersnatch membership proof of knowledge. */
|
|
19
20
|
readonly signature: BandersnatchProof;
|
|
20
21
|
static Codec: import("@typeberry/codec").Descriptor<SignedTicket, import("@typeberry/codec").ViewOf<SignedTicket, {
|
|
21
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">,
|
|
22
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
22
23
|
signature: import("@typeberry/codec").Descriptor<Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, Bytes<784>>;
|
|
23
24
|
}>>;
|
|
24
25
|
static create({ attempt, signature }: CodecRecord<SignedTicket>): SignedTicket;
|
|
@@ -36,7 +37,7 @@ export declare class Ticket extends WithDebug {
|
|
|
36
37
|
readonly attempt: TicketAttempt;
|
|
37
38
|
static Codec: import("@typeberry/codec").Descriptor<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
38
39
|
id: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
39
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">,
|
|
40
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
40
41
|
}>>;
|
|
41
42
|
static create({ id, attempt }: CodecRecord<Ticket>): Ticket;
|
|
42
43
|
private constructor();
|
|
@@ -52,7 +53,7 @@ export declare class Ticket extends WithDebug {
|
|
|
52
53
|
declare const TicketsExtrinsicBounds = "Size: [0..chainSpec.maxTicketsPerExtrinsic)";
|
|
53
54
|
export type TicketsExtrinsic = KnownSizeArray<SignedTicket, typeof TicketsExtrinsicBounds>;
|
|
54
55
|
export declare const ticketsExtrinsicCodec: import("@typeberry/codec").Descriptor<readonly SignedTicket[] & import("@typeberry/utils").WithOpaque<"Size: [0..chainSpec.maxTicketsPerExtrinsic)">, import("@typeberry/codec").SequenceView<SignedTicket, import("@typeberry/codec").ViewOf<SignedTicket, {
|
|
55
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">,
|
|
56
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
56
57
|
signature: import("@typeberry/codec").Descriptor<Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, Bytes<784>>;
|
|
57
58
|
}>>>;
|
|
58
59
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/tickets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAErG,OAAO,
|
|
1
|
+
{"version":3,"file":"tickets.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/tickets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAErG,OAAO,EAAqB,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAgB,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAC/D,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAKjF;AAaD,qBAAa,YAAa,SAAQ,SAAS;IAWvC,4BAA4B;aACZ,OAAO,EAAE,aAAa;IACtC,sDAAsD;aACtC,SAAS,EAAE,iBAAiB;IAb9C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI/D,OAAO;CAQR;AAED,gDAAgD;AAChD,qBAAa,MAAO,SAAQ,SAAS;IAWjC;;;;OAIG;aACa,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7B,2BAA2B;aACX,OAAO,EAAE,aAAa;IAjBxC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC;IAIlD,OAAO;CAYR;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,sBAAsB,gDAAgD,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,EAAE,OAAO,sBAAsB,CAAC,CAAC;AAE3F,eAAO,MAAM,qBAAqB;;;IAUhC,CAAC"}
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { codec } from "#@typeberry/codec";
|
|
2
2
|
import { BANDERSNATCH_PROOF_BYTES } from "#@typeberry/crypto/bandersnatch.js";
|
|
3
3
|
import { HASH_SIZE } from "#@typeberry/hash";
|
|
4
|
-
import { tryAsU8 } from "#@typeberry/numbers";
|
|
4
|
+
import { tryAsU8, tryAsU32 } from "#@typeberry/numbers";
|
|
5
5
|
import { asOpaqueType, WithDebug } from "#@typeberry/utils";
|
|
6
6
|
import { codecKnownSizeArray, codecWithContext } from "./codec-utils.js";
|
|
7
|
-
export function tryAsTicketAttempt(x) {
|
|
7
|
+
export function tryAsTicketAttempt(x, chainSpec) {
|
|
8
|
+
if (x >= chainSpec.ticketsPerValidator) {
|
|
9
|
+
throw new Error(`Ticket attempt ${x} is out of bounds [0, ${chainSpec.ticketsPerValidator})`);
|
|
10
|
+
}
|
|
8
11
|
return asOpaqueType(tryAsU8(x));
|
|
9
12
|
}
|
|
13
|
+
const ticketAttemptCodec = codecWithContext((context) => {
|
|
14
|
+
return codec.varU32.convert((x) => {
|
|
15
|
+
tryAsTicketAttempt(x, context);
|
|
16
|
+
return tryAsU32(x);
|
|
17
|
+
}, (x) => tryAsTicketAttempt(x, context));
|
|
18
|
+
});
|
|
10
19
|
/* Bandersnatch-signed ticket contest entry. */
|
|
11
20
|
export class SignedTicket extends WithDebug {
|
|
12
21
|
attempt;
|
|
13
22
|
signature;
|
|
14
23
|
static Codec = codec.Class(SignedTicket, {
|
|
15
|
-
|
|
16
|
-
attempt: codec.u8.asOpaque(),
|
|
24
|
+
attempt: ticketAttemptCodec,
|
|
17
25
|
signature: codec.bytes(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
18
26
|
});
|
|
19
27
|
static create({ attempt, signature }) {
|
|
@@ -35,8 +43,7 @@ export class Ticket extends WithDebug {
|
|
|
35
43
|
attempt;
|
|
36
44
|
static Codec = codec.Class(Ticket, {
|
|
37
45
|
id: codec.bytes(HASH_SIZE),
|
|
38
|
-
|
|
39
|
-
attempt: codec.u8.asOpaque(),
|
|
46
|
+
attempt: ticketAttemptCodec,
|
|
40
47
|
});
|
|
41
48
|
static create({ id, attempt }) {
|
|
42
49
|
return new Ticket(id, attempt);
|
|
@@ -18,7 +18,7 @@ export declare const blockViewFromJson: (spec: ChainSpec) => import("@typeberry/
|
|
|
18
18
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
19
19
|
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<import("@typeberry/block").Ticket, import("@typeberry/codec").ViewOf<import("@typeberry/block").Ticket, {
|
|
20
20
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
21
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
21
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
22
22
|
}>>>;
|
|
23
23
|
}> | null>;
|
|
24
24
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -28,7 +28,7 @@ export declare const blockViewFromJson: (spec: ChainSpec) => import("@typeberry/
|
|
|
28
28
|
}>>;
|
|
29
29
|
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block").Extrinsic, import("@typeberry/codec").ViewOf<import("@typeberry/block").Extrinsic, {
|
|
30
30
|
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").SignedTicket[] & import("@typeberry/utils").WithOpaque<"Size: [0..chainSpec.maxTicketsPerExtrinsic)">, import("@typeberry/codec").SequenceView<import("@typeberry/block").SignedTicket, import("@typeberry/codec").ViewOf<import("@typeberry/block").SignedTicket, {
|
|
31
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
31
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
32
32
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
33
33
|
}>>>;
|
|
34
34
|
preimages: import("@typeberry/codec").Descriptor<import("@typeberry/block").Preimage[], import("@typeberry/codec").SequenceView<import("@typeberry/block").Preimage, import("@typeberry/codec").ViewOf<import("@typeberry/block").Preimage, {
|
|
@@ -3,7 +3,7 @@ import { json, parseFromJson } from "#@typeberry/json-parser";
|
|
|
3
3
|
import { getExtrinsicFromJson } from "./extrinsic.js";
|
|
4
4
|
import { headerFromJson } from "./header.js";
|
|
5
5
|
export const blockFromJson = (spec) => json.object({
|
|
6
|
-
header: headerFromJson,
|
|
6
|
+
header: headerFromJson(spec),
|
|
7
7
|
extrinsic: getExtrinsicFromJson(spec),
|
|
8
8
|
}, ({ header, extrinsic }) => Block.create({ header, extrinsic }));
|
|
9
9
|
export const blockViewFromJson = (spec) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type TicketAttempt } from "#@typeberry/block/tickets.js";
|
|
2
2
|
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
3
|
+
import type { ChainSpec } from "#@typeberry/config";
|
|
3
4
|
import { type FromJson } from "#@typeberry/json-parser";
|
|
4
5
|
export declare namespace fromJson {
|
|
5
6
|
const bytesN: <N extends number, T extends Bytes<N> = Bytes<N>>(n: N) => import("@typeberry/json-parser").FromJsonWithParser<string, T>;
|
|
@@ -9,7 +10,7 @@ export declare namespace fromJson {
|
|
|
9
10
|
const bytesBlob: import("@typeberry/json-parser").FromJsonWithParser<string, BytesBlob>;
|
|
10
11
|
const bytesBlobNoPrefix: import("@typeberry/json-parser").FromJsonWithParser<string, BytesBlob>;
|
|
11
12
|
const ed25519Signature: import("@typeberry/json-parser").FromJsonWithParser<string, Bytes<64> & import("@typeberry/utils").WithOpaque<"Ed25519Signature">>;
|
|
12
|
-
const ticketAttempt: FromJson<TicketAttempt>;
|
|
13
|
+
const ticketAttempt: (spec: ChainSpec) => FromJson<TicketAttempt>;
|
|
13
14
|
const uint8Array: import("@typeberry/json-parser").FromJsonWithParser<unknown, Uint8Array<ArrayBuffer>>;
|
|
14
15
|
const bigUint64Array: import("@typeberry/json-parser").FromJsonWithParser<unknown, BigUint64Array<ArrayBuffer>>;
|
|
15
16
|
const bigUint64: import("@typeberry/json-parser").FromJsonWithParser<unknown, bigint>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block-json/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block-json/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,wBAAwB,CAAC;AAE7D,yBAAiB,QAAQ,CAAC;IACjB,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,mEACd,CAAC;IAExD,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,mEACd,CAAC;IAEhE,MAAM,OAAO,GAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,qEAAoE,CAAC;IAEzG,MAAM,eAAe,GAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,qEACoB,CAAC;IAEjE,MAAM,SAAS,wEAAuC,CAAC;IAEvD,MAAM,iBAAiB,wEAA+C,CAAC;IAEvE,MAAM,gBAAgB,oIAA+E,CAAC;IAEtG,MAAM,aAAa,GAAI,MAAM,SAAS,KAGrC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEzB,MAAM,UAAU,uFAUrB,CAAC;IAEI,MAAM,cAAc,2FAUzB,CAAC;IAEI,MAAM,SAAS,sEAA2C,CAAC;CACnE"}
|
|
@@ -10,11 +10,8 @@ export var fromJson;
|
|
|
10
10
|
fromJson.bytesBlob = json.fromString(BytesBlob.parseBlob);
|
|
11
11
|
fromJson.bytesBlobNoPrefix = json.fromString(BytesBlob.parseBlobNoPrefix);
|
|
12
12
|
fromJson.ed25519Signature = json.fromString((v) => Bytes.parseBytes(v, 64).asOpaque());
|
|
13
|
-
fromJson.ticketAttempt = json.fromNumber((v) => {
|
|
14
|
-
|
|
15
|
-
throw new Error("Invalid TicketAttempt value.");
|
|
16
|
-
}
|
|
17
|
-
return tryAsTicketAttempt(v);
|
|
13
|
+
fromJson.ticketAttempt = (spec) => json.fromNumber((v) => {
|
|
14
|
+
return tryAsTicketAttempt(v, spec);
|
|
18
15
|
});
|
|
19
16
|
fromJson.uint8Array = json.fromAny((v) => {
|
|
20
17
|
if (Array.isArray(v)) {
|
|
@@ -6,7 +6,7 @@ import { guaranteesExtrinsicFromJson } from "./guarantees-extrinsic.js";
|
|
|
6
6
|
import { preimagesExtrinsicFromJson } from "./preimages-extrinsic.js";
|
|
7
7
|
import { ticketsExtrinsicFromJson } from "./tickets-extrinsic.js";
|
|
8
8
|
export const getExtrinsicFromJson = (ctx) => json.object({
|
|
9
|
-
tickets: ticketsExtrinsicFromJson,
|
|
9
|
+
tickets: ticketsExtrinsicFromJson(ctx),
|
|
10
10
|
preimages: preimagesExtrinsicFromJson,
|
|
11
11
|
guarantees: guaranteesExtrinsicFromJson,
|
|
12
12
|
assurances: getAssurancesExtrinsicFromJson(ctx),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Header } from "#@typeberry/block";
|
|
2
|
-
|
|
2
|
+
import type { ChainSpec } from "#@typeberry/config";
|
|
3
|
+
export declare const headerFromJson: (spec: ChainSpec) => import("@typeberry/json-parser").FromJsonWithParser<unknown, Header>;
|
|
3
4
|
//# sourceMappingURL=header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block-json/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,MAAM,EAQP,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block-json/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,MAAM,EAQP,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA6CnD,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,yEAqD7C,CAAC"}
|
|
@@ -14,36 +14,38 @@ const epochMark = json.object({
|
|
|
14
14
|
tickets_entropy: fromJson.bytes32(),
|
|
15
15
|
validators: json.array(validatorKeysFromJson),
|
|
16
16
|
}, (x) => EpochMarker.create({ entropy: x.entropy, ticketsEntropy: x.tickets_entropy, validators: x.validators }));
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
17
|
+
export const headerFromJson = (spec) => {
|
|
18
|
+
const ticket = json.object({
|
|
19
|
+
id: fromJson.bytes32(),
|
|
20
|
+
attempt: fromJson.ticketAttempt(spec),
|
|
21
|
+
}, (x) => Ticket.create({ id: x.id, attempt: x.attempt }));
|
|
22
|
+
return json.object({
|
|
23
|
+
parent: fromJson.bytes32(),
|
|
24
|
+
parent_state_root: fromJson.bytes32(),
|
|
25
|
+
extrinsic_hash: fromJson.bytes32(),
|
|
26
|
+
slot: "number",
|
|
27
|
+
epoch_mark: json.optional(epochMark),
|
|
28
|
+
tickets_mark: json.optional(json.array(ticket)),
|
|
29
|
+
offenders_mark: json.array(fromJson.bytes32()),
|
|
30
|
+
author_index: "number",
|
|
31
|
+
entropy_source: bandersnatchVrfSignature,
|
|
32
|
+
seal: bandersnatchVrfSignature,
|
|
33
|
+
}, ({ parent, parent_state_root, extrinsic_hash, slot, epoch_mark, tickets_mark, offenders_mark, author_index, entropy_source, seal, }) => {
|
|
34
|
+
const epochMarker = epoch_mark ?? null;
|
|
35
|
+
const ticketsMarker = tickets_mark === undefined || tickets_mark === null
|
|
36
|
+
? null
|
|
37
|
+
: TicketsMarker.create({ tickets: asOpaqueType(tickets_mark) });
|
|
38
|
+
return Header.create({
|
|
39
|
+
parentHeaderHash: parent,
|
|
40
|
+
priorStateRoot: parent_state_root,
|
|
41
|
+
extrinsicHash: extrinsic_hash,
|
|
42
|
+
timeSlotIndex: slot,
|
|
43
|
+
epochMarker,
|
|
44
|
+
ticketsMarker,
|
|
45
|
+
offendersMarker: offenders_mark,
|
|
46
|
+
bandersnatchBlockAuthorIndex: author_index,
|
|
47
|
+
entropySource: entropy_source,
|
|
48
|
+
seal,
|
|
49
|
+
});
|
|
48
50
|
});
|
|
49
|
-
}
|
|
51
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { SignedTicket } from "#@typeberry/block/tickets.js";
|
|
2
|
-
|
|
2
|
+
import type { ChainSpec } from "#@typeberry/config";
|
|
3
|
+
export declare const ticketsExtrinsicFromJson: (spec: ChainSpec) => ["array", import("@typeberry/json-parser").FromJsonWithParser<string, SignedTicket> | import("@typeberry/json-parser").FromJsonWithParser<number, SignedTicket> | import("@typeberry/json-parser").FromJsonWithParser<unknown, SignedTicket> | import("@typeberry/json-parser").ObjectFromJson<SignedTicket> | import("@typeberry/json-parser").FromJsonOptional<SignedTicket> | import("@typeberry/json-parser").Parser<unknown, SignedTicket[]>];
|
|
3
4
|
//# sourceMappingURL=tickets-extrinsic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tickets-extrinsic.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block-json/tickets-extrinsic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"tickets-extrinsic.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block-json/tickets-extrinsic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,eAAO,MAAM,wBAAwB,GAAI,MAAM,SAAS,ubAUvD,CAAC"}
|
|
@@ -3,8 +3,10 @@ import { Bytes } from "#@typeberry/bytes";
|
|
|
3
3
|
import { BANDERSNATCH_PROOF_BYTES } from "#@typeberry/crypto/bandersnatch.js";
|
|
4
4
|
import { json } from "#@typeberry/json-parser";
|
|
5
5
|
import { fromJson } from "./common.js";
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export const ticketsExtrinsicFromJson = (spec) => {
|
|
7
|
+
const ticketEnvelopeFromJson = json.object({
|
|
8
|
+
attempt: fromJson.ticketAttempt(spec),
|
|
9
|
+
signature: json.fromString((v) => Bytes.parseBytes(v, BANDERSNATCH_PROOF_BYTES).asOpaque()),
|
|
10
|
+
}, (x) => SignedTicket.create({ attempt: x.attempt, signature: x.signature }));
|
|
11
|
+
return json.array(ticketEnvelopeFromJson);
|
|
12
|
+
};
|
|
@@ -140,7 +140,7 @@ export declare class Initialize extends WithDebug {
|
|
|
140
140
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
141
141
|
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<import("@typeberry/block").Ticket, import("@typeberry/codec").ViewOf<import("@typeberry/block").Ticket, {
|
|
142
142
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
143
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">,
|
|
143
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, U32>;
|
|
144
144
|
}>>>;
|
|
145
145
|
}> | null>;
|
|
146
146
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -6,12 +6,14 @@ import { type Network, type Peer } from "#@typeberry/networking";
|
|
|
6
6
|
import { type Bootnode } from "./peers.js";
|
|
7
7
|
import { StreamManager } from "./stream-manager.js";
|
|
8
8
|
import { SyncTask } from "./tasks/sync.js";
|
|
9
|
+
import { TicketDistributionTask } from "./tasks/ticket-distribution.js";
|
|
9
10
|
export declare function setup(bind: {
|
|
10
11
|
host: string;
|
|
11
12
|
port: number;
|
|
12
13
|
}, genesisHash: HeaderHash, key: ed25519.Ed25519Pair, bootnodes: Bootnode[], spec: ChainSpec, blocks: BlocksDb, onNewBlocks: (blocks: BlockView[]) => Promise<void>): Promise<{
|
|
13
14
|
network: import("@typeberry/networking/quic-network.js").QuicNetwork;
|
|
14
15
|
syncTask: SyncTask;
|
|
16
|
+
ticketTask: TicketDistributionTask;
|
|
15
17
|
streamManager: StreamManager;
|
|
16
18
|
}>;
|
|
17
19
|
export declare function setupPeerListeners(syncTask: SyncTask, network: Network<Peer>, streamManager: StreamManager): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/network.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/network.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAKxE,wBAAsB,KAAK,CACzB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpC,WAAW,EAAE,UAAU,EACvB,GAAG,EAAE,OAAO,CAAC,WAAW,EACxB,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,QAAQ,EAEhB,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;;;;;GA0CpD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,aAAa,QAmB1G"}
|
|
@@ -6,6 +6,7 @@ import { OK } from "#@typeberry/utils";
|
|
|
6
6
|
import { Connections } from "./peers.js";
|
|
7
7
|
import { StreamManager } from "./stream-manager.js";
|
|
8
8
|
import { SyncTask } from "./tasks/sync.js";
|
|
9
|
+
import { TicketDistributionTask } from "./tasks/ticket-distribution.js";
|
|
9
10
|
import { handleAsyncErrors } from "./utils.js";
|
|
10
11
|
const logger = Logger.new(import.meta.filename, "jamnps");
|
|
11
12
|
export async function setup(bind, genesisHash, key, bootnodes, spec, blocks,
|
|
@@ -24,10 +25,12 @@ onNewBlocks) {
|
|
|
24
25
|
const streamManager = new StreamManager();
|
|
25
26
|
// start the networking tasks
|
|
26
27
|
const syncTask = SyncTask.start(spec, blake2b, streamManager, connections, blocks, onNewBlocks);
|
|
28
|
+
const ticketTask = TicketDistributionTask.start(streamManager, connections, spec);
|
|
27
29
|
setImmediate(async () => {
|
|
28
30
|
while (network.isRunning) {
|
|
29
31
|
await setTimeout(3000);
|
|
30
32
|
syncTask.maintainSync();
|
|
33
|
+
ticketTask.maintainDistribution();
|
|
31
34
|
}
|
|
32
35
|
});
|
|
33
36
|
// TODO [ToDr] This design is a bit weird,
|
|
@@ -40,6 +43,7 @@ onNewBlocks) {
|
|
|
40
43
|
return {
|
|
41
44
|
network,
|
|
42
45
|
syncTask,
|
|
46
|
+
ticketTask,
|
|
43
47
|
streamManager,
|
|
44
48
|
};
|
|
45
49
|
}
|