@peerbit/clock-service 3.0.161 → 3.1.0
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.map +1 -1
- package/dist/src/controller.js +185 -119
- package/dist/src/controller.js.map +1 -1
- package/package.json +11 -11
- package/src/controller.ts +4 -5
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAM1D,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;IA+CtB,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
|
@@ -1,11 +1,36 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
6
27
|
};
|
|
7
|
-
var
|
|
8
|
-
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
9
34
|
};
|
|
10
35
|
import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
|
|
11
36
|
import { SignatureWithKey } from "@peerbit/crypto";
|
|
@@ -15,133 +40,174 @@ import { Program } from "@peerbit/program";
|
|
|
15
40
|
import { RPC } from "@peerbit/rpc";
|
|
16
41
|
import {} from "@peerbit/shared-log";
|
|
17
42
|
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
18
|
-
const logger = loggerFn(
|
|
19
|
-
|
|
20
|
-
});
|
|
43
|
+
const logger = loggerFn("peerbit:program:clock-service");
|
|
44
|
+
const warn = logger.newScope("warn");
|
|
21
45
|
const abs = (n) => (n < 0n ? -n : n);
|
|
22
46
|
export class Result {
|
|
23
47
|
}
|
|
24
|
-
let Ok =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
let Ok = (() => {
|
|
49
|
+
let _classDecorators = [variant(0)];
|
|
50
|
+
let _classDescriptor;
|
|
51
|
+
let _classExtraInitializers = [];
|
|
52
|
+
let _classThis;
|
|
53
|
+
let _classSuper = Result;
|
|
54
|
+
let _signature_decorators;
|
|
55
|
+
let _signature_initializers = [];
|
|
56
|
+
let _signature_extraInitializers = [];
|
|
57
|
+
var Ok = class extends _classSuper {
|
|
58
|
+
static { _classThis = this; }
|
|
59
|
+
static {
|
|
60
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
61
|
+
_signature_decorators = [field({ type: SignatureWithKey })];
|
|
62
|
+
__esDecorate(null, null, _signature_decorators, { kind: "field", name: "signature", static: false, private: false, access: { has: obj => "signature" in obj, get: obj => obj.signature, set: (obj, value) => { obj.signature = value; } }, metadata: _metadata }, _signature_initializers, _signature_extraInitializers);
|
|
63
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
64
|
+
Ok = _classThis = _classDescriptor.value;
|
|
65
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
66
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
30
67
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
68
|
+
signature = __runInitializers(this, _signature_initializers, void 0);
|
|
69
|
+
constructor(properties) {
|
|
70
|
+
super();
|
|
71
|
+
__runInitializers(this, _signature_extraInitializers);
|
|
72
|
+
if (properties) {
|
|
73
|
+
this.signature = properties.signature;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
return Ok = _classThis;
|
|
78
|
+
})();
|
|
41
79
|
export { Ok };
|
|
42
|
-
let SignError =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
80
|
+
let SignError = (() => {
|
|
81
|
+
let _classDecorators = [variant(1)];
|
|
82
|
+
let _classDescriptor;
|
|
83
|
+
let _classExtraInitializers = [];
|
|
84
|
+
let _classThis;
|
|
85
|
+
let _classSuper = Result;
|
|
86
|
+
let _message_decorators;
|
|
87
|
+
let _message_initializers = [];
|
|
88
|
+
let _message_extraInitializers = [];
|
|
89
|
+
var SignError = class extends _classSuper {
|
|
90
|
+
static { _classThis = this; }
|
|
91
|
+
static {
|
|
92
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
93
|
+
_message_decorators = [field({ type: option("string") })];
|
|
94
|
+
__esDecorate(null, null, _message_decorators, { kind: "field", name: "message", static: false, private: false, access: { has: obj => "message" in obj, get: obj => obj.message, set: (obj, value) => { obj.message = value; } }, metadata: _metadata }, _message_initializers, _message_extraInitializers);
|
|
95
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
96
|
+
SignError = _classThis = _classDescriptor.value;
|
|
97
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
98
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
48
99
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
100
|
+
message = __runInitializers(this, _message_initializers, void 0);
|
|
101
|
+
constructor(properties) {
|
|
102
|
+
super();
|
|
103
|
+
__runInitializers(this, _message_extraInitializers);
|
|
104
|
+
if (properties) {
|
|
105
|
+
this.message = properties.message;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
return SignError = _classThis;
|
|
110
|
+
})();
|
|
59
111
|
export { SignError };
|
|
60
|
-
let ClockService =
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
112
|
+
let ClockService = (() => {
|
|
113
|
+
let _classDecorators = [variant("clock_service")];
|
|
114
|
+
let _classDescriptor;
|
|
115
|
+
let _classExtraInitializers = [];
|
|
116
|
+
let _classThis;
|
|
117
|
+
let _classSuper = Program;
|
|
118
|
+
let __remoteSigner_decorators;
|
|
119
|
+
let __remoteSigner_initializers = [];
|
|
120
|
+
let __remoteSigner_extraInitializers = [];
|
|
121
|
+
let __trustedNetwork_decorators;
|
|
122
|
+
let __trustedNetwork_initializers = [];
|
|
123
|
+
let __trustedNetwork_extraInitializers = [];
|
|
124
|
+
var ClockService = class extends _classSuper {
|
|
125
|
+
static { _classThis = this; }
|
|
126
|
+
static {
|
|
127
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
128
|
+
__remoteSigner_decorators = [field({ type: RPC })];
|
|
129
|
+
__trustedNetwork_decorators = [field({ type: TrustedNetwork })];
|
|
130
|
+
__esDecorate(null, null, __remoteSigner_decorators, { kind: "field", name: "_remoteSigner", static: false, private: false, access: { has: obj => "_remoteSigner" in obj, get: obj => obj._remoteSigner, set: (obj, value) => { obj._remoteSigner = value; } }, metadata: _metadata }, __remoteSigner_initializers, __remoteSigner_extraInitializers);
|
|
131
|
+
__esDecorate(null, null, __trustedNetwork_decorators, { kind: "field", name: "_trustedNetwork", static: false, private: false, access: { has: obj => "_trustedNetwork" in obj, get: obj => obj._trustedNetwork, set: (obj, value) => { obj._trustedNetwork = value; } }, metadata: _metadata }, __trustedNetwork_initializers, __trustedNetwork_extraInitializers);
|
|
132
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
133
|
+
ClockService = _classThis = _classDescriptor.value;
|
|
134
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
135
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
78
136
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
137
|
+
_remoteSigner = __runInitializers(this, __remoteSigner_initializers, void 0);
|
|
138
|
+
_trustedNetwork = (__runInitializers(this, __remoteSigner_extraInitializers), __runInitializers(this, __trustedNetwork_initializers, void 0));
|
|
139
|
+
_hlc = (__runInitializers(this, __trustedNetwork_extraInitializers), new HLC());
|
|
140
|
+
maxError; // 10 seconds
|
|
141
|
+
constructor(properties) {
|
|
142
|
+
super();
|
|
143
|
+
this._remoteSigner = properties.remoteSigner || new RPC();
|
|
144
|
+
this._trustedNetwork = properties.trustedNetwork;
|
|
82
145
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
146
|
+
/**
|
|
147
|
+
* @param properties in ms, defaults to 10 seconds
|
|
148
|
+
*/
|
|
149
|
+
async open(properties) {
|
|
150
|
+
if (properties?.replicate === true) {
|
|
151
|
+
properties.replicate = {
|
|
152
|
+
factor: 1,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (properties?.replicate &&
|
|
156
|
+
properties.replicate?.["factor"] !== 1) {
|
|
157
|
+
throw new Error("ClockService can only be used with a factor of 1");
|
|
158
|
+
}
|
|
159
|
+
this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
|
|
160
|
+
await this._trustedNetwork.open({ replicate: properties?.replicate });
|
|
161
|
+
const topicBase = this._trustedNetwork.trustGraph.log.log.idString ?? "clock";
|
|
162
|
+
await this._remoteSigner.open({
|
|
163
|
+
topic: topicBase + "/clock", // TODO do better
|
|
164
|
+
queryType: Uint8Array,
|
|
165
|
+
responseType: Result,
|
|
166
|
+
responseHandler: !properties?.replicate /* || properties?.replicate instanceof Replicator */ // ?? this feels wrong since the replication duties are dynamic
|
|
167
|
+
? async (arr, context) => {
|
|
168
|
+
const entry = deserialize(arr, Entry);
|
|
169
|
+
if (entry.hash) {
|
|
170
|
+
warn("Recieved entry with hash, unexpected");
|
|
171
|
+
}
|
|
172
|
+
const now = this._hlc.now().wallTime;
|
|
173
|
+
const cmp = (await entry.getClock()).timestamp.wallTime;
|
|
174
|
+
if (abs(now - cmp) > this.maxError) {
|
|
175
|
+
logger("Recieved an entry with an invalid timestamp");
|
|
176
|
+
return new SignError({
|
|
177
|
+
message: "Recieved an entry with an invalid timestamp",
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
const signature = await this.node.identity.sign(serialize(entry.toSignable()));
|
|
181
|
+
return new Ok({
|
|
182
|
+
signature,
|
|
102
183
|
});
|
|
103
184
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
signature,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
: undefined,
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
async sign(data) {
|
|
113
|
-
const responses = await this._remoteSigner.request(data, { amount: 1 });
|
|
114
|
-
if (responses.length === 0) {
|
|
115
|
-
throw new Error("Failed to retrieve signatures");
|
|
185
|
+
: undefined,
|
|
186
|
+
});
|
|
116
187
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
188
|
+
async sign(data) {
|
|
189
|
+
const responses = await this._remoteSigner.request(data, { amount: 1 });
|
|
190
|
+
if (responses.length === 0) {
|
|
191
|
+
throw new Error("Failed to retrieve signatures");
|
|
120
192
|
}
|
|
193
|
+
for (const response of responses) {
|
|
194
|
+
if (response.response instanceof SignError) {
|
|
195
|
+
throw new Error(response.response.message);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return responses[0].response.signature;
|
|
121
199
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return true;
|
|
200
|
+
async verify(entry) {
|
|
201
|
+
const signatures = await entry.getSignatures();
|
|
202
|
+
for (const signature of signatures) {
|
|
203
|
+
if (await this._trustedNetwork.isTrusted(signature.publicKey)) {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
129
206
|
}
|
|
207
|
+
return false;
|
|
130
208
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
};
|
|
134
|
-
__decorate([
|
|
135
|
-
field({ type: RPC }),
|
|
136
|
-
__metadata("design:type", RPC)
|
|
137
|
-
], ClockService.prototype, "_remoteSigner", void 0);
|
|
138
|
-
__decorate([
|
|
139
|
-
field({ type: TrustedNetwork }),
|
|
140
|
-
__metadata("design:type", TrustedNetwork)
|
|
141
|
-
], ClockService.prototype, "_trustedNetwork", void 0);
|
|
142
|
-
ClockService = __decorate([
|
|
143
|
-
variant("clock_service"),
|
|
144
|
-
__metadata("design:paramtypes", [Object])
|
|
145
|
-
], ClockService);
|
|
209
|
+
};
|
|
210
|
+
return ClockService = _classThis;
|
|
211
|
+
})();
|
|
146
212
|
export { ClockService };
|
|
147
213
|
//# sourceMappingURL=controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"
|
|
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.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Clock signing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -52,18 +52,18 @@
|
|
|
52
52
|
"author": "dao.xyz",
|
|
53
53
|
"license": "MIT",
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@dao-xyz/borsh": "^
|
|
56
|
-
"@peerbit/crypto": "2.
|
|
57
|
-
"@peerbit/log": "4.
|
|
58
|
-
"@peerbit/program": "
|
|
59
|
-
"@peerbit/shared-log": "11.
|
|
60
|
-
"@peerbit/logger": "
|
|
61
|
-
"@peerbit/rpc": "5.
|
|
62
|
-
"@peerbit/trusted-network": "4.
|
|
55
|
+
"@dao-xyz/borsh": "^6.0.0",
|
|
56
|
+
"@peerbit/crypto": "2.4.0",
|
|
57
|
+
"@peerbit/log": "4.2.0",
|
|
58
|
+
"@peerbit/program": "1.0.0",
|
|
59
|
+
"@peerbit/shared-log": "11.6.0",
|
|
60
|
+
"@peerbit/logger": "2.0.0",
|
|
61
|
+
"@peerbit/rpc": "5.4.0",
|
|
62
|
+
"@peerbit/trusted-network": "4.2.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@peerbit/test-utils": "2.
|
|
66
|
-
"@peerbit/time": "2.
|
|
65
|
+
"@peerbit/test-utils": "2.3.0",
|
|
66
|
+
"@peerbit/time": "2.3.0"
|
|
67
67
|
},
|
|
68
68
|
"scripts": {
|
|
69
69
|
"clean": "aegir clean",
|
package/src/controller.ts
CHANGED
|
@@ -7,9 +7,8 @@ import { RPC, type RPCResponse } from "@peerbit/rpc";
|
|
|
7
7
|
import { type ReplicationOptions } from "@peerbit/shared-log";
|
|
8
8
|
import { TrustedNetwork } from "@peerbit/trusted-network";
|
|
9
9
|
|
|
10
|
-
const logger
|
|
11
|
-
|
|
12
|
-
});
|
|
10
|
+
const logger = loggerFn("peerbit:program:clock-service");
|
|
11
|
+
const warn = logger.newScope("warn");
|
|
13
12
|
const abs = (n: number | bigint) => (n < 0n ? -n : n);
|
|
14
13
|
|
|
15
14
|
export abstract class Result {}
|
|
@@ -91,12 +90,12 @@ export class ClockService extends Program<Args> {
|
|
|
91
90
|
? async (arr, context) => {
|
|
92
91
|
const entry = deserialize(arr, Entry);
|
|
93
92
|
if (entry.hash) {
|
|
94
|
-
|
|
93
|
+
warn("Recieved entry with hash, unexpected");
|
|
95
94
|
}
|
|
96
95
|
const now = this._hlc.now().wallTime;
|
|
97
96
|
const cmp = (await entry.getClock()).timestamp.wallTime;
|
|
98
97
|
if (abs(now - cmp) > this.maxError) {
|
|
99
|
-
logger
|
|
98
|
+
logger("Recieved an entry with an invalid timestamp");
|
|
100
99
|
return new SignError({
|
|
101
100
|
message: "Recieved an entry with an invalid timestamp",
|
|
102
101
|
});
|