hexdec($addressversion)) { return false; } $check=substr($addr,0,strlen($addr)-8); $check=pack("H*" , $check); $check=strtoupper(hash("sha256",hash("sha256",$check,true))); $check=substr($check,0,8); return $check==substr($addr,strlen($addr)-8); } function checkAddressLTC($addr,$addressversion=ADDRESSVERSION) { $addr=decodeBase58($addr); if(strlen($addr)!=50) { return false; } $version=substr($addr,0,2); if(hexdec($version)!=hexdec($addressversion)) //Changed from ">" to "!=" for LTC { return false; } $check=substr($addr,0,strlen($addr)-8); $check=pack("H*" , $check); $check=strtoupper(hash("sha256",hash("sha256",$check,true))); $check=substr($check,0,8); return $check==substr($addr,strlen($addr)-8); } function hash160($data) { $data=pack("H*" , $data); return strtoupper(hash("ripemd160",hash("sha256",$data,true))); } function pubKeyToAddress($pubkey) { return hash160ToAddress(hash160($pubkey)); } function remove0x($string) { if(substr($string,0,2)=="0x"||substr($string,0,2)=="0X") { $string=substr($string,2); } return $string; } //start of BTC LTC switch function determineValidity($address, $addressType) { // https://en.bitcoin.it/wiki/List_of_address_prefixes switch ($addressType) { case "BTC": return checkAddressBTC($address,"00"); case "LTC": return checkAddressLTC($address,"30"); case "NMC": return checkAddressLTC($address,"34"); // https://github.com/namecoin/namecoin/blob/master/src/namecoin.cpp#L2485 case "BTCTEST": return checkAddressLTC($address,"6F"); case "NVC": return checkAddressLTC($address,"08"); // https://github.com/CryptoManiac/novacoin/blob/master/src/base58.h#L279 case "PPC": return checkAddressLTC($address,"37"); // https://github.com/ppcoin/ppcoin/blob/master/src/base58.h#L267 case "DOGE": return checkAddressLTC($address,"1E"); // https://github.com/dogecoin/dogecoin/blob/master/src/base58.h#L281 default: $error_Address_type = "Address type not correctly specified"; return $error_Address_type; } }