BernuviaBernuvia

Seguridad y transparencia

Tu dinero está en un contrato que puedes leer

Cuando compras en Bernuvia, tu USDC no lo guarda Bernuvia: queda en un contrato público en Polygon hasta que la compra se cierra.

Los contratos

Todo corre en la red principal de Polygon (chain id 137). Cada dirección enlaza al explorador: ahí puedes leer el código y cada transacción.

Contrato de custodia · MarketplaceEscrow v2

Código verificado

Recibe el pago del comprador y lo retiene hasta que se libera al vendedor o se reembolsa. Es el único lugar donde está el dinero de una compra.

Solidity 0.8.36 con viaIR, optimizador a 200 pasadas y EVM cancun, construido sobre OpenZeppelin 5.6.1: AccessControl con traspaso del administrador en dos pasos, ReentrancyGuard, Pausable, SafeERC20 y EIP-712.

Red
Polygon · 137
Licencia
MIT
Compilador
Solidity 0.8.36

Dirección

0x9d285aA8a5b24df5eB058D9350dbe33645cd23b5
Ver en Polygonscan

Cobro de membresía · SubscriptionCollector v2

Código verificado

Cobra la membresía de vendedor en USDC con límites fijados en la cadena: como mucho una vez por periodo y siempre a la tesorería.

Red
Polygon · 137
Licencia
MIT
Compilador
Solidity 0.8.36

Dirección

0xF9f95934fd272481fa205d3B030B5156Ce62A21c
Ver en Polygonscan

USDC · Circle

Contrato de terceros

La moneda de todas las compras: el USDC nativo de Circle en Polygon.

Red
Polygon · 137

Dirección

0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359
Ver en Polygonscan

Leer el código, no creer en la palabra

Los dos contratos tienen el código fuente publicado y verificado en el explorador: lo que corre en la red es exactamente lo que puedes leer.

  • Coincidencia exacta entre el código publicado y el que está desplegado.
  • Licencia MIT: cualquiera puede leerlo, copiarlo y revisarlo.
  • El mismo compilador y las mismas librerías en los dos contratos.

Qué garantiza el contrato de custodia

Estas reglas no las aplica un servidor de Bernuvia: están escritas en el contrato y cualquiera puede comprobarlas en el código verificado.

El dinero nunca pasa por Bernuvia

El USDC va de la wallet del comprador directamente al contrato. Bernuvia no lo custodia en ningún momento.

Sin destinos arbitrarios

El dinero de una compra solo puede ir al vendedor, descontada la comisión, que se acredita a la tesorería, o volver al comprador. El contrato no admite ningún otro destino.

Cada cual retira lo suyo

Los pagos se acreditan y cada parte los retira cuando quiere. Una dirección bloqueada no puede atascar los cobros de los demás.

La disputa es del comprador

Solo el comprador abre la disputa, solo él la retira y solo él la cierra cuando vence el plazo. El vendedor no tiene ninguna acción sobre ella en la cadena: aporta su versión en el expediente. Y solo puede abrirse antes de que venza la liberación automática, así que nadie reabre una compra ya cerrada.

Retirar la disputa no estira el reloj

Quien retira su disputa puede volver a abrirla mientras el plazo original siga vivo, y ese plazo no se renueva: se hereda. Cada compra admite como máximo tres aperturas, así que nadie puede congelar el dinero abriendo y cerrando disputas en bucle.

La comisión nunca sale de tu parte

En una disputa la comisión se calcula como el menor de dos números: la comisión sobre el importe, o lo que se queda el vendedor. Si el reembolso es total, la comisión es cero.

Cotizaciones firmadas y de un solo uso

Cada precio se firma con EIP-712, lleva su hora de emisión y su caducidad, y solo sirve una vez.

Auditoría

El contrato de custodia pasó una auditoría adversarial antes de salir a la red principal, y una segunda revisión ya con los contratos en producción. De esa segunda revisión salió la versión que hoy custodia el dinero.

Método

  • Tres revisiones adversariales independientes, cada una con su lente: fondos y reentrancia; control de acceso y firmas; máquina de estados y griefing.
  • Análisis estático con Slither y una invariante de conservación de fondos sobre operaciones aleatorias.
  • Una segunda revisión con doce lentes independientes en cuatro rondas, ya sobre los contratos desplegados.
  • Invariantes de conservación comprobadas contra un modelo en la sombra, que rehace la contabilidad por fuera y tiene que cuadrar al céntimo.
  • Tres lentes adversariales sobre el código de la versión actual antes de desplegarla, con sus pruebas de concepto convertidas en regresiones.

Las cifras

662

casos automatizados en Hardhat, repartidos en 109 ficheros

105

pruebas de concepto convertidas en regresiones

1.600

operaciones aleatorias contra el modelo en la sombra

15

pruebas del contrato de cobro de membresía

Seguridad de la plataforma

Fuera de la cadena, lo que protege tu cuenta y tus descargas.

  • Verificación en dos pasos, y un código adicional para las acciones sensibles: un retiro desde el panel exige tu firma y un código enviado a tu correo.
  • Los tokens del MCP y de la API llevan permisos acotados: nunca pueden firmar un pago, retirar fondos ni cambiar tu correo, tu contraseña o tu verificación en dos pasos.
  • La tesorería es una wallet multifirma.
  • Las sesiones caducan por inactividad.
  • Cabeceras de seguridad en cada respuesta: CSP con nonce por petición, COOP y CORP.
  • Cada descarga de un archivo alojado por Bernuvia muestra la huella SHA-256 que calcula el servidor, o indica que aún no está disponible.

Reportar una vulnerabilidad

Si encuentras un fallo de seguridad, queremos saberlo antes que nadie. Así nos lo cuentas:

Escríbenos por el formulario de contacto

Pon «Seguridad» en el asunto y cuéntanos qué encontraste, cómo reproducirlo y qué impacto tiene.

Si tienes cuenta, usa el reporte de fallos del panel

El botón «Reportar un fallo» del panel llega al mismo equipo y queda ligado a tu cuenta.

Danos tiempo para corregirlo

Te confirmamos la recepción y te contamos cuándo queda arreglado. Te pedimos no publicarlo hasta entonces.