@SignOfficial #SignDigitalSovereignInfra $SIGN
It’s 2:11am and the Discord is stacking “INVALID CLAIM” screenshots. I pulled the logs. Every user holds a valid Sign attestation, schema 0x3f4…c8d, “Early Tester”—verified on-chain thirty minutes ago. The TokenTable eligibility API returns true. The Merkle proof validates. The claim should work.
But the transaction reverts. I traced wallet 0x6b2…9e4. He’s holding an attestation where he’s the subject—his DID is in the subject field—but the recipient field points to his old hot wallet from February. When he tries to claim from his new Safe{Wallet}, TokenTable checks Sign’s attestation.recipient against msg.sender. In Sign Protocol, the subject and recipient can diverge; the schema allows attesting about someone while sending the attestation to a different address. It’s useful for payroll attestations sent to HR wallets while describing employees.
Here, the credential proves he’s an early tester. But Sign’s structure bound the claimable token rights to the recipient address, not the subject identity. The attestation is cryptographically perfect—valid signature, valid schema, not expired—but the Sign indexing station returns recipient=0x8a1…2b3 while his claim comes from 0x6b2…9e4. The verification passes Sign’s contract check, then fails TokenTable’s ownership assertion.
I could tell him to claim from the old wallet, but he burned that key last week. The Sign attestation remains valid forever—no validUntil set. The subject is still accurate. The recipient is dead.
TokenTable can’t re-bind the attestation to his new wallet without the original issuer re-attesting. The issuer’s AttestationStation API is rate-limited and they’re in Singapore, asleep.
The credential verifies. The tokens stay locked. I’m watching the queue grow.