Do not open

La bóveda sellada

Cualquier NFT en una caja cuyo titular está cifrado on-chain. Aun así se puede vender en Seaport, o en privado por un precio que solo lee el comprador, y sale a cualquier dirección. Así funciona, y esto es lo que cualquiera puede seguir viendo.

Qué es la bóveda

Un contrato que guarda NFT. Cada NFT que entra recibe una caja: un token propio cuyo titular está cifrado, como las cajas del juego. El NFT se queda dentro hasta que el titular de la caja lo saca, lo vende en Seaport o vende la caja en privado.

La bóveda acepta las colecciones que permite su propietario. En la red de prueba es una colección de prueba gratuita que cualquiera puede mintear.

Sellar un NFT

Sellar es una sola transacción: el NFT entra en la bóveda y se crea una caja para él, que tienes tú. Es pública, porque es una simple transferencia de NFT: todos ven quién selló qué NFT. Lo que le pase a la caja después, no.

Mientras la caja no se mueva, su depositante es su titular evidente. La duda llega con una transferencia: en cuanto las cajas cambian de manos, nadie puede saber quién tiene cuál.

Para volver a encontrar tus cajas, la página lee tus propios recibos y descifra, solo para ti, cuáles te llegaron de verdad. Una firma.

La llave de la caja

Cada caja tiene una llave: un secreto de 256 bits, guardado cifrado, que nadie puede leer, ni siquiera tú. La bóveda solo la compara. Todo lo que sale de la bóveda (el NFT, un anuncio, el ETH de una venta) se pide con la llave, nunca con tu dirección.

Nunca escribes la llave. Tu wallet firma un mensaje fijo, gratis, y la página deriva de esa firma la llave de cada caja: el mismo wallet genera las mismas llaves en cualquier dispositivo. Firma ese mensaje solo en DO NOT OPEN: quien consiga la firma puede sacar tus NFT.

Una llave nunca se envía tal cual: se mezcla con los términos exactos de la solicitud (la caja, la acción, la dirección, el precio, la fecha de fin y un contador). Cambia un término, o envía la misma solicitud otra vez más tarde, y la llave deja de coincidir: la solicitud se rechaza.

Una caja que cambia de manos recibe una llave aleatoria, así que su titular anterior ya no puede hacer nada con ella. Su nuevo titular hace suya la llave con una transacción («Quedarme la llave»). Cualquiera puede intentarlo, pero solo surte efecto para el titular, y desde fuera las dos cosas se ven iguales.

Pedir algo

Sacar un NFT, ponerlo en venta, retirar un anuncio y cobrar el ETH de una venta funcionan igual, en dos pasos. Una solicitud on-chain: la bóveda comprueba la llave bajo cifrado. Luego una prueba del servicio de gestión de llaves de Zama de que la llave coincidió, que cualquiera puede traer de vuelta.

La solicitud se resuelve de una de tres maneras: hecha; rechazada, cuando la llave no coincidió (no pasa nada, nada revierte, así que un desconocido no aprende nada); o fallida, cuando la caja cambió entretanto (vendida en Seaport mientras tanto, por ejemplo).

Mientras una solicitud espera su prueba, la caja está ocupada: no puede moverse ni recibir otra solicitud. Eso suele tardar unos segundos.

En la bóveda sellada. El relayer lleva tu petición, la llave se comprueba a ciegas, y el NFT va adonde dijiste. Tu dirección no aparece en ninguna parte.

  • Texto cifrado
  • Transacción
  • Valor con prueba
  • Valor en claro

Vender en Seaport

Un anuncio es una orden real de Seaport 1.5, el protocolo de OpenSea, cuyo vendedor es la propia bóveda: tu dirección no aparece en ninguna parte. La bóveda valida la orden on-chain, así que no firma nada, y solo las órdenes que ella validó pueden vender sus NFT.

Cualquier marketplace de Seaport puede completarla. El comprador paga en ETH y recibe el NFT al instante. Los compradores ven el NFT, el precio y la fecha de fin, como en cualquier anuncio.

El ETH espera en la caja a quien tenga la llave, menos la comisión de la bóveda (2,5%, nunca más del 10%). Lo cobras en cualquier dirección. Un anuncio dura hasta 180 días; uno que caducó sin comprador vuelve a quedar sellado.

Ventas privadas

Ofrece una caja a un solo comprador, por un precio en cUSDC (un dólar confidencial) que solo vosotros dos podéis leer. El comprador lo lee en la página, y luego paga y se lleva la caja en una sola transacción.

Todo se resuelve bajo cifrado: si el precio llegó y el vendedor aún tenía la caja, la caja se mueve con una llave que es del comprador, y el vendedor cobra; si no, nada se mueve y el comprador recupera sus cUSDC. Para todos los demás, una venta que se hizo y una que no se ven iguales.

Cualquiera puede ofrecer cualquier caja, así que una oferta no demuestra nada sobre quién la tiene. El vendedor puede cancelar una oferta abierta; solo el comprador nombrado puede aceptarla, una vez.

Regalar una caja

Envía una caja a cualquier dirección. Solo se mueve si la tienes, y llega sin llave: quien la recibe la encuentra en sus recibos y hace suya la llave. Hasta entonces nadie puede sacar nada de ella.

El relayer

Una solicitud enviada desde tu wallet muestra tu dirección. Por eso la API del sitio puede enviar tus solicitudes y sus pruebas desde su propio wallet, y pagar el gas: así tu dirección no aparece en ninguna transacción.

No aprende nada que la cadena no muestre. La llave le llega cifrada para la bóveda y atada a los términos de la solicitud: no puede leerla, ni cambiar un término, ni reutilizarla. Ve, como cualquier servidor web, la IP de la que viene una solicitud.

Puede negarse, no hacer trampa. Tiene límites por día y por minuto; si está caído o dice que no, la página envía la solicitud desde tu wallet, y te avisa de que entonces se ve tu dirección.

Lo que es público y lo que no

Público

  • Quién selló qué NFT (el depósito es una transferencia de NFT)
  • El NFT dentro de cada caja, su estado, su anuncio
  • Los anuncios y las compras en Seaport, con la bóveda como vendedora
  • La dirección a la que sale un NFT o el ETH de una venta, y el importe
  • Que se hizo una solicitud, sobre qué caja, para qué, y si se hizo, se rechazó o falló
  • Las dos direcciones de una transferencia o de una venta privada

Nunca público

  • Quién tiene una caja
  • La llave de la caja
  • El precio de una venta privada, y si se hizo
  • Si una transferencia movió algo
  • Quién pidió un anuncio, una retirada o un cobro, cuando lo envía el relayer

En la práctica: saca las cosas a una dirección sin historial, deja que el relayer envíe tus solicitudes, y ten en cuenta que los tiempos aún pueden dar pistas (un «Quedarme la llave» justo después de una transferencia a la misma dirección, por ejemplo).

En la red de prueba

La bóveda funciona en Sepolia, la red de prueba de Ethereum, con el Seaport 1.5 real. Su comisión es del 2,5%. La colección de prueba se mintea gratis desde la página de la bóveda; nada de esto vale dinero.

Para saber más