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);
...