HashPort frontend verification actually has two different layers
The first layer is Published
The wallet takes the HTML JavaScript Worker WASM and other executable resources actually loaded by the current page and calculates their SHA-256 hashes, then compares them with the file hashes recorded by the on-chain Store
Only when everything matches can the wallet confirm that the current page is identical to the version published on chain
But this still does not prove that it is the official website
Anyone can publish a frontend on chain, including an attacker publishing a phishing website
That is why there is a second layer called Official
The target contract can declare its official frontend through the Frontend Declaration Registry
When the user is about to sign a transaction, the wallet can compare the Frontend Identity of the current page with the frontend declared by the contract
Published proves that the files have not been secretly modified
Official proves that the frontend has been recognized by the target contract
These two checks solve two completely different problems