Title: feat: add contract verification badge for deployed token WASM - #426
Merged
zachyo merged 2 commits intoAug 3, 2026
Merged
Conversation
|
@IFEANYIBRIGHT Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #371
Adds a trust signal to token pages so visitors can tell whether a deployed contract runs the audited SoroPad WASM, has been modified, or can't be verified — combined with lock status, this answers the two questions that actually make a token credible: "does it run audited code" and "can the code still change."
Problem
Previously the token dashboard showed admin address and supply but nothing about the deployed code itself. Since upgrade() exists, a token that started as stock SoroPad code may no longer be — and a locked contract isn't necessarily what it appears either. There was no way for a visitor to verify contract integrity from the public page.
Changes
contracts/wasm-manifest.json — checked-in manifest of reference WASM hashes per release version, built in CI
.github/workflows/ci.yml — [describe what changed: manifest generation/validation step on each commit]
frontend/lib/stellar.ts — added VerificationResult and WasmManifest types, fetchWasmManifest(), and [the deployed-contract WASM hash reader — fill in once finalized]
frontend/hooks/useSoroban.ts — [describe the hook changes supporting verification state]
frontend/components/ui/ContractVerificationBadge.tsx — new badge component rendering Verified / Modified / Unknown states
frontend/app/api/wasm-manifest/ — new API route serving the manifest to the frontend
frontend/app/token/[contractId]/PublicTokenPage.tsx — badge added to the token detail page
frontend/app/components/RecentLaunches.tsx — badge added to launch cards
frontend/.env.example — [note any new env vars needed, e.g. manifest path/URL]
Verification states
Verified — deployed hash matches a known reference version; links to the source tag
Modified — hash doesn't match any known version; shown explicitly with a warning
Unknown — hash couldn't be read from the ledger entry
Combined with lock status
The badge is paired with is_locked() so holders see both signals together — audited code + immutability — rather than either alone.
Testing
[What did you test — verified/modified/unknown states against real deployed contracts? Local manifest mismatch simulation?]