Undersigned

For publishers

Anyone can sign "I publish this app". A claim only shows as proven when one of two things is true.

1 · Name your wallet in the app itself

Add one line inside <application> in your manifest and ship a release:

<meta-data android:name="undersigned.publisher" android:value="YOUR_WALLET_ADDRESS" />

The manifest is covered by your signing key, so nobody else can put a wallet there. Readers check the build the dApp Store serves and the certificate the store lists. Several wallets: separate them with commas.

2 · Or put a file on the website the store lists for your app

Serve /.well-known/undersigned.txt with your wallet address on a line by itself. To list a treasury on the payments board, add a line treasury: ADDRESS. Then list it in the app: the treasury wallet signs the listing itself, or, if that wallet should never sign anything, your proven publisher wallet lists it for the treasury (same fee). Nobody else can list a treasury for your app.

A GitHub website is read from the repository's default branch. Social profiles, link pages and shared hosts are not accepted as proof.

Then

Sign the claim from that wallet in the Undersigned app (open your app's page, "I publish this app"). Your replies then carry the Publisher mark, and your own reviews of your app are not counted.

What does not prove it

The wallet's own signature only shows who is claiming. A payment address, or the wallet that published the app on the dApp Store, does not prove it either: the store does not say which on-chain record belongs to which listing, and anyone can mint one naming any app. The proof is something only the publisher controls — the app's signing key, or the website the store lists — naming the same wallet.

Check a package