@peerbit/clock-service 2.0.40-aa577a5 → 2.0.40-cccc078
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/controller.d.ts +5 -5
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +20 -12
- package/dist/src/controller.js.map +1 -1
- package/package.json +8 -7
- package/src/controller.ts +44 -32
package/dist/src/controller.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { RPC } from "@peerbit/rpc";
|
|
2
|
-
import { Program } from "@peerbit/program";
|
|
3
1
|
import { SignatureWithKey } from "@peerbit/crypto";
|
|
4
2
|
import { Entry } from "@peerbit/log";
|
|
3
|
+
import { Program } from "@peerbit/program";
|
|
4
|
+
import { RPC } from "@peerbit/rpc";
|
|
5
|
+
import { type ReplicationOptions } from "@peerbit/shared-log";
|
|
5
6
|
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
6
|
-
import { type RoleOptions } from "@peerbit/shared-log";
|
|
7
7
|
export declare abstract class Result {
|
|
8
8
|
}
|
|
9
9
|
export declare class Ok extends Result {
|
|
@@ -19,7 +19,7 @@ export declare class SignError extends Result {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
type Args = {
|
|
22
|
-
|
|
22
|
+
replicate?: ReplicationOptions;
|
|
23
23
|
maxTimeError?: number;
|
|
24
24
|
};
|
|
25
25
|
export declare class ClockService extends Program<Args> {
|
|
@@ -32,7 +32,7 @@ export declare class ClockService extends Program<Args> {
|
|
|
32
32
|
remoteSigner?: RPC<Uint8Array, Result>;
|
|
33
33
|
});
|
|
34
34
|
/**
|
|
35
|
-
* @param
|
|
35
|
+
* @param properties in ms, defaults to 10 seconds
|
|
36
36
|
*/
|
|
37
37
|
open(properties?: Args): Promise<void>;
|
|
38
38
|
sign(data: Uint8Array): Promise<SignatureWithKey>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAO,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAoB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,8BAAsB,MAAM;CAAG;AAE/B,qBACa,EAAG,SAAQ,MAAM;IAE7B,SAAS,EAAE,gBAAgB,CAAC;gBAEhB,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,gBAAgB,CAAA;KAAE;CAMxD;AAED,qBACa,SAAU,SAAQ,MAAM;IAEpC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEL,UAAU,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAM7C;AAED,KAAK,IAAI,GAAG;IAAE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,qBACa,YAAa,SAAQ,OAAO,CAAC,IAAI,CAAC;IAE9C,OAAO,CAAC,aAAa,CAAkC;IAGvD,OAAO,CAAC,eAAe,CAAiB;IAExC,OAAO,CAAC,IAAI,CAAkB;IAC9B,QAAQ,EAAE,MAAM,CAAC;gBAEL,UAAU,EAAE;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,YAAY,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACvC;IAMD;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI;IAgDtB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBjD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CASjD"}
|
package/dist/src/controller.js
CHANGED
|
@@ -7,15 +7,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { field,
|
|
11
|
-
import { RPC } from "@peerbit/rpc";
|
|
12
|
-
import { Program } from "@peerbit/program";
|
|
10
|
+
import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
|
|
13
11
|
import { SignatureWithKey } from "@peerbit/crypto";
|
|
14
12
|
import { Entry, HLC } from "@peerbit/log";
|
|
15
|
-
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
16
13
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
14
|
+
import { Program } from "@peerbit/program";
|
|
15
|
+
import { RPC } from "@peerbit/rpc";
|
|
16
|
+
import {} from "@peerbit/shared-log";
|
|
17
|
+
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
19
18
|
const logger = loggerFn({ module: "clock-signer" });
|
|
20
19
|
const abs = (n) => (n < 0n ? -n : n);
|
|
21
20
|
export class Result {
|
|
@@ -67,16 +66,25 @@ let ClockService = class ClockService extends Program {
|
|
|
67
66
|
this._trustedNetwork = properties.trustedNetwork;
|
|
68
67
|
}
|
|
69
68
|
/**
|
|
70
|
-
* @param
|
|
69
|
+
* @param properties in ms, defaults to 10 seconds
|
|
71
70
|
*/
|
|
72
71
|
async open(properties) {
|
|
72
|
+
if (properties?.replicate === true) {
|
|
73
|
+
properties.replicate = {
|
|
74
|
+
factor: 1,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (properties?.replicate &&
|
|
78
|
+
properties.replicate?.["factor"] !== 1) {
|
|
79
|
+
throw new Error("ClockService can only be used with a factor of 1");
|
|
80
|
+
}
|
|
73
81
|
this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
|
|
74
|
-
await this._trustedNetwork.open({
|
|
82
|
+
await this._trustedNetwork.open({ replicate: properties?.replicate });
|
|
75
83
|
await this._remoteSigner.open({
|
|
76
84
|
topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock", // TODO do better
|
|
77
85
|
queryType: Uint8Array,
|
|
78
86
|
responseType: Result,
|
|
79
|
-
responseHandler: !properties?.
|
|
87
|
+
responseHandler: !properties?.replicate /* || properties?.replicate instanceof Replicator */ // ?? this feels wrong since the replication duties are dynamic
|
|
80
88
|
? async (arr, context) => {
|
|
81
89
|
const entry = deserialize(arr, Entry);
|
|
82
90
|
if (entry.hash) {
|
|
@@ -88,15 +96,15 @@ let ClockService = class ClockService extends Program {
|
|
|
88
96
|
if (abs(now - cmp) > this.maxError) {
|
|
89
97
|
logger.info("Recieved an entry with an invalid timestamp");
|
|
90
98
|
return new SignError({
|
|
91
|
-
message: "Recieved an entry with an invalid timestamp"
|
|
99
|
+
message: "Recieved an entry with an invalid timestamp",
|
|
92
100
|
});
|
|
93
101
|
}
|
|
94
102
|
const signature = await this.node.identity.sign(serialize(entry.toSignable()));
|
|
95
103
|
return new Ok({
|
|
96
|
-
signature
|
|
104
|
+
signature,
|
|
97
105
|
});
|
|
98
106
|
}
|
|
99
|
-
: undefined
|
|
107
|
+
: undefined,
|
|
100
108
|
});
|
|
101
109
|
}
|
|
102
110
|
async sign(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/clock-service",
|
|
3
|
-
"version": "2.0.40-
|
|
3
|
+
"version": "2.0.40-cccc078",
|
|
4
4
|
"description": "Clock signing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"eslintConfig": {
|
|
38
|
-
"extends": "
|
|
38
|
+
"extends": "peerbit",
|
|
39
39
|
"parserOptions": {
|
|
40
40
|
"project": true,
|
|
41
41
|
"sourceType": "module"
|
|
@@ -52,16 +52,17 @@
|
|
|
52
52
|
"scripts": {
|
|
53
53
|
"clean": "aegir clean",
|
|
54
54
|
"build": "aegir build --no-bundle",
|
|
55
|
-
"test": "aegir test -t node"
|
|
55
|
+
"test": "aegir test -t node",
|
|
56
|
+
"lint": "aegir lint"
|
|
56
57
|
},
|
|
57
58
|
"author": "dao.xyz",
|
|
58
59
|
"license": "MIT",
|
|
59
60
|
"dependencies": {
|
|
60
|
-
"@peerbit/logger": "1.0.2-
|
|
61
|
-
"@peerbit/rpc": "4.0.7-
|
|
62
|
-
"@peerbit/trusted-network": "3.0.40-
|
|
61
|
+
"@peerbit/logger": "1.0.2-cccc078",
|
|
62
|
+
"@peerbit/rpc": "4.0.7-cccc078",
|
|
63
|
+
"@peerbit/trusted-network": "3.0.40-cccc078"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
65
|
-
"@peerbit/test-utils": "2.0.33-
|
|
66
|
+
"@peerbit/test-utils": "2.0.33-cccc078"
|
|
66
67
|
}
|
|
67
68
|
}
|
package/src/controller.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { field,
|
|
2
|
-
import { RPC, type RPCResponse } from "@peerbit/rpc";
|
|
3
|
-
import { Program } from "@peerbit/program";
|
|
1
|
+
import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
|
|
4
2
|
import { SignatureWithKey } from "@peerbit/crypto";
|
|
5
3
|
import { Entry, HLC } from "@peerbit/log";
|
|
6
|
-
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
7
4
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
5
|
+
import { Program } from "@peerbit/program";
|
|
6
|
+
import { RPC, type RPCResponse } from "@peerbit/rpc";
|
|
7
|
+
import { type ReplicationOptions } from "@peerbit/shared-log";
|
|
8
|
+
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
9
|
+
|
|
10
10
|
const logger = loggerFn({ module: "clock-signer" });
|
|
11
11
|
const abs = (n: number | bigint) => (n < 0n ? -n : n);
|
|
12
12
|
|
|
13
|
-
export abstract class Result {
|
|
13
|
+
export abstract class Result {}
|
|
14
14
|
|
|
15
15
|
@variant(0)
|
|
16
16
|
export class Ok extends Result {
|
|
@@ -38,7 +38,7 @@ export class SignError extends Result {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
type Args = {
|
|
41
|
+
type Args = { replicate?: ReplicationOptions; maxTimeError?: number };
|
|
42
42
|
|
|
43
43
|
@variant("clock_service")
|
|
44
44
|
export class ClockService extends Program<Args> {
|
|
@@ -61,41 +61,53 @@ export class ClockService extends Program<Args> {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
* @param
|
|
64
|
+
* @param properties in ms, defaults to 10 seconds
|
|
65
65
|
*/
|
|
66
66
|
async open(properties?: Args) {
|
|
67
|
+
if (properties?.replicate === true) {
|
|
68
|
+
properties.replicate = {
|
|
69
|
+
factor: 1,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (
|
|
73
|
+
properties?.replicate &&
|
|
74
|
+
(properties.replicate as any)?.["factor"] !== 1
|
|
75
|
+
) {
|
|
76
|
+
throw new Error("ClockService can only be used with a factor of 1");
|
|
77
|
+
}
|
|
78
|
+
|
|
67
79
|
this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
|
|
68
|
-
await this._trustedNetwork.open({
|
|
80
|
+
await this._trustedNetwork.open({ replicate: properties?.replicate });
|
|
69
81
|
await this._remoteSigner.open({
|
|
70
82
|
topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock", // TODO do better
|
|
71
83
|
queryType: Uint8Array,
|
|
72
84
|
responseType: Result,
|
|
73
85
|
responseHandler:
|
|
74
|
-
!properties?.
|
|
86
|
+
!properties?.replicate /* || properties?.replicate instanceof Replicator */ // ?? this feels wrong since the replication duties are dynamic
|
|
75
87
|
? async (arr, context) => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
const entry = deserialize(arr, Entry);
|
|
89
|
+
if (entry.hash) {
|
|
90
|
+
logger.warn("Recieved entry with hash, unexpected");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
entry._signatures = undefined; // because we dont want to sign signatures
|
|
94
|
+
|
|
95
|
+
const now = this._hlc.now().wallTime;
|
|
96
|
+
const cmp = (await entry.getClock()).timestamp.wallTime;
|
|
97
|
+
if (abs(now - cmp) > this.maxError) {
|
|
98
|
+
logger.info("Recieved an entry with an invalid timestamp");
|
|
99
|
+
return new SignError({
|
|
100
|
+
message: "Recieved an entry with an invalid timestamp",
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const signature = await this.node.identity.sign(
|
|
104
|
+
serialize(entry.toSignable()),
|
|
105
|
+
);
|
|
106
|
+
return new Ok({
|
|
107
|
+
signature,
|
|
89
108
|
});
|
|
90
109
|
}
|
|
91
|
-
|
|
92
|
-
serialize(entry.toSignable())
|
|
93
|
-
);
|
|
94
|
-
return new Ok({
|
|
95
|
-
signature
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
: undefined
|
|
110
|
+
: undefined,
|
|
99
111
|
});
|
|
100
112
|
}
|
|
101
113
|
|