functionisTrxAddress(base58Str){if(typeof(base58Str)!=='string')returnfalse;if(base58Str.length !==34)returnfalse;let address =decode58(base58Str);if(address.length !==25)returnfalse;if(address[0]!==0x41)returnfalse;const checkSum = address.slice(21);
address = address.slice(0,21);const hash0 =SHA256(address);const hash1 =SHA256(hash0);const checkSum1 = hash1.slice(0,4);if(checkSum[0]== checkSum1[0]&& checkSum[1]== checkSum1[1]&& checkSum[2]==
checkSum1[2]&& checkSum[3]== checkSum1[3]){returntrue}returnfalse;}/**
* Checks if the given string is an address (ETH,BNB,HB)
*
* @method isAddress
* @param {String} address the given HEX address
* @return {Boolean}
*/functionisEthsAddress(address){// check if it has the basic requirements of an addressif(!/^(0x)?[0-9a-f]{40}$/i.test(address)){returnfalse;// If it's ALL lowercase or ALL upppercase}elseif(/^(0x|0X)?[0-9a-f]{40}$/.test(address)||/^(0x|0X)?[0-9A-F]{40}$/.test(address)){returntrue;// Otherwise check each case}else{returncheckAddressChecksum(address);}};/**
* Checks if the given string is a checksummed address
*
* @method checkAddressChecksum
* @param {String} address the given HEX address
* @return {Boolean}
*/functioncheckAddressChecksum(address){// Check each case
address = address.replace(/^0x/i,'');var addressHash =sha3(address.toLowerCase()).replace(/^0x/i,'');for(var i =0; i <40; i++){// the nth letter should be uppercase if the nth digit of casemap is 1if((parseInt(addressHash[i],16)>7&& address[i].toUpperCase()!== address[i])||(parseInt(addressHash[i],16)<=7&& address[i].toLowerCase()!== address[i])){returnfalse;}}returntrue;};