@peerbit/clock-service 1.0.39 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/esm/controller.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { RPC } from "@peerbit/rpc";
|
|
2
2
|
import { Program } from "@peerbit/program";
|
|
3
3
|
import { SignatureWithKey } from "@peerbit/crypto";
|
|
4
|
-
import { Entry
|
|
4
|
+
import { Entry } from "@peerbit/log";
|
|
5
5
|
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
6
|
-
import {
|
|
6
|
+
import { RoleOptions } from "@peerbit/shared-log";
|
|
7
7
|
export declare abstract class Result {
|
|
8
8
|
}
|
|
9
9
|
export declare class Ok extends Result {
|
|
@@ -19,14 +19,14 @@ export declare class SignError extends Result {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
type Args = {
|
|
22
|
-
role?:
|
|
22
|
+
role?: RoleOptions;
|
|
23
23
|
maxTimeError?: number;
|
|
24
24
|
};
|
|
25
25
|
export declare class ClockService extends Program<Args> {
|
|
26
|
-
_remoteSigner
|
|
27
|
-
_trustedNetwork
|
|
28
|
-
_hlc
|
|
29
|
-
|
|
26
|
+
private _remoteSigner;
|
|
27
|
+
private _trustedNetwork;
|
|
28
|
+
private _hlc;
|
|
29
|
+
maxError: bigint;
|
|
30
30
|
constructor(properties: {
|
|
31
31
|
trustedNetwork: TrustedNetwork;
|
|
32
32
|
remoteSigner?: RPC<Uint8Array, Result>;
|
package/lib/esm/controller.js
CHANGED
|
@@ -59,7 +59,7 @@ let ClockService = class ClockService extends Program {
|
|
|
59
59
|
_remoteSigner;
|
|
60
60
|
_trustedNetwork;
|
|
61
61
|
_hlc = new HLC();
|
|
62
|
-
|
|
62
|
+
maxError; // 10 seconds
|
|
63
63
|
constructor(properties) {
|
|
64
64
|
super();
|
|
65
65
|
this._remoteSigner = properties.remoteSigner || new RPC();
|
|
@@ -69,10 +69,10 @@ let ClockService = class ClockService extends Program {
|
|
|
69
69
|
* @param maxError, in ms, defaults to 10 seconds
|
|
70
70
|
*/
|
|
71
71
|
async open(properties) {
|
|
72
|
-
this.
|
|
72
|
+
this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
|
|
73
73
|
await this._trustedNetwork.open({ role: properties?.role });
|
|
74
74
|
await this._remoteSigner.open({
|
|
75
|
-
topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock",
|
|
75
|
+
topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock", // TODO do better
|
|
76
76
|
queryType: Uint8Array,
|
|
77
77
|
responseType: Result,
|
|
78
78
|
responseHandler: !properties?.role || properties?.role instanceof Replicator
|
|
@@ -84,7 +84,7 @@ let ClockService = class ClockService extends Program {
|
|
|
84
84
|
entry._signatures = undefined; // because we dont want to sign signatures
|
|
85
85
|
const now = this._hlc.now().wallTime;
|
|
86
86
|
const cmp = (await entry.getClock()).timestamp.wallTime;
|
|
87
|
-
if (abs(now - cmp) > this.
|
|
87
|
+
if (abs(now - cmp) > this.maxError) {
|
|
88
88
|
logger.info("Recieved an entry with an invalid timestamp");
|
|
89
89
|
return new SignError({
|
|
90
90
|
message: "Recieved an entry with an invalid timestamp"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,GAAG,EAAe,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,UAAU,
|
|
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": "
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "Clock signing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -30,13 +30,12 @@
|
|
|
30
30
|
"author": "dao.xyz",
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@peerbit/logger": "1.0.
|
|
34
|
-
"@peerbit/rpc": "
|
|
35
|
-
"@peerbit/trusted-network": "
|
|
33
|
+
"@peerbit/logger": "1.0.2",
|
|
34
|
+
"@peerbit/rpc": "3.0.2",
|
|
35
|
+
"@peerbit/trusted-network": "3.0.2"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@peerbit/test-utils": "^
|
|
39
|
-
"memory-level": "^1.0.0"
|
|
38
|
+
"@peerbit/test-utils": "^2.0.2"
|
|
40
39
|
},
|
|
41
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "9128a3e76fec1a41c248c6ebe28d5a7691fe079e"
|
|
42
41
|
}
|
package/src/controller.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { SignatureWithKey } from "@peerbit/crypto";
|
|
|
5
5
|
import { Entry, HLC } from "@peerbit/log";
|
|
6
6
|
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
7
7
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
8
|
-
import { Replicator, Role } from "@peerbit/shared-log";
|
|
8
|
+
import { Replicator, Role, RoleOptions } from "@peerbit/shared-log";
|
|
9
9
|
const logger = loggerFn({ module: "clock-signer" });
|
|
10
10
|
const abs = (n) => (n < 0n ? -n : n);
|
|
11
11
|
|
|
@@ -37,18 +37,18 @@ export class SignError extends Result {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
type Args = { role?:
|
|
40
|
+
type Args = { role?: RoleOptions; maxTimeError?: number };
|
|
41
41
|
|
|
42
42
|
@variant("clock_service")
|
|
43
43
|
export class ClockService extends Program<Args> {
|
|
44
44
|
@field({ type: RPC })
|
|
45
|
-
_remoteSigner: RPC<Uint8Array, Ok | SignError>;
|
|
45
|
+
private _remoteSigner: RPC<Uint8Array, Ok | SignError>;
|
|
46
46
|
|
|
47
47
|
@field({ type: TrustedNetwork })
|
|
48
|
-
_trustedNetwork: TrustedNetwork;
|
|
48
|
+
private _trustedNetwork: TrustedNetwork;
|
|
49
49
|
|
|
50
|
-
_hlc: HLC = new HLC();
|
|
51
|
-
|
|
50
|
+
private _hlc: HLC = new HLC();
|
|
51
|
+
maxError: bigint; // 10 seconds
|
|
52
52
|
|
|
53
53
|
constructor(properties: {
|
|
54
54
|
trustedNetwork: TrustedNetwork;
|
|
@@ -63,7 +63,7 @@ export class ClockService extends Program<Args> {
|
|
|
63
63
|
* @param maxError, in ms, defaults to 10 seconds
|
|
64
64
|
*/
|
|
65
65
|
async open(properties?: Args) {
|
|
66
|
-
this.
|
|
66
|
+
this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
|
|
67
67
|
await this._trustedNetwork.open({ role: properties?.role });
|
|
68
68
|
await this._remoteSigner.open({
|
|
69
69
|
topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock", // TODO do better
|
|
@@ -81,7 +81,7 @@ export class ClockService extends Program<Args> {
|
|
|
81
81
|
|
|
82
82
|
const now = this._hlc.now().wallTime;
|
|
83
83
|
const cmp = (await entry.getClock()).timestamp.wallTime;
|
|
84
|
-
if (abs(now - cmp) > this.
|
|
84
|
+
if (abs(now - cmp) > this.maxError) {
|
|
85
85
|
logger.info("Recieved an entry with an invalid timestamp");
|
|
86
86
|
return new SignError({
|
|
87
87
|
message: "Recieved an entry with an invalid timestamp"
|
|
@@ -93,7 +93,7 @@ export class ClockService extends Program<Args> {
|
|
|
93
93
|
return new Ok({
|
|
94
94
|
signature
|
|
95
95
|
});
|
|
96
|
-
|
|
96
|
+
}
|
|
97
97
|
: undefined
|
|
98
98
|
});
|
|
99
99
|
}
|