JSFiddle - React, Tailwind, and code Playground

by Tim Peterson

HTML

<script src="http://dl.dropboxusercontent.com/u/28441300/BigInt.js"></script>
<script src="http://dl.dropboxusercontent.com/u/28441300/sha256.js"></script>
	            <input id='bitcoin-address' type="text" name="btc_address" 
              title="Please add a valid Bitcoin Address." style=''
              placeholder="Bitcoin Address"         
              class="required" value="" > 
                  
                  <button id='coinbaseBtn' name="submit-button" 
	          data-loading-text="Saving Bitcoin Address..." data-toggle="collapse"
	       		class="ajaxFormBtn fontLarge btn btn-lg btn-primary">
	       		<i class="fa fa-check"></i> Save Bitcoin Wallet Address
	       	</button>

JavaScript

var address = "1Eym7pyJcaambv8FG4ZoU8A4xsiL9us2zz";
if (check(address)) {
    alert('valid address');
    //document.getElementById('text').innerHTML += "valid";
} else {
    alert('NOT valid address');
    //document.getElementById('text').innerHTML += "invalid";
}

$("#coinbaseBtn").click(function(e){
    alert("clicked");
    var address=$("#bitcoin-address").val();
    var v=check(address);
    if(v==false){
        alert("stop submission!!!!!");
        //e.stopImmediatePropagation();
    } 
    else alert("GOOOD!!!!!");
});

function check(address) {
  var decoded = base58_decode(address);     
  if (decoded.length != 25) return false;
      
  var cksum = decoded.substr(decoded.length - 4); 
  var rest = decoded.substr(0, decoded.length - 4);  
  
  var good_cksum = hex2a(sha256_digest(hex2a(sha256_digest(rest)))).substr(0, 4);
        
  if (cksum != good_cksum) return false;
  return true;
}

function base58_decode(string) {
  var table = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
  var table_rev = new Array();
  
  var i;
  for (i = 0; i < 58; i++) {
    table_rev[table[i]] = int2bigInt(i, 8, 0);
  } 
  
  var l = string.length;
  var long_value = int2bigInt(0, 1, 0);  
  
  var num_58 = int2bigInt(58, 8, 0);
  
  var c;
  for(i = 0; i < l; i++) {
    c = string[l - i - 1];
    long_value = add(long_value, mult(table_rev[c], pow(num_58, i)));
  }

  var hex = bigInt2str(long_value, 16);  
    
  var str = hex2a(hex);  
  
  var nPad;
  for (nPad = 0; string[nPad] == table[0]; nPad++);  
  
  var output = str;
  if (nPad > 0) output = repeat("\0", nPad) + str;
  
  return output;
}

function hex2a(hex) {
    var str = '';
    for (var i = 0; i < hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}

function a2hex(str) {
    var aHex = "0123456789abcdef";
    var l = str.length;
    var nBuf;
    var strBuf;
    var strOut = "";
    for (var i = 0; i < l; i++) {
      nBuf =...