@typeberry/lib 0.5.3 → 0.5.4-ab9c0e1
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 +8 -4
- package/packages/core/hash/hash.d.ts.map +1 -1
- package/packages/core/hash/hash.js +1 -0
- package/packages/core/networking/certificate.d.ts.map +1 -1
- package/packages/core/networking/certificate.js +1 -0
- package/packages/core/networking/package.json +1 -1
- package/packages/core/networking/setup.d.ts.map +1 -1
- package/packages/core/networking/setup.js +16 -12
- package/packages/core/numbers/index.d.ts +4 -0
- package/packages/core/numbers/index.d.ts.map +1 -1
- package/packages/core/numbers/index.js +4 -4
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts +23 -17
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +23 -31
- package/packages/core/pvm-interpreter/ops/math-consts.d.ts +2 -3
- package/packages/core/pvm-interpreter/ops/math-consts.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/math-consts.js +2 -3
- package/packages/core/pvm-interpreter/ops/math-ops.js +3 -3
- package/packages/core/pvm-interpreter/ops/math-utils.js +13 -13
- package/packages/core/pvm-interpreter/ops/math-utils.test.js +17 -16
- package/packages/core/telemetry/package.json +1 -1
- package/packages/core/utils/compatibility.d.ts +0 -1
- package/packages/core/utils/compatibility.d.ts.map +1 -1
- package/packages/core/utils/compatibility.js +1 -2
- package/packages/core/utils/compatibility.test.js +6 -10
- package/packages/extensions/ipc/jamnp/handler.d.ts +5 -4
- package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
- package/packages/extensions/ipc/jamnp/handler.js +59 -34
- package/packages/extensions/ipc/jamnp/stream.d.ts +6 -4
- package/packages/extensions/ipc/jamnp/stream.d.ts.map +1 -1
- package/packages/jam/block/index.d.ts +11 -11
- package/packages/jam/block/index.d.ts.map +1 -1
- package/packages/jam/block/index.js +11 -11
- package/packages/jam/block/work-item.d.ts +13 -4
- package/packages/jam/block/work-item.d.ts.map +1 -1
- package/packages/jam/block/work-package.d.ts +3 -1
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +6 -2
- package/packages/jam/block/work-result.d.ts +3 -5
- package/packages/jam/block/work-result.d.ts.map +1 -1
- package/packages/jam/block/work-result.js +6 -0
- package/packages/jam/block-json/block.d.ts +125 -0
- package/packages/jam/block-json/block.d.ts.map +1 -1
- package/packages/jam/block-json/block.js +9 -2
- package/packages/jam/block-json/work-result.d.ts.map +1 -1
- package/packages/jam/block-json/work-result.js +6 -6
- package/packages/jam/database-lmdb/states.test.js +2 -3
- package/packages/jam/executor/index.d.ts +4 -0
- package/packages/jam/executor/index.d.ts.map +1 -0
- package/packages/jam/executor/index.js +2 -0
- package/packages/jam/{transition/accumulate → executor}/pvm-executor.d.ts +19 -16
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -0
- package/packages/jam/{transition/accumulate → executor}/pvm-executor.js +46 -3
- package/packages/jam/fuzz-proto/v1/handler.d.ts +1 -1
- package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/handler.js +43 -19
- package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
- package/packages/jam/in-core/externalities/refine.d.ts +24 -0
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine.js +36 -0
- package/packages/jam/in-core/in-core.d.ts +60 -0
- package/packages/jam/in-core/in-core.d.ts.map +1 -0
- package/packages/jam/in-core/in-core.js +294 -0
- package/packages/jam/in-core/in-core.test.d.ts +2 -0
- package/packages/jam/in-core/in-core.test.d.ts.map +1 -0
- package/packages/jam/in-core/in-core.test.js +81 -0
- package/packages/jam/in-core/index.d.ts +2 -0
- package/packages/jam/in-core/index.d.ts.map +1 -0
- package/packages/jam/in-core/index.js +1 -0
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.js +6 -10
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +32 -73
- package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/new.js +2 -4
- package/packages/jam/jam-host-calls/accumulate/new.test.js +4 -5
- package/packages/jam/jam-host-calls/general/fetch.d.ts +1 -57
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +6 -29
- package/packages/jam/jam-host-calls/general/fetch.test.js +2 -58
- package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
- package/packages/jam/jamnp-s/peers.js +10 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +10 -8
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +11 -9
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +3 -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 +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +9 -9
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +8 -6
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +16 -16
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/stream.d.ts +13 -7
- package/packages/jam/jamnp-s/protocol/stream.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/stream.js +5 -4
- package/packages/jam/jamnp-s/protocol/test-utils.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/test-utils.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/test-utils.js +9 -12
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -2
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +1 -1
- package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
- package/packages/jam/jamnp-s/stream-manager.js +7 -5
- package/packages/jam/jamnp-s/stream-manager.test.js +8 -5
- package/packages/jam/jamnp-s/tasks/sync.js +1 -1
- package/packages/jam/node/jam-config.d.ts +4 -1
- package/packages/jam/node/jam-config.d.ts.map +1 -1
- package/packages/jam/node/jam-config.js +6 -2
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +5 -4
- package/packages/jam/node/package.json +1 -1
- package/packages/jam/node/reader.d.ts +25 -25
- package/packages/jam/node/workers.d.ts +183 -183
- package/packages/jam/rpc-validation/types.d.ts +7 -3
- package/packages/jam/rpc-validation/types.d.ts.map +1 -1
- package/packages/jam/rpc-validation/validation.d.ts +254 -36
- package/packages/jam/rpc-validation/validation.d.ts.map +1 -1
- package/packages/jam/rpc-validation/validation.js +20 -2
- package/packages/jam/state/accumulation-queue.d.ts +26 -26
- package/packages/jam/state/assurances.d.ts +26 -26
- package/packages/jam/state/in-memory-state.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state.js +2 -3
- package/packages/jam/state/privileged-services.d.ts +1 -1
- package/packages/jam/state/privileged-services.d.ts.map +1 -1
- package/packages/jam/state/privileged-services.js +1 -6
- package/packages/jam/state/service.d.ts +1 -1
- package/packages/jam/state/service.d.ts.map +1 -1
- package/packages/jam/state/statistics.d.ts +0 -8
- package/packages/jam/state/statistics.d.ts.map +1 -1
- package/packages/jam/state/statistics.js +14 -44
- package/packages/jam/state/statistics.test.js +1 -8
- package/packages/jam/state/test.utils.d.ts +1 -1
- package/packages/jam/state/test.utils.d.ts.map +1 -1
- package/packages/jam/state/test.utils.js +6 -25
- package/packages/jam/state-json/accounts.d.ts +10 -0
- package/packages/jam/state-json/accounts.d.ts.map +1 -1
- package/packages/jam/state-json/accounts.js +47 -19
- package/packages/jam/state-json/dump.d.ts.map +1 -1
- package/packages/jam/state-json/dump.js +5 -9
- package/packages/jam/state-json/dump.test.js +2 -10
- package/packages/jam/state-json/statistics.d.ts +1 -1
- package/packages/jam/state-json/statistics.d.ts.map +1 -1
- package/packages/jam/state-json/statistics.js +1 -13
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +29 -31
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialize.d.ts +4 -4
- package/packages/jam/state-merkleization/serialize.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialize.js +5 -8
- package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
- package/packages/jam/state-merkleization/state-entries.test.js +1 -7
- package/packages/jam/state-vectors/index.d.ts +377 -5
- package/packages/jam/state-vectors/index.d.ts.map +1 -1
- package/packages/jam/state-vectors/index.js +3 -3
- package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-data.js +1 -2
- package/packages/jam/transition/accumulate/accumulate-queue.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulate-state.d.ts +1 -2
- package/packages/jam/transition/accumulate/accumulate-state.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-utils.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-utils.js +2 -6
- package/packages/jam/transition/accumulate/accumulate-utils.test.js +4 -6
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +19 -33
- package/packages/jam/transition/accumulate/accumulate.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +1 -2
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.test.js +1 -2
- package/packages/jam/transition/accumulate/index.d.ts +0 -1
- package/packages/jam/transition/accumulate/index.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/index.js +0 -1
- package/packages/jam/transition/accumulate/operand.d.ts +7 -7
- package/packages/jam/transition/chain-stf.d.ts +3 -5
- package/packages/jam/transition/chain-stf.d.ts.map +1 -1
- package/packages/jam/transition/chain-stf.js +5 -29
- package/packages/jam/transition/disputes/disputes.test.data2.d.ts +3 -3
- package/packages/jam/transition/disputes/disputes.test.data2.d.ts.map +1 -1
- package/packages/jam/transition/disputes/disputes.test.data2.js +2 -2
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +22 -49
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +8 -72
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +8 -21
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +5 -53
- package/packages/jam/transition/externalities/fetch-externalities.test.js +201 -114
- package/packages/jam/transition/hasher.test.js +2 -2
- package/packages/jam/transition/reports/error.d.ts +3 -1
- package/packages/jam/transition/reports/error.d.ts.map +1 -1
- package/packages/jam/transition/reports/error.js +2 -0
- package/packages/jam/transition/reports/test.utils.d.ts.map +1 -1
- package/packages/jam/transition/reports/test.utils.js +2 -2
- package/packages/jam/transition/reports/verify-basic.d.ts.map +1 -1
- package/packages/jam/transition/reports/verify-basic.js +10 -0
- package/packages/jam/transition/reports/verify-basic.test.js +29 -0
- package/packages/jam/transition/statistics.d.ts +0 -7
- package/packages/jam/transition/statistics.d.ts.map +1 -1
- package/packages/jam/transition/statistics.js +2 -11
- package/packages/jam/transition/statistics.test.js +0 -40
- package/packages/workers/block-authorship/generator.test.d.ts +2 -0
- package/packages/workers/block-authorship/generator.test.d.ts.map +1 -0
- package/packages/workers/block-authorship/generator.test.js +200 -0
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +23 -4
- package/packages/workers/block-authorship/package.json +1 -1
- package/packages/workers/block-authorship/protocol.d.ts +53 -51
- package/packages/workers/block-authorship/protocol.d.ts.map +1 -1
- package/packages/workers/block-authorship/protocol.js +6 -3
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +0 -1
- package/packages/workers/importer/package.json +1 -1
- package/packages/workers/importer/protocol.d.ts +54 -54
- package/packages/workers/jam-network/protocol.d.ts +79 -79
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts +0 -36
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +0 -1
- package/packages/jam/transition/accumulate/deferred-transfers.js +0 -95
- package/packages/jam/transition/accumulate/pvm-executor.d.ts.map +0 -1
|
@@ -3,7 +3,7 @@ import { SignedTicket } from "#@typeberry/block/tickets.js";
|
|
|
3
3
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
4
4
|
import { type CodecRecord } from "#@typeberry/codec";
|
|
5
5
|
import { WithDebug } from "#@typeberry/utils";
|
|
6
|
-
import { type StreamHandler, type StreamMessageSender } from "./stream.js";
|
|
6
|
+
import { type StreamHandler, type StreamId, type StreamMessageSender } from "./stream.js";
|
|
7
7
|
/**
|
|
8
8
|
* JAM-SNP CE-131 and CE-132 streams.
|
|
9
9
|
*
|
|
@@ -32,13 +32,13 @@ export declare class ServerHandler<T extends STREAM_KIND> implements StreamHandl
|
|
|
32
32
|
private readonly onTicketReceived;
|
|
33
33
|
constructor(kind: T, onTicketReceived: (epochIndex: Epoch, ticket: SignedTicket) => void);
|
|
34
34
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
35
|
-
onClose(): void;
|
|
35
|
+
onClose(_streamId: StreamId): void;
|
|
36
36
|
}
|
|
37
37
|
export declare class ClientHandler<T extends STREAM_KIND> implements StreamHandler<T> {
|
|
38
38
|
readonly kind: T;
|
|
39
39
|
constructor(kind: T);
|
|
40
40
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
41
|
-
onClose(): void;
|
|
41
|
+
onClose(_streamId: StreamId): void;
|
|
42
42
|
sendTicket(sender: StreamMessageSender, epochIndex: Epoch, ticket: SignedTicket): void;
|
|
43
43
|
}
|
|
44
44
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-131-ce-132-safrole-ticket-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ce-131-ce-132-safrole-ticket-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAEH,eAAO,MAAM,8BAA8B,+DAAuB,CAAC;AACnE,eAAO,MAAM,wBAAwB,+DAAuB,CAAC;AAE7D,KAAK,WAAW,GAAG,OAAO,8BAA8B,GAAG,OAAO,wBAAwB,CAAC;AAE3F,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,UAAU,EAAE,KAAK;aACjB,MAAM,EAAE,YAAY;IAXtC,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAI5E,OAAO;CAMR;AAID,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAEzD,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADjB,IAAI,EAAE,CAAC,EACN,gBAAgB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI;IAGtF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAC/C,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAEnC,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ;IAE3B,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY;CAKhF"}
|
|
@@ -42,7 +42,7 @@ export class ServerHandler {
|
|
|
42
42
|
this.onTicketReceived(ticketDistribution.epochIndex, ticketDistribution.ticket);
|
|
43
43
|
sender.close();
|
|
44
44
|
}
|
|
45
|
-
onClose() { }
|
|
45
|
+
onClose(_streamId) { }
|
|
46
46
|
}
|
|
47
47
|
export class ClientHandler {
|
|
48
48
|
kind;
|
|
@@ -53,7 +53,7 @@ export class ClientHandler {
|
|
|
53
53
|
logger.warn `[${sender.streamId}][ce-${this.kind}] Unexpected message received. Closing.`;
|
|
54
54
|
sender.close();
|
|
55
55
|
}
|
|
56
|
-
onClose() { }
|
|
56
|
+
onClose(_streamId) { }
|
|
57
57
|
sendTicket(sender, epochIndex, ticket) {
|
|
58
58
|
const request = TicketDistributionRequest.create({ epochIndex, ticket });
|
|
59
59
|
sender.bufferAndSend(Encoder.encodeObject(TicketDistributionRequest.Codec, request));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CoreIndex } from "#@typeberry/block";
|
|
2
|
-
import { type
|
|
2
|
+
import { type WorkPackageExtrinsics } from "#@typeberry/block/work-item.js";
|
|
3
3
|
import { WorkPackage } from "#@typeberry/block/work-package.js";
|
|
4
4
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
5
5
|
import { type CodecRecord } from "#@typeberry/codec";
|
|
@@ -21,7 +21,7 @@ export declare class CoreWorkPackage extends WithDebug {
|
|
|
21
21
|
workPackage: import("@typeberry/codec").Descriptor<WorkPackage, import("@typeberry/codec").ViewOf<WorkPackage, {
|
|
22
22
|
authCodeHost: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">, import("@typeberry/bytes").Bytes<4>>;
|
|
23
23
|
authCodeHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"CodeHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
24
|
-
context: import("@typeberry/codec").Descriptor<import("@typeberry/block
|
|
24
|
+
context: import("@typeberry/codec").Descriptor<import("@typeberry/block").RefineContext, import("@typeberry/codec").ViewOf<import("@typeberry/block").RefineContext, {
|
|
25
25
|
anchor: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"HeaderHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
26
26
|
stateRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"StateRootHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
27
27
|
beefyRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"BeefyHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
@@ -31,18 +31,18 @@ export declare class CoreWorkPackage extends WithDebug {
|
|
|
31
31
|
}>>;
|
|
32
32
|
authorization: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
33
33
|
parametrization: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
34
|
-
items: import("@typeberry/codec").Descriptor<import("@typeberry/collections").FixedSizeArray<import("@typeberry/block
|
|
34
|
+
items: import("@typeberry/codec").Descriptor<import("@typeberry/collections").FixedSizeArray<import("@typeberry/block").WorkItem, import("@typeberry/numbers").U8>, import("@typeberry/codec").SequenceView<import("@typeberry/block").WorkItem, import("@typeberry/codec").ViewOf<import("@typeberry/block").WorkItem, {
|
|
35
35
|
service: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">, import("@typeberry/bytes").Bytes<4>>;
|
|
36
36
|
codeHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"CodeHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
37
37
|
refineGasLimit: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/bytes").Bytes<8>>;
|
|
38
38
|
accumulateGasLimit: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/bytes").Bytes<8>>;
|
|
39
39
|
exportCount: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U16, import("@typeberry/bytes").Bytes<2>>;
|
|
40
40
|
payload: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
41
|
-
importSegments: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block
|
|
41
|
+
importSegments: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than 2048">, import("@typeberry/codec").SequenceView<import("@typeberry/block").ImportSpec, import("@typeberry/codec").ViewOf<import("@typeberry/block").ImportSpec, {
|
|
42
42
|
treeRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
43
43
|
index: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"Segment Index [U16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
44
44
|
}>>>;
|
|
45
|
-
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block
|
|
45
|
+
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block").WorkItemExtrinsicSpec[], import("@typeberry/codec").SequenceView<import("@typeberry/block").WorkItemExtrinsicSpec, import("@typeberry/codec").ViewOf<import("@typeberry/block").WorkItemExtrinsicSpec, {
|
|
46
46
|
hash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"ExtrinsicHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
47
47
|
len: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U32, import("@typeberry/bytes").Bytes<4>>;
|
|
48
48
|
}>>>;
|
|
@@ -55,15 +55,15 @@ export declare class CoreWorkPackage extends WithDebug {
|
|
|
55
55
|
export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
56
56
|
private readonly onWorkPackage;
|
|
57
57
|
kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
58
|
-
constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e:
|
|
59
|
-
readonly workPackages: Map<import("@typeberry/
|
|
58
|
+
constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e: WorkPackageExtrinsics) => void);
|
|
59
|
+
readonly workPackages: Map<string & import("@typeberry/utils").WithOpaque<"streamId">, CoreWorkPackage>;
|
|
60
60
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
61
61
|
onClose(streamId: StreamId): void;
|
|
62
62
|
}
|
|
63
63
|
export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
64
64
|
kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
65
65
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
66
|
-
onClose(): void;
|
|
67
|
-
sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic:
|
|
66
|
+
onClose(_streamId: StreamId): void;
|
|
67
|
+
sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic: WorkPackageExtrinsics): void;
|
|
68
68
|
}
|
|
69
69
|
//# sourceMappingURL=ce-133-work-package-submission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA2B,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;aAW1B,SAAS,EAAE,SAAS;aACpB,WAAW,EAAE,WAAW;IAX1C,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;IAItE,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,IAAI,gEAAe;gBAEU,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,qBAAqB,KAAK,IAAI;IAE5G,SAAgB,YAAY,mFAAwC;IAEpE,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAiBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IAEnB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAElC,eAAe,CACb,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,qBAAqB;CAUnC"}
|
|
@@ -37,7 +37,7 @@ export class ServerHandler {
|
|
|
37
37
|
}
|
|
38
38
|
workPackages = new Map();
|
|
39
39
|
onStreamMessage(sender, message) {
|
|
40
|
-
const streamId = sender
|
|
40
|
+
const { streamId } = sender;
|
|
41
41
|
// initially we expect the `CoreWorkPackage`
|
|
42
42
|
const workPackage = this.workPackages.get(streamId);
|
|
43
43
|
if (workPackage === undefined) {
|
|
@@ -62,7 +62,7 @@ export class ClientHandler {
|
|
|
62
62
|
logger.warn `[${sender.streamId}] Got unexpected message on CE-133 stream. Closing.`;
|
|
63
63
|
sender.close();
|
|
64
64
|
}
|
|
65
|
-
onClose() { }
|
|
65
|
+
onClose(_streamId) { }
|
|
66
66
|
sendWorkPackage(sender, coreIndex, workPackage, extrinsic) {
|
|
67
67
|
const corePack = CoreWorkPackage.create({ coreIndex, workPackage });
|
|
68
68
|
logger.trace `[${sender.streamId}] Sending work package: ${corePack}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-134-work-package-sharing.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAIH,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAGnC,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,SAAS,EAAE,SAAS;aACpB,oBAAoB,EAAE,eAAe,EAAE;IAXzD,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAIzF,OAAO;CAMR;AAED,qBAAa,0BAA2B,SAAQ,SAAS;aAWrC,cAAc,EAAE,cAAc;aAC9B,SAAS,EAAE,gBAAgB;IAX7C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,0BAA0B,CAAC;IAIpF,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,IAAI,gEAAe;gBAGA,aAAa,EAAE,CAC9B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAE9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAsBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEJ,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ce-134-work-package-sharing.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAIH,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAGnC,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,SAAS,EAAE,SAAS;aACpB,oBAAoB,EAAE,eAAe,EAAE;IAXzD,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAIzF,OAAO;CAMR;AAED,qBAAa,0BAA2B,SAAQ,SAAS;aAWrC,cAAc,EAAE,cAAc;aAC9B,SAAS,EAAE,gBAAgB;IAX7C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,0BAA0B,CAAC;IAIpF,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,IAAI,gEAAe;gBAGA,aAAa,EAAE,CAC9B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAE9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAsBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEJ,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAatE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQ3B,eAAe,CACnB,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAY5E"}
|
|
@@ -53,7 +53,7 @@ export class ServerHandler {
|
|
|
53
53
|
sender.close();
|
|
54
54
|
}
|
|
55
55
|
onStreamMessage(sender, message) {
|
|
56
|
-
const streamId = sender
|
|
56
|
+
const { streamId } = sender;
|
|
57
57
|
const request = this.requestsMap.get(streamId);
|
|
58
58
|
if (request === undefined) {
|
|
59
59
|
const receivedRequest = Decoder.decodeObject(WorkPackageSharingRequest.Codec, message);
|
|
@@ -78,12 +78,13 @@ export class ClientHandler {
|
|
|
78
78
|
kind = STREAM_KIND;
|
|
79
79
|
pendingRequests = new Map();
|
|
80
80
|
onStreamMessage(sender, message) {
|
|
81
|
-
const
|
|
81
|
+
const { streamId } = sender;
|
|
82
|
+
const pendingRequest = this.pendingRequests.get(streamId);
|
|
82
83
|
if (pendingRequest === undefined) {
|
|
83
84
|
throw new Error("Unexpected message received.");
|
|
84
85
|
}
|
|
85
86
|
const response = Decoder.decodeObject(WorkPackageSharingResponse.Codec, message);
|
|
86
|
-
logger.info `[${
|
|
87
|
+
logger.info `[${streamId}] Received work report hash and signature.`;
|
|
87
88
|
pendingRequest.resolve({ workReportHash: response.workReportHash, signature: response.signature });
|
|
88
89
|
sender.close();
|
|
89
90
|
}
|
|
@@ -95,13 +96,14 @@ export class ClientHandler {
|
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
async sendWorkPackage(sender, coreIndex, segmentsRootMappings, workPackageBundle) {
|
|
99
|
+
const { streamId } = sender;
|
|
98
100
|
const request = WorkPackageSharingRequest.create({ coreIndex, segmentsRootMappings });
|
|
99
|
-
logger.trace `[${
|
|
101
|
+
logger.trace `[${streamId}] Sending core index and segments-root mappings.`;
|
|
100
102
|
sender.bufferAndSend(Encoder.encodeObject(WorkPackageSharingRequest.Codec, request));
|
|
101
|
-
logger.trace `[${
|
|
103
|
+
logger.trace `[${streamId}] Sending work package bundle.`;
|
|
102
104
|
sender.bufferAndSend(Encoder.encodeObject(WorkPackageBundleCodec, workPackageBundle));
|
|
103
105
|
return new Promise((resolve, reject) => {
|
|
104
|
-
this.pendingRequests.set(
|
|
106
|
+
this.pendingRequests.set(streamId, { resolve, reject });
|
|
105
107
|
});
|
|
106
108
|
}
|
|
107
109
|
}
|
|
@@ -6,7 +6,7 @@ import { type CodecRecord } from "#@typeberry/codec";
|
|
|
6
6
|
import type { KnownSizeArray } from "#@typeberry/collections";
|
|
7
7
|
import type { ChainSpec } from "#@typeberry/config";
|
|
8
8
|
import { WithDebug } from "#@typeberry/utils";
|
|
9
|
-
import { type StreamHandler, type StreamMessageSender } from "./stream.js";
|
|
9
|
+
import { type StreamHandler, type StreamId, type StreamMessageSender } from "./stream.js";
|
|
10
10
|
/**
|
|
11
11
|
* JAMNP-S CE 135 Stream
|
|
12
12
|
*
|
|
@@ -21,14 +21,14 @@ export declare class GuaranteedWorkReport extends WithDebug {
|
|
|
21
21
|
readonly signatures: KnownSizeArray<Credential, "[0..ValidatorsCount)">;
|
|
22
22
|
static Codec: import("@typeberry/codec").Descriptor<GuaranteedWorkReport, import("@typeberry/codec").ViewOf<GuaranteedWorkReport, {
|
|
23
23
|
report: import("@typeberry/codec").Descriptor<WorkReport, import("@typeberry/codec").ViewOf<WorkReport, {
|
|
24
|
-
workPackageSpec: import("@typeberry/codec").Descriptor<import("@typeberry/block
|
|
24
|
+
workPackageSpec: import("@typeberry/codec").Descriptor<import("@typeberry/block").WorkPackageSpec, import("@typeberry/codec").ViewOf<import("@typeberry/block").WorkPackageSpec, {
|
|
25
25
|
hash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"WorkPackageHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
26
26
|
length: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U32, import("@typeberry/bytes").Bytes<4>>;
|
|
27
27
|
erasureRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
28
28
|
exportsRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"ExportsRootHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
29
29
|
exportsCount: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U16, import("@typeberry/bytes").Bytes<2>>;
|
|
30
30
|
}>>;
|
|
31
|
-
context: import("@typeberry/codec").Descriptor<import("@typeberry/block
|
|
31
|
+
context: import("@typeberry/codec").Descriptor<import("@typeberry/block").RefineContext, import("@typeberry/codec").ViewOf<import("@typeberry/block").RefineContext, {
|
|
32
32
|
anchor: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"HeaderHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
33
33
|
stateRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"StateRootHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
34
34
|
beefyRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"BeefyHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
@@ -40,32 +40,32 @@ export declare class GuaranteedWorkReport extends WithDebug {
|
|
|
40
40
|
authorizerHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"AuthorizerHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
41
41
|
authorizationGasUsed: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/numbers").U64>;
|
|
42
42
|
authorizationOutput: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
43
|
-
segmentRootLookup: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block
|
|
43
|
+
segmentRootLookup: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").WorkPackageInfo[], import("@typeberry/codec").SequenceView<import("@typeberry/block").WorkPackageInfo, import("@typeberry/codec").ViewOf<import("@typeberry/block").WorkPackageInfo, {
|
|
44
44
|
workPackageHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"WorkPackageHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
45
45
|
segmentTreeRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"ExportsRootHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
46
46
|
}>>>;
|
|
47
|
-
results: import("@typeberry/codec").Descriptor<import("@typeberry/collections").FixedSizeArray<import("@typeberry/block
|
|
47
|
+
results: import("@typeberry/codec").Descriptor<import("@typeberry/collections").FixedSizeArray<import("@typeberry/block").WorkResult, import("@typeberry/numbers").U8>, import("@typeberry/codec").SequenceView<import("@typeberry/block").WorkResult, import("@typeberry/codec").ViewOf<import("@typeberry/block").WorkResult, {
|
|
48
48
|
serviceId: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">, import("@typeberry/bytes").Bytes<4>>;
|
|
49
49
|
codeHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"CodeHash">, import("@typeberry/bytes").Bytes<32>>;
|
|
50
50
|
payloadHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
51
51
|
gas: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/bytes").Bytes<8>>;
|
|
52
|
-
result: import("@typeberry/codec").Descriptor<import("@typeberry/block
|
|
53
|
-
kind: import("@typeberry/block
|
|
52
|
+
result: import("@typeberry/codec").Descriptor<import("@typeberry/block").WorkExecResult, {
|
|
53
|
+
kind: import("@typeberry/block").WorkExecResultKind.ok;
|
|
54
54
|
okBlob: BytesBlob;
|
|
55
55
|
} | {
|
|
56
|
-
kind: import("@typeberry/block
|
|
56
|
+
kind: import("@typeberry/block").WorkExecResultKind.outOfGas;
|
|
57
57
|
} | {
|
|
58
|
-
kind: import("@typeberry/block
|
|
58
|
+
kind: import("@typeberry/block").WorkExecResultKind.panic;
|
|
59
59
|
} | {
|
|
60
|
-
kind: import("@typeberry/block
|
|
60
|
+
kind: import("@typeberry/block").WorkExecResultKind.incorrectNumberOfExports;
|
|
61
61
|
} | {
|
|
62
|
-
kind: import("@typeberry/block
|
|
62
|
+
kind: import("@typeberry/block").WorkExecResultKind.digestTooBig;
|
|
63
63
|
} | {
|
|
64
|
-
kind: import("@typeberry/block
|
|
64
|
+
kind: import("@typeberry/block").WorkExecResultKind.badCode;
|
|
65
65
|
} | {
|
|
66
|
-
kind: import("@typeberry/block
|
|
66
|
+
kind: import("@typeberry/block").WorkExecResultKind.codeOversize;
|
|
67
67
|
}>;
|
|
68
|
-
load: import("@typeberry/codec").Descriptor<import("@typeberry/block
|
|
68
|
+
load: import("@typeberry/codec").Descriptor<import("@typeberry/block").WorkRefineLoad, import("@typeberry/codec").ViewOf<import("@typeberry/block").WorkRefineLoad, {
|
|
69
69
|
gasUsed: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/numbers").U64>;
|
|
70
70
|
importedSegments: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U32, import("@typeberry/numbers").U32>;
|
|
71
71
|
extrinsicCount: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U32, import("@typeberry/numbers").U32>;
|
|
@@ -89,14 +89,14 @@ export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND>
|
|
|
89
89
|
kind: 135 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
90
90
|
constructor(chainSpec: ChainSpec, onWorkReport: (workReport: GuaranteedWorkReport) => void);
|
|
91
91
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
92
|
-
onClose(): void;
|
|
92
|
+
onClose(_streamId: StreamId): void;
|
|
93
93
|
}
|
|
94
94
|
export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
95
95
|
private readonly chainSpec;
|
|
96
96
|
kind: 135 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
97
97
|
constructor(chainSpec: ChainSpec);
|
|
98
98
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
99
|
-
onClose(): void;
|
|
99
|
+
onClose(_streamId: StreamId): void;
|
|
100
100
|
sendWorkReport(sender: StreamMessageSender, workReport: GuaranteedWorkReport): void;
|
|
101
101
|
}
|
|
102
102
|
//# sourceMappingURL=ce-135-work-report-distribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-135-work-report-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ce-135-work-report-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,oBAAqB,SAAQ,SAAS;aAkB/B,MAAM,EAAE,UAAU;aAClB,IAAI,EAAE,QAAQ;aACd,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAnBhF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,oBAAoB,CAAC;IAI7E,OAAO;CAOR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,IAAI,gEAAe;gBAGA,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI;IAG3E,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,IAAI,gEAAe;gBAEU,SAAS,EAAE,SAAS;IAEjD,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAElC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB;CAK7E"}
|
|
@@ -53,7 +53,7 @@ export class ServerHandler {
|
|
|
53
53
|
this.onWorkReport(guaranteedWorkReport);
|
|
54
54
|
sender.close();
|
|
55
55
|
}
|
|
56
|
-
onClose() { }
|
|
56
|
+
onClose(_streamId) { }
|
|
57
57
|
}
|
|
58
58
|
export class ClientHandler {
|
|
59
59
|
chainSpec;
|
|
@@ -65,7 +65,7 @@ export class ClientHandler {
|
|
|
65
65
|
logger.warn `[${sender.streamId}] Got unexpected message on CE-135 stream. Closing.`;
|
|
66
66
|
sender.close();
|
|
67
67
|
}
|
|
68
|
-
onClose() { }
|
|
68
|
+
onClose(_streamId) { }
|
|
69
69
|
sendWorkReport(sender, workReport) {
|
|
70
70
|
logger.trace `[${sender.streamId}] Sending guaranteed work report.`;
|
|
71
71
|
sender.bufferAndSend(Encoder.encodeObject(GuaranteedWorkReport.Codec, workReport, this.chainSpec));
|
|
@@ -5,7 +5,7 @@ import { Credential } from "#@typeberry/block/guarantees.js";
|
|
|
5
5
|
import { RefineContext } from "#@typeberry/block/refine-context.js";
|
|
6
6
|
import { tryAsWorkItemsCount } from "#@typeberry/block/work-package.js";
|
|
7
7
|
import { WorkPackageSpec, WorkReport } from "#@typeberry/block/work-report.js";
|
|
8
|
-
import { WorkExecResult,
|
|
8
|
+
import { WorkExecResult, WorkRefineLoad, WorkResult } from "#@typeberry/block/work-result.js";
|
|
9
9
|
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
10
10
|
import { asKnownSize, FixedSizeArray } from "#@typeberry/collections";
|
|
11
11
|
import { tinyChainSpec } from "#@typeberry/config";
|
|
@@ -36,7 +36,7 @@ const MOCK_WORK_RESULT = WorkResult.create({
|
|
|
36
36
|
codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
|
|
37
37
|
payloadHash: Bytes.zero(HASH_SIZE),
|
|
38
38
|
gas: tryAsServiceGas(1000n),
|
|
39
|
-
result:
|
|
39
|
+
result: WorkExecResult.ok(BytesBlob.empty()),
|
|
40
40
|
load: WorkRefineLoad.create({
|
|
41
41
|
gasUsed: tryAsServiceGas(10000n),
|
|
42
42
|
importedSegments: tryAsU32(1),
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
2
|
-
import { type U8
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { type U8 } from "#@typeberry/numbers";
|
|
3
|
+
import { type Opaque } from "#@typeberry/utils";
|
|
4
|
+
/**
|
|
5
|
+
* Globally unique stream identifier.
|
|
6
|
+
*
|
|
7
|
+
* Assigned during stream registration and used as the sole public
|
|
8
|
+
* identifier for a stream throughout the protocol layer.
|
|
9
|
+
*/
|
|
10
|
+
export type StreamId = Opaque<string, "streamId">;
|
|
11
|
+
/** Cast a string as `StreamId`. */
|
|
12
|
+
export declare function tryAsStreamId(id: string): StreamId;
|
|
7
13
|
/** Unique stream kind. */
|
|
8
14
|
export type StreamKind<T extends U8 = U8> = T;
|
|
9
15
|
/** Try to cast the number as `StreamKind`. */
|
|
10
16
|
export declare function tryAsStreamKind<T extends number>(num: T): StreamKind<T & U8>;
|
|
11
17
|
/** Abstraction over sending messages tied to a particular stream. */
|
|
12
18
|
export interface StreamMessageSender {
|
|
13
|
-
/**
|
|
19
|
+
/** Globally unique stream identifier. */
|
|
14
20
|
streamId: StreamId;
|
|
15
21
|
/**
|
|
16
22
|
* Send data blob to the other end.
|
|
@@ -29,7 +35,7 @@ export interface StreamHandler<TStreamKind extends StreamKind = StreamKind> {
|
|
|
29
35
|
readonly kind: TStreamKind;
|
|
30
36
|
/** Handle message for that particular stream kind. */
|
|
31
37
|
onStreamMessage(streamSender: StreamMessageSender, message: BytesBlob): void;
|
|
32
|
-
/** Handle closing of given
|
|
38
|
+
/** Handle closing of given stream. */
|
|
33
39
|
onClose(streamId: StreamId, isError: boolean): void;
|
|
34
40
|
}
|
|
35
41
|
/** Extract the stream kind out of the the handler type. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAElD,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAElD;AAED,0BAA0B;AAC1B,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9C,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAE5E;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAEpE,8CAA8C;IAC9C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa,CAAC,WAAW,SAAS,UAAU,GAAG,UAAU;IACxE,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,sDAAsD;IACtD,eAAe,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAE7E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACrD;AAED,2DAA2D;AAC3D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { tryAsU8
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { tryAsU8 } from "#@typeberry/numbers";
|
|
2
|
+
import { asOpaqueType } from "#@typeberry/utils";
|
|
3
|
+
/** Cast a string as `StreamId`. */
|
|
4
|
+
export function tryAsStreamId(id) {
|
|
5
|
+
return asOpaqueType(id);
|
|
5
6
|
}
|
|
6
7
|
/** Try to cast the number as `StreamKind`. */
|
|
7
8
|
export function tryAsStreamKind(num) {
|
|
@@ -4,7 +4,7 @@ import { type StreamHandler, type StreamId, type StreamKind, type StreamKindOf,
|
|
|
4
4
|
export declare class TestStreamSender implements StreamMessageSender {
|
|
5
5
|
readonly streamId: StreamId;
|
|
6
6
|
readonly onSend: (data: BytesBlob) => void;
|
|
7
|
-
readonly
|
|
7
|
+
readonly onCloseCallback: () => void;
|
|
8
8
|
constructor(streamId: StreamId, { onSend, onClose, }: {
|
|
9
9
|
onSend: (data: BytesBlob) => void;
|
|
10
10
|
onClose?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AAUrB,qBAAa,gBAAiB,YAAW,mBAAmB;aAKxC,QAAQ,EAAE,QAAQ;IAJpC,SAAgB,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,SAAgB,eAAe,EAAE,MAAM,IAAI,CAAC;gBAG1B,QAAQ,EAAE,QAAQ,EAClC,EACE,MAAM,EACN,OAAkB,GACnB,EAAE;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB;IAMH,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAOvC,KAAK,IAAI,IAAI;CAKd;AAKD,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoE;IACtG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6C;IAEhF,SAAgB,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAa;gBAG1E,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,mBAAmB;IAG1G,gBAAgB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAM7C,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IASlD,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;IAMhD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,EAAE,QAAQ;IAS/B,OAAO,CAAC,wBAAwB;CAsBjC;AAED,wBAAgB,gBAAgB;;;EA6B/B"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { tryAsStreamId, } from "./stream.js";
|
|
2
|
+
const TEST_PEER_ID = "test-peer";
|
|
3
|
+
let nextTestStreamCounter = 0;
|
|
4
|
+
function nextTestStreamId() {
|
|
5
|
+
return tryAsStreamId(`${TEST_PEER_ID}:${nextTestStreamCounter++}`);
|
|
6
|
+
}
|
|
2
7
|
export class TestStreamSender {
|
|
3
8
|
streamId;
|
|
4
9
|
onSend;
|
|
5
|
-
|
|
10
|
+
onCloseCallback;
|
|
6
11
|
constructor(streamId, { onSend, onClose = () => { }, }) {
|
|
7
12
|
this.streamId = streamId;
|
|
8
13
|
this.onSend = onSend;
|
|
9
|
-
this.
|
|
14
|
+
this.onCloseCallback = onClose;
|
|
10
15
|
}
|
|
11
16
|
bufferAndSend(data) {
|
|
12
17
|
setImmediate(() => {
|
|
@@ -16,7 +21,7 @@ export class TestStreamSender {
|
|
|
16
21
|
}
|
|
17
22
|
close() {
|
|
18
23
|
setImmediate(() => {
|
|
19
|
-
this.
|
|
24
|
+
this.onCloseCallback();
|
|
20
25
|
});
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -50,15 +55,7 @@ export class TestMessageHandler {
|
|
|
50
55
|
work(handler[0], handler[1]);
|
|
51
56
|
}
|
|
52
57
|
withNewStream(streamKind, work) {
|
|
53
|
-
const
|
|
54
|
-
const streams = this.openStreams;
|
|
55
|
-
const streamId = (function findStreamId() {
|
|
56
|
-
const s = getRandomStreamId();
|
|
57
|
-
if (!streams.has(s)) {
|
|
58
|
-
return s;
|
|
59
|
-
}
|
|
60
|
-
return findStreamId();
|
|
61
|
-
})();
|
|
58
|
+
const streamId = nextTestStreamId();
|
|
62
59
|
// since we are picking a non-existing stream id, there is no way of
|
|
63
60
|
// conflicting here, so the `[handler, stream]` will be fresh.
|
|
64
61
|
const [handler, stream] = this.createStreamIfNotPresent(streamId, streamKind);
|
|
@@ -67,7 +67,7 @@ export declare class Announcement extends WithDebug {
|
|
|
67
67
|
}>>>;
|
|
68
68
|
}> | null>;
|
|
69
69
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
70
|
-
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block
|
|
70
|
+
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, {
|
|
71
71
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
72
72
|
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U8>;
|
|
73
73
|
}>>>;
|
|
@@ -93,7 +93,7 @@ export declare class Handler implements StreamHandler<typeof STREAM_KIND> {
|
|
|
93
93
|
kind: 0 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
94
94
|
private readonly handshakes;
|
|
95
95
|
private readonly pendingHandshakes;
|
|
96
|
-
constructor(spec: ChainSpec, getHandshake: () => Handshake, onAnnouncement: (
|
|
96
|
+
constructor(spec: ChainSpec, getHandshake: () => Handshake, onAnnouncement: (streamId: StreamId, ann: Announcement) => void, onHandshake: (streamId: StreamId, handshake: Handshake) => void);
|
|
97
97
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
98
98
|
onClose(streamId: StreamId): void;
|
|
99
99
|
sendHandshake(sender: StreamMessageSender): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up-0-block-announcement.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/up-0-block-announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,6DAAqB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,SAAS;aAWtB,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,QAAQ;IAXhC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC;IAItD,OAAO;CAMR;AAED;;GAEG;AACH,qBAAa,SAAS;IAWlB,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAClC,sEAAsE;aACtD,KAAK,EAAE,WAAW,EAAE;IAbtC,MAAM,CAAC,KAAK;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;IAItD,OAAO;CAMR;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAWvC,sDAAsD;aACtC,MAAM,EAAE,MAAM;IAC9B,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAbpC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI1D,OAAO;CAQR;AAID,qBAAa,OAAQ,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAO7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAT9B,IAAI,8DAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;gBAGpD,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,MAAM,SAAS,EAC7B,cAAc,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"up-0-block-announcement.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/up-0-block-announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,6DAAqB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,SAAS;aAWtB,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,QAAQ;IAXhC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC;IAItD,OAAO;CAMR;AAED;;GAEG;AACH,qBAAa,SAAS;IAWlB,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAClC,sEAAsE;aACtD,KAAK,EAAE,WAAW,EAAE;IAbtC,MAAM,CAAC,KAAK;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;IAItD,OAAO;CAMR;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAWvC,sDAAsD;aACtC,MAAM,EAAE,MAAM;IAC9B,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAbpC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI1D,OAAO;CAQR;AAID,qBAAa,OAAQ,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAO7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAT9B,IAAI,8DAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;gBAGpD,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,MAAM,SAAS,EAC7B,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,EAC/D,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI;IAGlF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAqBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKjC,aAAa,CAAC,MAAM,EAAE,mBAAmB;IAWzC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY;CAUxE"}
|
|
@@ -119,7 +119,7 @@ export class Handler {
|
|
|
119
119
|
}
|
|
120
120
|
const handshake = this.getHandshake();
|
|
121
121
|
logger.trace `[${streamId}] <-- sending handshake`;
|
|
122
|
-
this.pendingHandshakes.set(
|
|
122
|
+
this.pendingHandshakes.set(streamId, true);
|
|
123
123
|
sender.bufferAndSend(Encoder.encodeObject(Handshake.Codec, handshake));
|
|
124
124
|
}
|
|
125
125
|
sendAnnouncement(sender, annoucement) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/stream-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/stream-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAGzB,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,aAAa;IACxB,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAC9E,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAE9E,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOV;IAEd,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAE3E,uCAAuC;IACvC,wBAAwB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMrD,uCAAuC;IACvC,wBAAwB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMrD,yCAAyC;IACzC,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIxC,gDAAgD;IAC1C,aAAa;IAMnB,4DAA4D;IAC5D,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,EAAE,GACxD,IAAI;IAWP,4DAA4D;IAC5D,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,EAAE,GACxD,IAAI;IAcP,iCAAiC;IAC3B,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;IA8BjD,OAAO,CAAC,cAAc;CA8CvB;AA4CD,cAAM,gBAAiB,YAAW,mBAAmB;aAMjC,QAAQ,EAAE,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,oBAAoB,CAA8B;gBAGxC,QAAQ,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB;IAG/C,iDAAiD;IACjD,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,UAAO,GAAG,OAAO;IAsChE,KAAK,IAAI,IAAI;IAab;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BytesBlob } from "#@typeberry/bytes";
|
|
2
2
|
import { Logger } from "#@typeberry/logger";
|
|
3
3
|
import { encodeMessageLength, handleMessageFragmentation, StreamErrorKind, } from "#@typeberry/networking";
|
|
4
|
+
import { tryAsU32 } from "#@typeberry/numbers";
|
|
4
5
|
import { tryAsStreamId, tryAsStreamKind, } from "./protocol/stream.js";
|
|
5
6
|
import { handleAsyncErrors } from "./utils.js";
|
|
6
7
|
const logger = Logger.new(import.meta.filename, "stream");
|
|
@@ -85,13 +86,14 @@ export class StreamManager {
|
|
|
85
86
|
this.registerStream(peer, handler, stream, BytesBlob.blobFrom(bytes.raw.subarray(1)));
|
|
86
87
|
}
|
|
87
88
|
registerStream(peer, handler, stream, initialData) {
|
|
88
|
-
const
|
|
89
|
+
const quicStreamId = tryAsU32(stream.streamId);
|
|
90
|
+
const streamId = tryAsStreamId(`${peer.id}:${quicStreamId}`);
|
|
89
91
|
// NOTE: `onError` callback may be called multiple times.
|
|
90
92
|
const onError = (e, kind) => {
|
|
91
93
|
this.streams.delete(streamId);
|
|
92
94
|
this.backgroundTasks.delete(streamId);
|
|
93
95
|
if (kind === StreamErrorKind.Exception) {
|
|
94
|
-
logger.error `🚰 --- [${
|
|
96
|
+
logger.error `🚰 --- [${streamId}] Stream error: ${e}. Disconnecting peer.`;
|
|
95
97
|
}
|
|
96
98
|
if (kind !== StreamErrorKind.LocalClose) {
|
|
97
99
|
// whenever we have an error, we are going to inform the handler
|
|
@@ -125,10 +127,10 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
|
|
|
125
127
|
let isDone = false;
|
|
126
128
|
const callback = handleMessageFragmentation((data) => {
|
|
127
129
|
const bytes = BytesBlob.blobFrom(new Uint8Array(data));
|
|
128
|
-
logger.trace `🚰 --> [${
|
|
130
|
+
logger.trace `🚰 --> [${quicStream.streamId}] ${bytes}`;
|
|
129
131
|
handler.onStreamMessage(quicStream, bytes);
|
|
130
132
|
}, () => {
|
|
131
|
-
logger.error `🚰 --> [${
|
|
133
|
+
logger.error `🚰 --> [${quicStream.streamId}] got too much data. Disconnecting.`;
|
|
132
134
|
peer.disconnect();
|
|
133
135
|
});
|
|
134
136
|
for (;;) {
|
|
@@ -137,7 +139,7 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
|
|
|
137
139
|
// be a promise, so that we can make back pressure here.
|
|
138
140
|
callback(bytes.raw);
|
|
139
141
|
if (isDone) {
|
|
140
|
-
logger.log `🚰 --> [${
|
|
142
|
+
logger.log `🚰 --> [${quicStream.streamId}] remote finished.`;
|
|
141
143
|
return;
|
|
142
144
|
}
|
|
143
145
|
// await for more data
|