address2HexString($address); if (!empty($hexAddress) && empty($address)) $address = $this->hexString2Address($hexAddress); $this->privateKey = $privateKey; $this->address = $address; $this->hexAddress = $hexAddress; } /** * Dont rely on this. Always use Wallet::validateAddress to double check * against tronGrid. * * @return bool */ public function isValid(): bool { if (strlen($this->address) !== self::ADDRESS_SIZE) { return false; } $address = Base58Check::decode($this->address, false, 0, false); $utf8 = hex2bin($address); if (strlen($utf8) !== 25) { return false; } if (strpos($utf8, chr(self::ADDRESS_PREFIX_BYTE)) !== 0) { return false; } $checkSum = substr($utf8, 21); $address = substr($utf8, 0, 21); $hash0 = Hash::SHA256($address); $hash1 = Hash::SHA256($hash0); $checkSum1 = substr($hash1, 0, 4); if ($checkSum === $checkSum1) { return true; } return false; } }