@activeledger/activeprotocol 2.15.6 → 4.3.3
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/es/protocol/interfaces/vm.interface.d.ts +9 -5
- package/es/protocol/interfaces/vm.interface.d.ts.map +1 -1
- package/es/protocol/permissionsChecker.d.ts +5 -3
- package/es/protocol/permissionsChecker.d.ts.map +1 -1
- package/es/protocol/permissionsChecker.js +149 -120
- package/es/protocol/permissionsChecker.js.map +1 -1
- package/es/protocol/process.d.ts +10 -9
- package/es/protocol/process.d.ts.map +1 -1
- package/es/protocol/process.js +281 -214
- package/es/protocol/process.js.map +1 -1
- package/es/protocol/shared.d.ts +6 -2
- package/es/protocol/shared.d.ts.map +1 -1
- package/es/protocol/shared.js +41 -29
- package/es/protocol/shared.js.map +1 -1
- package/es/protocol/streamUpdater.d.ts +1 -6
- package/es/protocol/streamUpdater.d.ts.map +1 -1
- package/es/protocol/streamUpdater.js +80 -109
- package/es/protocol/streamUpdater.js.map +1 -1
- package/es/protocol/vm.d.ts +12 -5
- package/es/protocol/vm.d.ts.map +1 -1
- package/es/protocol/vm.js +212 -138
- package/es/protocol/vm.js.map +1 -1
- package/es/protocol/vmscript.js +23 -10
- package/es/protocol/vmscript.js.map +1 -1
- package/lib/protocol/interfaces/vm.interface.d.ts +9 -5
- package/lib/protocol/interfaces/vm.interface.d.ts.map +1 -1
- package/lib/protocol/permissionsChecker.d.ts +5 -3
- package/lib/protocol/permissionsChecker.d.ts.map +1 -1
- package/lib/protocol/permissionsChecker.js +149 -120
- package/lib/protocol/permissionsChecker.js.map +1 -1
- package/lib/protocol/process.d.ts +10 -9
- package/lib/protocol/process.d.ts.map +1 -1
- package/lib/protocol/process.js +281 -240
- package/lib/protocol/process.js.map +1 -1
- package/lib/protocol/shared.d.ts +6 -2
- package/lib/protocol/shared.d.ts.map +1 -1
- package/lib/protocol/shared.js +41 -29
- package/lib/protocol/shared.js.map +1 -1
- package/lib/protocol/streamUpdater.d.ts +1 -6
- package/lib/protocol/streamUpdater.d.ts.map +1 -1
- package/lib/protocol/streamUpdater.js +80 -109
- package/lib/protocol/streamUpdater.js.map +1 -1
- package/lib/protocol/vm.d.ts +12 -5
- package/lib/protocol/vm.d.ts.map +1 -1
- package/lib/protocol/vm.js +211 -137
- package/lib/protocol/vm.js.map +1 -1
- package/lib/protocol/vmscript.js +23 -9
- package/lib/protocol/vmscript.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { ActiveDefinitions } from "@activeledger/activedefinitions";
|
|
3
|
-
import { Standard,
|
|
3
|
+
import { Standard, Activity, PostProcessEvent } from "@activeledger/activecontracts";
|
|
4
4
|
import { EventEngine } from "@activeledger/activequery";
|
|
5
5
|
import { EventEmitter } from "events";
|
|
6
6
|
export interface IVMObject {
|
|
@@ -32,10 +32,10 @@ export interface IVMDataPayload {
|
|
|
32
32
|
outputs: ActiveDefinitions.LedgerStream[];
|
|
33
33
|
readonly: ActiveDefinitions.LedgerIORputs;
|
|
34
34
|
key: number;
|
|
35
|
-
contractData?: ActiveDefinitions.IContractData;
|
|
35
|
+
contractData?: ActiveDefinitions.IContractData | undefined | null;
|
|
36
36
|
}
|
|
37
37
|
export interface IVMInternalCache {
|
|
38
|
-
[umid: string]:
|
|
38
|
+
[umid: string]: PostProcessEvent | Standard;
|
|
39
39
|
}
|
|
40
40
|
export interface IContractKeyHolder {
|
|
41
41
|
[umid: string]: number;
|
|
@@ -56,19 +56,23 @@ export interface IVMContractHolder {
|
|
|
56
56
|
export interface IVirtualMachine {
|
|
57
57
|
initialiseVirtualMachine(extraBuiltins?: string[], extraExternals?: string[], extraMocks?: string[]): void;
|
|
58
58
|
getActivityStreamsFromVM(umid: string): ActiveDefinitions.LedgerStream[];
|
|
59
|
+
getNewContractData(umid: string): boolean;
|
|
59
60
|
getInternodeCommsFromVM(umid: string): any;
|
|
60
61
|
clearingInternodeCommsFromVM(umid: string): boolean;
|
|
61
62
|
getReturnContractData(umid: string): unknown;
|
|
62
63
|
getThrowsFromVM(umid: string): string[];
|
|
64
|
+
getEvents(umid: string): any[];
|
|
63
65
|
destroy(umid: string): void;
|
|
64
66
|
getInputs(umid: string): ActiveDefinitions.LedgerStream[];
|
|
65
67
|
initialise(payload: IVMDataPayload, contractName: string): Promise<void>;
|
|
66
68
|
read(umid: string, readMethod: string): Promise<unknown>;
|
|
67
69
|
verify(sigless: boolean, umid: string): Promise<boolean>;
|
|
68
|
-
vote(nodes: ActiveDefinitions.INodes, umid: string): Promise<boolean
|
|
70
|
+
vote(nodes: ActiveDefinitions.INodes, umid: string): Promise<boolean | {
|
|
71
|
+
leader: boolean;
|
|
72
|
+
}>;
|
|
69
73
|
commit(nodes: ActiveDefinitions.INodes, possibleTerritoriality: boolean, umid: string): Promise<boolean>;
|
|
70
74
|
postProcess(territoriality: boolean, who: string, umid: string): Promise<any>;
|
|
71
|
-
reconcile(nodes: ActiveDefinitions.INodes, umid: string): Promise<
|
|
75
|
+
reconcile(nodes: ActiveDefinitions.INodes, umid: string): Promise<any>;
|
|
72
76
|
}
|
|
73
77
|
export {};
|
|
74
78
|
//# sourceMappingURL=vm.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vm.interface.d.ts","sourceRoot":"","sources":["../../../src/protocol/interfaces/vm.interface.ts"],"names":[],"mappings":";AAuBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"vm.interface.d.ts","sourceRoot":"","sources":["../../../src/protocol/interfaces/vm.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,17 @@ import { Shared } from "./shared";
|
|
|
5
5
|
export declare class PermissionsChecker {
|
|
6
6
|
private entry;
|
|
7
7
|
private db;
|
|
8
|
-
private checkRevs;
|
|
9
8
|
private securityCache;
|
|
10
9
|
private shared;
|
|
11
10
|
private inputs;
|
|
12
11
|
private data;
|
|
13
|
-
constructor(entry: ActiveDefinitions.LedgerEntry, db: ActiveDSConnect,
|
|
14
|
-
process(data: string[], inputs?: boolean): Promise<ActiveDefinitions.LedgerStream[]>;
|
|
12
|
+
constructor(entry: ActiveDefinitions.LedgerEntry, db: ActiveDSConnect, securityCache: ISecurityCache, shared: Shared);
|
|
13
|
+
process(data: string[], inputs?: boolean, retry?: number): Promise<ActiveDefinitions.LedgerStream[]>;
|
|
14
|
+
private sleep;
|
|
15
15
|
private buildPromises;
|
|
16
16
|
private processStreams;
|
|
17
17
|
private signatureCheck;
|
|
18
|
+
private checkMultiSignature;
|
|
19
|
+
private checkSingleSignature;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=permissionsChecker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionsChecker.d.ts","sourceRoot":"","sources":["../../src/protocol/permissionsChecker.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"permissionsChecker.d.ts","sourceRoot":"","sources":["../../src/protocol/permissionsChecker.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASlC,qBAAa,kBAAkB;IAkB3B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,EAAE;IAEV,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IAfhB,OAAO,CAAC,MAAM,CAAU;IAQxB,OAAO,CAAC,IAAI,CAAW;gBAGb,KAAK,EAAE,iBAAiB,CAAC,WAAW,EACpC,EAAE,EAAE,eAAe,EAEnB,aAAa,EAAE,cAAc,EAC7B,MAAM,EAAE,MAAM;IAUX,OAAO,CAClB,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,GAAE,OAAc,EACtB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;IA2C5C,OAAO,CAAC,KAAK;YAUC,aAAa;IA0J3B,OAAO,CAAC,cAAc;IAkItB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,oBAAoB;CAkC7B"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { ActiveDefinitions } from "@activeledger/activedefinitions";
|
|
2
|
+
import { ActiveLogger } from "@activeledger/activelogger";
|
|
2
3
|
export class PermissionsChecker {
|
|
3
|
-
|
|
4
|
+
entry;
|
|
5
|
+
db;
|
|
6
|
+
securityCache;
|
|
7
|
+
shared;
|
|
8
|
+
inputs;
|
|
9
|
+
data;
|
|
10
|
+
constructor(entry, db, securityCache, shared) {
|
|
4
11
|
this.entry = entry;
|
|
5
12
|
this.db = db;
|
|
6
|
-
this.checkRevs = checkRevs;
|
|
7
13
|
this.securityCache = securityCache;
|
|
8
14
|
this.shared = shared;
|
|
9
15
|
}
|
|
10
|
-
async process(data, inputs = true) {
|
|
16
|
+
async process(data, inputs = true, retry = 0) {
|
|
11
17
|
this.inputs = inputs;
|
|
12
18
|
this.data = data;
|
|
13
19
|
try {
|
|
@@ -15,69 +21,90 @@ export class PermissionsChecker {
|
|
|
15
21
|
return this.processStreams(streams);
|
|
16
22
|
}
|
|
17
23
|
catch (error) {
|
|
18
|
-
|
|
24
|
+
const allowedRetries = 6;
|
|
25
|
+
const waitTime = 250;
|
|
26
|
+
if (retry >= allowedRetries) {
|
|
27
|
+
ActiveLogger.info(this.data, `Error Fetching Streams after ${allowedRetries} retries, giving up`);
|
|
28
|
+
return Promise.reject(error);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
ActiveLogger.info(this.data, `Error Fetching Streams retry ${retry} of ${allowedRetries} with ${waitTime}ms wait - ${this.entry.$umid}`);
|
|
32
|
+
await this.sleep(waitTime);
|
|
33
|
+
ActiveLogger.info(error, `Retrying PermissionsChecker due to - ${this.entry.$umid}`);
|
|
34
|
+
return await this.process(data, inputs, ++retry);
|
|
35
|
+
}
|
|
19
36
|
}
|
|
20
37
|
}
|
|
38
|
+
sleep(time) {
|
|
39
|
+
return new Promise((resolve) => setTimeout(resolve, time));
|
|
40
|
+
}
|
|
21
41
|
async buildPromises() {
|
|
22
|
-
const keys =
|
|
42
|
+
const keys = new Set();
|
|
23
43
|
let contractDataIncluded = false;
|
|
24
|
-
for (
|
|
25
|
-
const filteredPrefix = this.shared.filterPrefix(
|
|
26
|
-
const suffix =
|
|
44
|
+
for (const streamId of this.data) {
|
|
45
|
+
const filteredPrefix = this.shared.filterPrefix(streamId, true);
|
|
46
|
+
const suffix = streamId.split(":")[1];
|
|
27
47
|
contractDataIncluded = suffix === "data";
|
|
28
|
-
if (
|
|
29
|
-
keys.
|
|
30
|
-
|
|
48
|
+
if (suffix !== "data") {
|
|
49
|
+
keys.add(filteredPrefix + ":stream");
|
|
50
|
+
}
|
|
51
|
+
if (!this.shared.sigOnly[filteredPrefix]) {
|
|
52
|
+
keys.add(filteredPrefix);
|
|
31
53
|
}
|
|
32
54
|
}
|
|
55
|
+
const keyArray = Array.from(keys);
|
|
33
56
|
try {
|
|
34
|
-
const docs = await this.db.allDocs({
|
|
35
|
-
keys,
|
|
36
|
-
include_docs: true,
|
|
37
|
-
});
|
|
38
57
|
const reorder = {};
|
|
39
58
|
const results = [];
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
result.state
|
|
59
|
+
if (keyArray.length) {
|
|
60
|
+
const docs = await this.db.allDocs({
|
|
61
|
+
keys: keyArray,
|
|
62
|
+
include_docs: true,
|
|
63
|
+
});
|
|
64
|
+
if (docs?.rows) {
|
|
65
|
+
for (let i = docs.rows.length; i--;) {
|
|
66
|
+
const baseDoc = docs.rows[i].doc._id.replace(":stream", "");
|
|
67
|
+
let iMeta = null;
|
|
68
|
+
let iState = null;
|
|
69
|
+
if (baseDoc === docs.rows[i].doc._id) {
|
|
70
|
+
iState = docs.rows[i].doc;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
iMeta = docs.rows[i].doc;
|
|
74
|
+
if (iMeta.contractlock &&
|
|
75
|
+
iMeta.contractlock.length &&
|
|
76
|
+
iMeta.contractlock.indexOf(this.entry.$tx.$contract) === -1) {
|
|
77
|
+
throw {
|
|
78
|
+
code: 1700,
|
|
79
|
+
reason: "Stream contract locked",
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (iMeta.namespaceLock &&
|
|
83
|
+
iMeta.namespaceLock.length &&
|
|
84
|
+
iMeta.namespaceLock.indexOf(this.entry.$tx.$namespace) === -1) {
|
|
85
|
+
throw {
|
|
86
|
+
code: 1710,
|
|
87
|
+
reason: "Stream namespace locked",
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (!reorder[baseDoc]) {
|
|
92
|
+
reorder[baseDoc] = results.push({
|
|
93
|
+
state: iState,
|
|
94
|
+
meta: iMeta,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const result = results[reorder[baseDoc] - 1];
|
|
99
|
+
if (result.state) {
|
|
100
|
+
if (iMeta)
|
|
101
|
+
result.meta = iMeta;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
if (iState)
|
|
105
|
+
result.state = iState;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
81
108
|
}
|
|
82
109
|
}
|
|
83
110
|
}
|
|
@@ -88,13 +115,15 @@ export class PermissionsChecker {
|
|
|
88
115
|
let cRes = results[i];
|
|
89
116
|
cRes.meta = {
|
|
90
117
|
_id: `${cRes.state._id}:meta`,
|
|
91
|
-
_rev: "0-context"
|
|
118
|
+
_rev: "0-context",
|
|
92
119
|
};
|
|
93
120
|
results[i] = cRes;
|
|
121
|
+
keyArray.push(`${cRes.state._id}:meta`);
|
|
94
122
|
}
|
|
95
123
|
}
|
|
96
124
|
}
|
|
97
|
-
|
|
125
|
+
const sigOnlyAdjustment = this.data.filter(id => this.shared.sigOnly[this.shared.filterPrefix(id, true)]).length;
|
|
126
|
+
if (results.length * 2 === (keyArray.length + sigOnlyAdjustment)) {
|
|
98
127
|
return results;
|
|
99
128
|
}
|
|
100
129
|
else {
|
|
@@ -105,8 +134,11 @@ export class PermissionsChecker {
|
|
|
105
134
|
}
|
|
106
135
|
}
|
|
107
136
|
catch (error) {
|
|
108
|
-
error
|
|
109
|
-
error.
|
|
137
|
+
ActiveLogger.error(error, "Error fetching streams for permissions check - " + this.entry.$umid);
|
|
138
|
+
if (!error.code) {
|
|
139
|
+
error.code = 950;
|
|
140
|
+
error.reason = "Stream(s) not found";
|
|
141
|
+
}
|
|
110
142
|
throw error;
|
|
111
143
|
}
|
|
112
144
|
}
|
|
@@ -115,14 +147,15 @@ export class PermissionsChecker {
|
|
|
115
147
|
let i = stream.length;
|
|
116
148
|
while (i--) {
|
|
117
149
|
let streamId = stream[i].state._id;
|
|
150
|
+
const filteredStreamId = this.shared.filterPrefix(streamId);
|
|
118
151
|
const revType = this.inputs ? this.entry.$revs.$i : this.entry.$revs.$o;
|
|
119
152
|
const currentRevision = stream[i].meta._rev + ":" + stream[i].state._rev;
|
|
120
153
|
if (revType && revType[streamId]) {
|
|
121
|
-
if (revType[streamId] !== currentRevision) {
|
|
154
|
+
if ((revType[streamId] !== currentRevision) && !this.shared.sigOnly[filteredStreamId]) {
|
|
122
155
|
return reject({
|
|
123
156
|
code: 1200,
|
|
124
157
|
reason: (this.inputs ? "Input" : "Output") +
|
|
125
|
-
|
|
158
|
+
` Stream Position Incorrect (${revType[streamId]} !== ${currentRevision} - Local)`,
|
|
126
159
|
});
|
|
127
160
|
}
|
|
128
161
|
}
|
|
@@ -147,11 +180,11 @@ export class PermissionsChecker {
|
|
|
147
180
|
}
|
|
148
181
|
}
|
|
149
182
|
if (stream[i].meta.authorities) {
|
|
150
|
-
this.signatureCheck(streamId, stream[i], nhpkCheck, nhpkCheckIO, reject);
|
|
183
|
+
this.signatureCheck(streamId, filteredStreamId, stream[i], nhpkCheck, nhpkCheckIO, reject);
|
|
151
184
|
}
|
|
152
185
|
else {
|
|
153
186
|
const type = stream[i].meta.type ? stream[i].meta.type : "rsa";
|
|
154
|
-
const sigCheck = this.shared.signatureCheck(stream[i].meta.public, this.entry.$sigs[
|
|
187
|
+
const sigCheck = this.shared.signatureCheck(stream[i].meta.public, this.entry.$sigs[filteredStreamId], type);
|
|
155
188
|
if (!sigCheck) {
|
|
156
189
|
return reject({
|
|
157
190
|
code: 1220,
|
|
@@ -159,77 +192,73 @@ export class PermissionsChecker {
|
|
|
159
192
|
});
|
|
160
193
|
}
|
|
161
194
|
}
|
|
195
|
+
if (this.shared.sigOnly[streamId]) {
|
|
196
|
+
stream.splice(i, 1);
|
|
197
|
+
}
|
|
162
198
|
}
|
|
163
199
|
}
|
|
164
200
|
resolve(stream);
|
|
165
201
|
});
|
|
166
202
|
}
|
|
167
|
-
signatureCheck(streamId, stream, nhpkCheck, nhpkCheckIO, reject) {
|
|
168
|
-
const sigCheck = (authority) => this.shared.signatureCheck(authority.public, this.entry.$sigs[
|
|
169
|
-
const
|
|
170
|
-
if (isLedgerAuthSignatures) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (!nhpk) {
|
|
184
|
-
return reject({
|
|
185
|
-
code: 1230,
|
|
186
|
-
reason: (this.inputs ? "Input" : "Output") +
|
|
187
|
-
" Security Hardened Key Transactions Only",
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
const signature = this.entry.$sigs[this.shared.filterPrefix(streamId)][sigStream];
|
|
193
|
-
const authCheck = stream.meta.authorities.some((authority) => {
|
|
194
|
-
if (authority.hash === sigStream) {
|
|
195
|
-
return this.shared.signatureCheck(authority.public, signature, authority.type);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
return authCheck;
|
|
202
|
-
}
|
|
203
|
+
signatureCheck(streamId, filteredStreamId, stream, nhpkCheck, nhpkCheckIO, reject) {
|
|
204
|
+
const sigCheck = (authority) => this.shared.signatureCheck(authority.public, this.entry.$sigs[filteredStreamId], authority.type);
|
|
205
|
+
const signatureContainer = this.entry.$sigs[filteredStreamId];
|
|
206
|
+
if (ActiveDefinitions.LedgerTypeChecks.isLedgerAuthSignatures(signatureContainer)) {
|
|
207
|
+
this.checkMultiSignature(streamId, stream, signatureContainer, nhpkCheck, reject);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
this.checkSingleSignature(streamId, filteredStreamId, stream, signatureContainer, nhpkCheck, nhpkCheckIO, reject);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
checkMultiSignature(streamId, stream, signatureContainer, nhpkCheck, reject) {
|
|
214
|
+
const sigStreamKeys = Object.keys(signatureContainer);
|
|
215
|
+
if (sigStreamKeys.length > stream.meta.authorities.length) {
|
|
216
|
+
return reject({
|
|
217
|
+
code: 1225,
|
|
218
|
+
reason: `${this.inputs ? "Input" : "Output"} Incorrect Signature List Length`,
|
|
203
219
|
});
|
|
204
|
-
|
|
220
|
+
}
|
|
221
|
+
const allSignaturesValid = sigStreamKeys.every((sigStream) => {
|
|
222
|
+
if (nhpkCheck) {
|
|
223
|
+
return false;
|
|
205
224
|
}
|
|
225
|
+
const signature = signatureContainer[sigStream];
|
|
226
|
+
return stream.meta.authorities.some((authority) => authority.hash === sigStream && this.shared.signatureCheck(authority.public, signature, authority.type));
|
|
227
|
+
});
|
|
228
|
+
if (!allSignaturesValid) {
|
|
229
|
+
return reject({
|
|
230
|
+
code: 1220,
|
|
231
|
+
reason: `${this.inputs ? "Input" : "Output"} Signature Incorrect`,
|
|
232
|
+
});
|
|
206
233
|
}
|
|
207
|
-
|
|
208
|
-
|
|
234
|
+
}
|
|
235
|
+
checkSingleSignature(streamId, filteredStreamId, stream, signature, nhpkCheck, nhpkCheckIO, reject) {
|
|
236
|
+
const authorityCheck = stream.meta.authorities.some((authority) => {
|
|
237
|
+
if (nhpkCheck) {
|
|
209
238
|
const nhpk = nhpkCheckIO[this.shared.getLabelIOMap(this.inputs, streamId)].$nhpk;
|
|
210
|
-
if (
|
|
211
|
-
|
|
239
|
+
if (!nhpk) {
|
|
240
|
+
reject({
|
|
212
241
|
code: 1230,
|
|
213
|
-
reason:
|
|
214
|
-
" Security Hardened Key Transactions Only",
|
|
242
|
+
reason: `${this.inputs ? "Input" : "Output"} Security Hardened Key Transactions Only`,
|
|
215
243
|
});
|
|
244
|
+
return false;
|
|
216
245
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
246
|
+
}
|
|
247
|
+
if (this.shared.signatureCheck(authority.public, signature, authority.type)) {
|
|
248
|
+
if (authority.hash) {
|
|
249
|
+
this.entry.$sigs[filteredStreamId] = {
|
|
250
|
+
[authority.hash]: signature,
|
|
220
251
|
};
|
|
221
|
-
return true;
|
|
222
252
|
}
|
|
223
|
-
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
if (!authorityCheck) {
|
|
228
|
-
return reject({
|
|
229
|
-
code: 1220,
|
|
230
|
-
reason: (this.inputs ? "Input" : "Output") + " Signature Incorrect",
|
|
231
|
-
});
|
|
253
|
+
return true;
|
|
232
254
|
}
|
|
255
|
+
return false;
|
|
256
|
+
});
|
|
257
|
+
if (!authorityCheck) {
|
|
258
|
+
reject({
|
|
259
|
+
code: 1220,
|
|
260
|
+
reason: `${this.inputs ? "Input" : "Output"} Signature Incorrect`,
|
|
261
|
+
});
|
|
233
262
|
}
|
|
234
263
|
}
|
|
235
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionsChecker.js","sourceRoot":"","sources":["../../src/protocol/permissionsChecker.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"permissionsChecker.js","sourceRoot":"","sources":["../../src/protocol/permissionsChecker.ts"],"names":[],"mappings":"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"}
|
package/es/protocol/process.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { EventEmitter } from "events";
|
|
|
3
3
|
import { ActiveDSConnect } from "@activeledger/activeoptions";
|
|
4
4
|
import { ActiveCrypto } from "@activeledger/activecrypto";
|
|
5
5
|
import { ActiveDefinitions } from "@activeledger/activedefinitions";
|
|
6
|
+
import { LedgerEntry } from "@activeledger/activedefinitions/lib/definitions";
|
|
6
7
|
export declare class Process extends EventEmitter {
|
|
7
8
|
private entry;
|
|
8
9
|
private selfHost;
|
|
@@ -12,14 +13,11 @@ export declare class Process extends EventEmitter {
|
|
|
12
13
|
private dbe;
|
|
13
14
|
private dbev;
|
|
14
15
|
private secured;
|
|
16
|
+
private static networkNodeLength;
|
|
15
17
|
private static generalContractVM;
|
|
16
|
-
private static defaultContractsVM;
|
|
17
|
-
private static singleContractVMHolder;
|
|
18
18
|
private isDefault;
|
|
19
|
-
private contractRef;
|
|
20
19
|
private inputs;
|
|
21
20
|
private outputs;
|
|
22
|
-
private checkRevs;
|
|
23
21
|
private nodeResponse;
|
|
24
22
|
private contractLocation;
|
|
25
23
|
private contractId;
|
|
@@ -28,7 +26,7 @@ export declare class Process extends EventEmitter {
|
|
|
28
26
|
private storeSingleError;
|
|
29
27
|
private errorOut;
|
|
30
28
|
private broadcastTimeout;
|
|
31
|
-
private
|
|
29
|
+
private currentTrueVotes;
|
|
32
30
|
private securityCache;
|
|
33
31
|
private shared;
|
|
34
32
|
private permissionChecker;
|
|
@@ -37,19 +35,22 @@ export declare class Process extends EventEmitter {
|
|
|
37
35
|
constructor(entry: ActiveDefinitions.LedgerEntry, selfHost: string, reference: string, right: ActiveDefinitions.INeighbourBase, db: ActiveDSConnect, dbe: ActiveDSConnect, dbev: ActiveDSConnect, secured: ActiveCrypto.Secured);
|
|
38
36
|
destroy(umid: string): void;
|
|
39
37
|
private sortVersions;
|
|
40
|
-
|
|
38
|
+
private static contractPathCache;
|
|
39
|
+
static clearContractPathCache(contractId?: string): void;
|
|
40
|
+
start(contractVersion?: string, contractData?: ActiveDefinitions.IContractData | undefined | null): Promise<void>;
|
|
41
41
|
updatedFromBroadcast(node?: any): void;
|
|
42
42
|
isCommiting(): boolean;
|
|
43
|
-
private
|
|
44
|
-
private processUnsafeContracts;
|
|
43
|
+
private getContractDate;
|
|
45
44
|
private handleVM;
|
|
46
45
|
private process;
|
|
47
46
|
private postVote;
|
|
48
47
|
emitFailed(data?: {
|
|
49
48
|
status: number;
|
|
50
49
|
error: string | Error;
|
|
51
|
-
|
|
50
|
+
entry?: LedgerEntry;
|
|
51
|
+
}, noWait?: boolean): void;
|
|
52
52
|
private hasOutstandingVotes;
|
|
53
|
+
private countOutstandingVotes;
|
|
53
54
|
private initRightKnock;
|
|
54
55
|
private sleep;
|
|
55
56
|
private canCommit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/protocol/process.ts"],"names":[],"mappings":";AAwBA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAiB,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/protocol/process.ts"],"names":[],"mappings":";AAwBA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAiB,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMpE,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAe9E,qBAAa,OAAQ,SAAQ,YAAY;IAgNrC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IA7MjB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAK;IAQrC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAiB;IA2BjD,OAAO,CAAC,SAAS,CAAkB;IAgBnC,OAAO,CAAC,MAAM,CAAW;IAQzB,OAAO,CAAC,OAAO,CAAW;IAgB1B,OAAO,CAAC,YAAY,CAAkC;IAQtD,OAAO,CAAC,gBAAgB,CAAS;IASjC,OAAO,CAAC,UAAU,CAAS;IAO3B,OAAO,CAAC,SAAS,CAAS;IAO1B,OAAO,CAAC,MAAM,CAAQ;IAQtB,OAAO,CAAC,gBAAgB,CAAS;IAOjC,OAAO,CAAC,QAAQ,CAId;IAQF,OAAO,CAAC,gBAAgB,CAAiB;IAQzC,OAAO,CAAC,gBAAgB,CAAS;IAQjC,OAAO,CAAC,aAAa,CAAwB;IAQ7C,OAAO,CAAC,MAAM,CAAS;IAQvB,OAAO,CAAC,iBAAiB,CAAqB;IAQ9C,OAAO,CAAC,QAAQ,CAAiB;IAQjC,OAAO,CAAC,YAAY,CAAwD;gBAiBlE,KAAK,EAAE,iBAAiB,CAAC,WAAW,EACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,CAAC,cAAc,EACvC,EAAE,EAAE,eAAe,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,YAAY,CAAC,OAAO;IAiDhC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAwDlC,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAEzB;WAKO,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM;IAgB3C,KAAK,CAChB,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,iBAAiB,CAAC,aAAa,GAAG,SAAS,GAAG,IAAI;IAqU5D,oBAAoB,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IA2EtC,WAAW,IAAI,OAAO;YAWf,eAAe;YAkFf,QAAQ;YA8IR,OAAO;IAyErB,OAAO,CAAC,QAAQ;IA8HT,UAAU,CACf,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,EACrE,MAAM,CAAC,EAAE,OAAO;IA+BlB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,qBAAqB;YAsBf,cAAc;IA2B5B,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,SAAS;YAwCH,MAAM;IA+RpB,OAAO,CAAC,kBAAkB;IA6D1B,OAAO,CAAC,UAAU;CAsBnB"}
|