trac-msb 0.0.43 → 0.0.45
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/msb.mjs +2 -2
- package/package.json +7 -7
- package/src/index.js +38 -9
package/msb.mjs
CHANGED
|
@@ -4,8 +4,8 @@ const opts = {
|
|
|
4
4
|
stores_directory : 'stores/',
|
|
5
5
|
store_name : typeof process !== "undefined" ? process.argv[2] : Pear.config.args[0],
|
|
6
6
|
bootstrap: 'e442c6aadc8419c2439552ebecc79ffdc993dd816f9d2d6f562eef56e71ab9ba',
|
|
7
|
-
channel:
|
|
8
|
-
tx :
|
|
7
|
+
channel: '00bptracnetworkmainsettlementbus',
|
|
8
|
+
tx : 'bptracnetworkmainsettlementbustx'
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
const msb = new MainSettlementBus(opts);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trac-msb",
|
|
3
3
|
"main": "msb.mjs",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.45",
|
|
5
5
|
"pear": {
|
|
6
6
|
"name": "trac-msb",
|
|
7
7
|
"type": "terminal"
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"test": "brittle test/*.test.js"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
+
"trac-wallet": "^0.0.33",
|
|
15
16
|
"autobase": "7.0.45",
|
|
16
17
|
"b4a": "1.6.7",
|
|
17
18
|
"bare": "^1.17.1",
|
|
@@ -28,12 +29,11 @@
|
|
|
28
29
|
"protomux-wakeup": "^2.2.1",
|
|
29
30
|
"ready-resource": "^1.0.0",
|
|
30
31
|
"safety-catch": "1.0.2",
|
|
31
|
-
"trac-wallet": "^0.0.30",
|
|
32
32
|
"xache": "1.2.0",
|
|
33
33
|
"bare-assert": "^1.0.2",
|
|
34
34
|
"bare-buffer": "^3.1.2",
|
|
35
35
|
"bare-console": "^6.0.1",
|
|
36
|
-
"bare-crypto": "^1.4.
|
|
36
|
+
"bare-crypto": "^1.4.2",
|
|
37
37
|
"bare-events": "^2.5.4",
|
|
38
38
|
"bare-fs": "^4.0.2",
|
|
39
39
|
"bare-http1": "^4.0.2",
|
|
@@ -49,22 +49,23 @@
|
|
|
49
49
|
"bare-subprocess": "^5.0.3",
|
|
50
50
|
"bare-timers": "^3.0.1",
|
|
51
51
|
"bare-tls": "^2.0.2",
|
|
52
|
-
"bare-tty": "^
|
|
52
|
+
"bare-tty": "^3.2.0",
|
|
53
53
|
"bare-url": "^2.1.4",
|
|
54
54
|
"bare-utils": "^1.2.0",
|
|
55
55
|
"bare-worker": "^3.0.0",
|
|
56
56
|
"bare-zlib": "^1.2.5",
|
|
57
|
+
"worker_threads": "npm:bare-node-worker-threads",
|
|
58
|
+
"crypto": "npm:bare-node-crypto",
|
|
57
59
|
"assert": "npm:bare-node-assert",
|
|
58
60
|
"buffer": "npm:bare-node-buffer",
|
|
59
61
|
"child_process": "npm:bare-node-child-process",
|
|
60
62
|
"console": "npm:bare-node-console",
|
|
61
|
-
"crypto": "npm:bare-node-crypto",
|
|
62
63
|
"events": "npm:bare-node-events",
|
|
63
64
|
"fs": "npm:bare-node-fs",
|
|
64
65
|
"http": "npm:bare-node-http",
|
|
65
66
|
"https": "npm:bare-node-https",
|
|
66
|
-
"inspector": "npm:bare-node-inspector",
|
|
67
67
|
"module": "npm:bare-node-module",
|
|
68
|
+
"inspector": "npm:bare-node-inspector",
|
|
68
69
|
"os": "npm:bare-node-os",
|
|
69
70
|
"path": "npm:bare-node-path",
|
|
70
71
|
"process": "npm:bare-node-process",
|
|
@@ -76,7 +77,6 @@
|
|
|
76
77
|
"tty": "npm:bare-node-tty",
|
|
77
78
|
"url": "npm:bare-node-url",
|
|
78
79
|
"util": "npm:bare-node-util",
|
|
79
|
-
"worker_threads": "npm:bare-node-worker-threads",
|
|
80
80
|
"zlib": "npm:bare-node-zlib"
|
|
81
81
|
},
|
|
82
82
|
"publishConfig": {
|
package/src/index.js
CHANGED
|
@@ -11,6 +11,8 @@ import w from 'protomux-wakeup';
|
|
|
11
11
|
import PeerWallet from "trac-wallet"
|
|
12
12
|
import Corestore from 'corestore';
|
|
13
13
|
import tty from 'tty'
|
|
14
|
+
// removed until PEAR desktop bare-crypto package is fixed
|
|
15
|
+
//import crypto from 'crypto'
|
|
14
16
|
|
|
15
17
|
const wakeup = new w();
|
|
16
18
|
|
|
@@ -22,14 +24,14 @@ export class MainSettlementBus extends ReadyResource {
|
|
|
22
24
|
this.KEY_PAIR_PATH = `${this.STORES_DIRECTORY}${options.store_name}/db/keypair.json`
|
|
23
25
|
this.store = new Corestore(this.STORES_DIRECTORY + options.store_name);
|
|
24
26
|
this.swarm = null;
|
|
25
|
-
this.tx = options.tx || null;
|
|
27
|
+
this.tx = b4a.alloc(32).fill(options.tx) || null;
|
|
26
28
|
this.tx_pool = [];
|
|
27
29
|
this.enable_txchannel = typeof options.enable_txchannel !== "undefined" && options.enable_txchannel === false ? false : true;
|
|
28
30
|
this.enable_wallet = typeof options.enable_wallet !== "undefined" && options.enable_wallet === false ? false : true;
|
|
29
31
|
this.enable_updater = typeof options.enable_updater !== "undefined" && options.enable_updater === false ? false : true;
|
|
30
32
|
this.base = null;
|
|
31
33
|
this.key = null;
|
|
32
|
-
this.channel = options.channel || null;
|
|
34
|
+
this.channel = b4a.alloc(32).fill(options.channel) || null;
|
|
33
35
|
this.connectedNodes = 1;
|
|
34
36
|
this.replicate = options.replicate !== false;
|
|
35
37
|
this.writerLocalKey = null;
|
|
@@ -67,9 +69,9 @@ export class MainSettlementBus extends ReadyResource {
|
|
|
67
69
|
if (null === await view.get(op.key) &&
|
|
68
70
|
sanitizeTransaction(postTx) &&
|
|
69
71
|
postTx.op === 'post-tx' &&
|
|
70
|
-
hccrypto.verify(
|
|
71
|
-
hccrypto.verify(
|
|
72
|
-
|
|
72
|
+
hccrypto.verify(b4a.from(postTx.tx + postTx.in, 'utf-8'), b4a.from(postTx.is, 'hex'), b4a.from(postTx.ipk, 'hex')) &&// sender verification
|
|
73
|
+
hccrypto.verify(b4a.from(postTx.tx + postTx.wn, 'utf-8'), b4a.from(postTx.ws, 'hex'), b4a.from(postTx.wp, 'hex')) &&// writer verification
|
|
74
|
+
b4a.byteLength(JSON.stringify(postTx)) <= 4096
|
|
73
75
|
) {
|
|
74
76
|
await view.put(op.key, op.value);
|
|
75
77
|
console.log(`TX: ${op.key} appended. Signed length: `, _this.base.view.core.signedLength);
|
|
@@ -96,7 +98,7 @@ export class MainSettlementBus extends ReadyResource {
|
|
|
96
98
|
}
|
|
97
99
|
console.log('View Length:', this.base.view.core.length);
|
|
98
100
|
console.log('View Signed Length:', this.base.view.core.signedLength);
|
|
99
|
-
console.log('MSB Key:',
|
|
101
|
+
console.log('MSB Key:', b4a.toString(this.base.view.core.key, 'hex'));
|
|
100
102
|
this.writerLocalKey = b4a.toString(this.base.local.key, 'hex');
|
|
101
103
|
if (this.replicate) await this._replicate();
|
|
102
104
|
if (this.enable_txchannel) {
|
|
@@ -148,7 +150,7 @@ export class MainSettlementBus extends ReadyResource {
|
|
|
148
150
|
return
|
|
149
151
|
}
|
|
150
152
|
|
|
151
|
-
if(
|
|
153
|
+
if(b4a.byteLength(msg) > 3072) return;
|
|
152
154
|
|
|
153
155
|
try {
|
|
154
156
|
|
|
@@ -156,12 +158,12 @@ export class MainSettlementBus extends ReadyResource {
|
|
|
156
158
|
|
|
157
159
|
if (sanitizeTransaction(parsedPreTx) &&
|
|
158
160
|
parsedPreTx.op === 'pre-tx' &&
|
|
159
|
-
hccrypto.verify(
|
|
161
|
+
hccrypto.verify(b4a.from(parsedPreTx.tx + parsedPreTx.in, 'utf-8'), b4a.from(parsedPreTx.is, 'hex'), b4a.from(parsedPreTx.ipk, 'hex')) &&
|
|
160
162
|
parsedPreTx.w === _this.writerLocalKey &&
|
|
161
163
|
null === await _this.base.view.get(parsedPreTx.tx)
|
|
162
164
|
) {
|
|
163
165
|
const nonce = Math.random() + '-' + Date.now();
|
|
164
|
-
const signature = hccrypto.sign(
|
|
166
|
+
const signature = hccrypto.sign(b4a.from(parsedPreTx.tx + nonce, 'utf-8'), b4a.from(this.wallet.secretKey, 'hex'));
|
|
165
167
|
const append_tx = {
|
|
166
168
|
op: 'post-tx',
|
|
167
169
|
tx: parsedPreTx.tx,
|
|
@@ -249,6 +251,33 @@ export class MainSettlementBus extends ReadyResource {
|
|
|
249
251
|
});
|
|
250
252
|
}
|
|
251
253
|
|
|
254
|
+
async createHash(type, message){
|
|
255
|
+
if(type === 'sha256'){
|
|
256
|
+
const out = b4a.alloc(sodium.crypto_hash_sha256_BYTES);
|
|
257
|
+
sodium.crypto_hash_sha256(out, b4a.from(message));
|
|
258
|
+
return b4a.toString(out, 'hex');
|
|
259
|
+
}
|
|
260
|
+
let createHash = null;
|
|
261
|
+
if(global.Pear !== undefined){
|
|
262
|
+
let _type = '';
|
|
263
|
+
switch(type.toLowerCase()){
|
|
264
|
+
case 'sha1': _type = 'SHA-1'; break;
|
|
265
|
+
case 'sha384': _type = 'SHA-384'; break;
|
|
266
|
+
case 'sha512': _type = 'SHA-512'; break;
|
|
267
|
+
default: throw new Error('Unsupported algorithm.');
|
|
268
|
+
}
|
|
269
|
+
const encoder = new TextEncoder();
|
|
270
|
+
const data = encoder.encode(message);
|
|
271
|
+
const hash = await crypto.subtle.digest(_type, data);
|
|
272
|
+
const hashArray = Array.from(new Uint8Array(hash));
|
|
273
|
+
return hashArray
|
|
274
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
275
|
+
.join("");
|
|
276
|
+
} else {
|
|
277
|
+
return crypto.createHash(type).update(message).digest('hex')
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
252
281
|
async verifyDag() {
|
|
253
282
|
try {
|
|
254
283
|
console.log('--- DAG Monitoring ---');
|