La afirmación
Un certificado de Signet hace una única afirmación, acotada y sólida: el titular de la clave privada de una dirección determinada firmó un desafío determinado en un momento determinado. Nada más. Es una prueba de control de una clave, no de identidad.
Demostrado, sin necesidad de confianza
- Esta dirección produjo esta firma sobre este desafío.
- El firmante tenía la clave privada en el momento de firmar.
- El hash del certificado existía, a más tardar, en el momento del anclaje on-chain.
No demostrado
- La identidad del firmante.
- Que el control sea exclusivo, o que la clave no se haya compartido ni obtenido bajo coacción.
- Que el firmante sea cliente del solicitante — la vinculación con una identidad corresponde al KYC del solicitante.
Cómo se demuestra
El solicitante emite un desafío que incluye un nonce de un solo uso vinculado a esa única solicitud. La contraparte firma los bytes exactos del desafío con su billetera. Verificamos la firma frente a la dirección en la blockchain correcta, luego calculamos el hash del certificado resultante y anclamos ese hash on-chain mediante un lote merkle — el mismo contrato Stamper que se usa en toda la familia BA, de modo que el verificador público lo valida sin cambios.
El nonce hace imposible la reutilización: una firma sobre el desafío de una solicitud no se puede trasladar a otra. Verificamos el desafío guardado byte a byte, nunca una copia regenerada.
Criptografía por blockchain
Cada blockchain tiene su propio estándar de firma. La capa de verificación está diseñada para que las nuevas blockchains se añadan sin modificar lo existente.
| Blockchain | Estándar | Verificación |
|---|---|---|
| Ethereum y EVM | EIP-191 personal_sign | Recuperación del firmante sin conexión |
| Billeteras de smart contract | EIP-1271 | Llamada on-chain a isValidSignature |
| Bitcoin (SegWit / Taproot) | BIP-322 | Sin conexión |
| Bitcoin (P2PKH legacy) | BIP-137 signmessage | Sin conexión |
| Litecoin, Dogecoin, Zcash (t1) | BIP-137 con el prefijo de la red | Sin conexión |
| Solana | ed25519 | Sin conexión |
| Polkadot, Kusama | sr25519 / ed25519 | Sin conexión |
| TRON | TronWeb signMessageV2 (también app Ledger TRON) | Recuperación del firmante sin conexión |
Verifícalo tú mismo
Cada certificado exporta un paquete de prueba autosuficiente. Cualquiera puede comprobarlo frente a blockchains públicas, sin cuenta y sin confiar en BA | Signet:
signaturees una firma válida dechallengepor parte deaddressen la blockchain indicada. Esto por sí solo demuestra el control de la clave.- Vuelve a calcular el
SHA-256del JSON canónico del certificado; debe ser igual acontentHash(la hoja merkle). - Pliega la hoja con
merkleProof(keccak256, pares ordenados); el resultado debe ser igual amerkleRoot. - Llama a
timestamps(merkleRoot)en el contrato Stamper en Polygon; un valor distinto de cero es el momento en que, a más tardar, existía el certificado. - Opcionalmente, verifica la prueba OpenTimestamps frente al bloque de Bitcoin.
Qué guardamos
La contraparte no es nuestra clienta y no tiene cuenta. Recopilamos lo mínimo: la dirección, el desafío, la firma, la marca de tiempo y la referencia del solicitante. Nunca pedimos ni aceptamos una clave privada ni una frase semilla. Sin perfilado por IP más allá de lo que exige la prevención de abusos. La conservación constituye el registro de cumplimiento del solicitante y se elimina a petición.