(function(){ var lookup_block_height = document.createElement("INPUT"); lookup_block_height.setAttribute("type", "text"); var input_info = document.createElement("h8"); input_info.innerHTML = "block number: "; document.body.appendChild(document.createElement("br")); document.body.appendChild(input_info); document.body.appendChild(lookup_block_height); var lookup_block_button = document.createElement("BUTTON"); lookup_block_button.id = "lookup block number"; var lookup_block_button_text = document.createTextNode("lookup block"); lookup_block_button.appendChild(lookup_block_button_text); lookup_block_button.onclick = async function() { var num = parseInt(lookup_block_height.value, 10); var x = await rpc.apost(["block", num]); lookup_block2(x); }; document.body.appendChild(lookup_block_button); var current_block = document.createElement("div"); current_block.id = "block div"; document.body.appendChild(current_block); function to_now(t) { var start_time = 15192951759; var n = (t + start_time);//10 * seconds since jan 1 1970 var curdate = new Date(null); curdate.setTime(n*100); var final_now = curdate.toLocaleString(); console.log(final_now); return final_now; } function exponent(a, b) {//a is type bigint. b is an int. if (b == 0) { return BigInt(1); } else if (b == 1) { return a; } //else if ((b % 2) == 0) {return exponent(a.times(a), Math.floor(b / 2)); } else if ((b % 2) == 0) {return exponent(a * a, b / 2); } //else {return a.times(exponent(a, b-1)); } else {return a * (exponent(a, b-1)); } } function sci2int(x) { function pair2int(l) { var b = l.pop(); var a = l.pop(); var c = exponent(BigInt(2), a);//c is a bigint //return c.times((256 + b)).divide(256); return c * ((256n + BigInt(b))) / 256n; } function sci2pair(i) { var a = Math.floor(i / 256); var b = i % 256; return [a, b]; } return pair2int(sci2pair(x)); } function lookup_block2(block) { block2 = block[1]; var diff = sci2int(block[5]); console.log("lookup block 2"); console.log(diff); var current_block = document.getElementById("block div"); if (block == "empty") { current_block.innerHTML = "this block doesn't exist."; } else { var miner = block[10][1][1]; var time0 = block[4]; var prev_hash = toHex(atob(block[2])); var time = to_now(time0); //acc, number, hash, txs, power, nonce, total_coins, db_root current_block.innerHTML = "block: ".concat(block[1]).concat("
was mined by: ").concat(miner).concat("
has timestamp: ").concat(time).concat("
prev hash: ").concat(prev_hash).concat("
difficulty: ").concat(diff / 1000000000000n); } } } )();