Assignment 15

Blockchain

by Alan Harris

HTML

<label>Put in information: </label><br><br>
<input type="text" id="nodeinput"><br><br>
<button onclick="addNode();">
Add
</button><br>
<button onclick="isValid();">
Invalidate
</button><br><br>

<br>
<div id="print"></div>
<div id="invalidout"></div>

CSS

button:focus {
  border: 1px solid black;
  padding: 4px 4px;
}

button {
    background-color: grey;
    border: 1px solid black;
    color: white;
    padding: 4px 8px;
    text-decoration: none;
    margin: 4px 2px;
    }
 button:hover {
   background-color:black;
 }

JavaScript

var ANode = new Node();
var aCoin = new List1();


  
function calcHash() {

var hash = ANode.hash;
	return SHA1(String(hash.prevhash + hash.content));
}

function Node(input) {
//	this.id = null;
  this.content = input;
  this.next = null;
  this.prev = null;
  this.hash = '';
  
  
}  

function List1(input) {
	
	this.head = new Node("genesis");
  this.length = 1;
  this.prev = this.head;
	this.prevhash = this.prev.hash;
 
 
  

this.add = function(ANode) {
	var element = new Node();
  element.content = ANode;
  
  
	if (this.head == null){
  	this.head = element;
    this.length = 1;
		element.hash = "0";
    return element + element.hash;
  }
  if (this.tail == null) {
  	this.tail = element;
    this.tail.prev = this.head;
    this.head.next = this.tail;
   	
    this.length++;
    return element;
  }
  this.tail.next = element;
  element.prev = this.tail;
  this.tail = element;
  
  return element;
}



this.print = function() {
	if (this.head == null) {
		return "List is Empty."
	}
 var p = "";
  var aNode = this.head;
	var nHash = ANode.hash;
  while(aNode != null) {
  	p += aNode.content + " " + aNode.hash + "	" + "</br>";
    aNode = aNode.next;
  }
  return p;
}
}




function addNode() {
	
  
	var input = document.getElementById("nodeinput").value;
  aCoin.add(input);
	
  document.getElementById("print").innerHTML = aCoin.print();
}

function isValid() {
	
}

function SHA1(msg) {
    function rotate_left(n,s) {
        var t4 = ( n<<s ) | (n>>>(32-s));
        return t4;
    }
    function lsb_hex(val) {
        var str="";
        var i;
        var vh;
        var vl;
        for( i=0; i<=6; i+=2 ) {
            vh = (val>>>(i*4+4))&0x0f;
            vl = (val>>>(i*4))&0x0f;
            str += vh.toString(16) + vl.toString(16);
        }
        return str;
    }
    function cvt_hex(val) {
        var str="";
        var i;
        var v;
        for( i=7; i>=0; i-- ) {
            v = (val>>>(i*4))&0x0f;
            str += v.toString(16);
       ...