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