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 =...