Identity
- Login principal
- -
- DSCVR user id from get_self()
- -
- Username
- -
DSCVR airdrop auth probe
This page only checks identity. It does not call the broken /api/dscvr/auth/user verifier.
This page is not trying to restore DSCVR's normal production login flow.
It is only checking whether a login method can produce a principal that
can be used in the airdrop proof flow. The observed
500 / get_self() issue appears to happen when
DSCVR's API asks the edge canister verifier to validate IC delegation or
canister-signature data that uses the newer IC certificate/state-tree
shape.
id.dscvr.one.
After the provider authenticates the user, the page still receives a
standard auth-client identity through authClient.getIdentity(),
plus the derived principal.
https://social.dscvr.one/..., not an arbitrary new
subdomain.
An airdrop claim needs to prove two things: the user controls a DSCVR principal, and the user controls the EVM address that will receive the tokens. This lab makes the IC identity and the EVM wallet sign the same canonical payload. If both proofs verify, the payload's principal, wallet address, campaign, nonce, and origin can be treated as bound together.
authClient.getIdentity().getPrincipal(). The
principal is not manually entered.
type, version,
campaignId, principal,
evmAddress, chainId, nonce,
issuedAt, expiresAt, and origin.
arg, then use the current IC identity to sign that
request.
personal_sign the same canonical payload.
content.argUtf8 is the payload. content.sender
is the principal. sender_pubkey_b64 can derive the
self-authenticating principal. sender_sig_b64 is the
session key signature over the IC request. sender_delegation
is the authorization chain from the principal to the session key.
Verification checks that the principal matches, the payload matches,
the delegation is not expired, the scope is acceptable, and the request
signature is valid.
The EVM proof contains address, message, and
signature. Verification checks that the address equals
payload.evmAddress, the message equals the canonical
payload, and verifyMessage(address, message, signature)
succeeds.
Tamper IC proof changes the payload nonce inside the IC
proof without regenerating the IC signature, so payload matching and
request-signature verification should fail. Tamper EVM sign
changes the final hex character of the EVM signature, so EVM
verification should fail. In a production claim flow, the nonce should
be backend-issued, short-lived, and single-use. Its main job is to stop
old proof/signature pairs from being replayed or submitted by someone
else first.
Both IC and EVM sign the same payload. This page keeps verification in the browser only so the proof shape is easy to inspect.
-
-
-