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 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; } // version is used for multi algo coins function versionToAlgo($coin, $version) { // could be filled by block json (chain analysis) $algos['MYR'] = array( 0=>'sha256', 1=>'scrypt', 2=>'groestl', 3=>'skein', 4=>'qubit' ); $algos['DGB'] = array( 0=>'scrypt', 1=>'sha256', 2=>'groestl', 3=>'skein', 4=>'qubit' ); $algos['J'] = array( 2 =>'sha256', 3=>'x11', 4=>'x13', 5=>'x15', 6=>'scrypt', 7 =>'nist5', 8 =>'groestl', 9=>'penta', 10=>'whirl', 11=>'luffa', 12=>'keccak', 13=>'quark', 15=>'bastion' ); $algos['SFR'] = array( 0=>'sha256', 1=>'scrypt', 2=>'groestl', 3=>'x11', 4=>'blake' ); $symbol = $coin->symbol; if (!empty($coin->symbol2)) $symbol = $coin->symbol2; if ($symbol == 'J') return arraySafeVal($algos[$symbol], $version, ''); else if (isset($algos[$symbol])) return arraySafeVal($algos[$symbol], ($version >> 9) & 7, ''); return false; }