Assignment 15??
by leiperte
HTML
<input type=textbox id="content" />
<input type="button" value="Push to Node" onclick="createList()" />
<p id="output1"></p>
JavaScript
class Block {
constructor(data, previousHash = '') {
this.data = data;
this.previousHash = previousHash;
this.hash = this.calculateHash();
}
calculateHash() {
return hashCode(this.previousHash + JSON.stringify(this.data)).toString();
}
}
class Blockchain {
constructor() {
this.head = this.createGenesisBlock();
this.tail = null;
}
createGenesisBlock() {
return new Block(0, "12/07/2018", "Genesis block", "0");
}
getLastestBlock(){
return this.head(this.head.length - 1);
}
addBlock(newBlock) {
newBlock.previousHash = this.getLatestBlock().hash;
newBlock.hash = newBlock.calculateHash();
this.head.push(newBlock);
}
isChainValid() {
for (let i = 1; i < this.head.length; i++) {
const currentBlock = this.head[i];
const previousBlock = this.head[i - 1];
if (currentBlock.hash !== currentBlock.calculateHash()) {
return false;
}
if (currentBlock.hash !== previousBlock.hash) {
return false;
}
}
return true;
}
}
Blockchain.prototype.push = function(content) {
var node = new Block();
node.content = content;
if (this.head === null) {
this.head = node;
this.length = 1;
return node;
}
if (this.tail === null) {
this.tail = node;
this.tail.previous = this.head;
this.head.next = this.tail;
this.length = 2;
return node;
}
this.tail.next = node;
node.previous = this.tail;
this.tail = node;
this.length++;
return node;
}
Blockchain.prototype.print = function() {
if (this.head == null) return "Empty List";
var s = "";
var node = this.head;
while (node != null) {
s += node.content + " ";
node = node.next;
}
return s;
}
var bList = new Blockchain();
function createList() {
var n = document.getElementById("content").value;
for (var i = 1; i <= n; i++) {
bList.push(isChainValid());
}
document.getElementById("output1").innerHTML =...