-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathValid Chain
45 lines (39 loc) · 1.1 KB
/
Valid Chain
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// const Bar = require("./Bar.js");
// const crypto = require("crypto");
// class Karchain {
// constructor() { ... }
// get() { ... }
// get latestBar() { ... }
// isValidHashDifficulty(hash) { ... }
// calculateHashForBar(bar) { ... }
// calculateHash(...) { ... }
// mine(data) { ... }
// generateNextBark(data) { ... }
// addBlock(newBar) { ... }
// isValidNextBar(nextBar, previousBar) { ... }
isValidChain(chain) {
if (JSON.stringify(chain[0]) !== JSON.stringify(Bar.origin)) {
return false;
}
const tempChain = [chain[0]];
for (let i = 1; i < chain.length; i = i + 1) {
if (this.isValidNextBar(chain[i], tempChain[i - 1])) {
tempChain.push(chain[i]);
} else {
return false;
}
}
return true;
}
isChainLonger(chain) {
return chain.length > this.karchain.length;
}
replaceChain(newChain) {
if (this.isValidChain(newChain) && this.isChainLonger(newChain)) {
this.karchain = JSON.parse(JSON.stringify(newChain));
} else {
throw "Error: invalid chain";
}
}
// };
// module.exports = Karchain;