Seguridad
Sin custodia
Qué garantiza el contrato, quién puede hacer qué y cómo saca la empresa su dinero sin depender de la plataforma.
Sin custodia significa que Pasarela no tiene las llaves del dinero. Los depósitos caen en direcciones controladas por un contrato en Arbitrum (GatewayFactory), y ese contrato solo sabe hacer una cosa con ellos: repartirlos hacia las billeteras configuradas para tu empresa.
Qué garantiza el contrato#
- La dirección de depósito no tiene clave privada. Es un contrato mínimo que solo obedece a la fábrica que lo creó. El dinero solo sale mediante un barrido.
- Quien barre no elige el destino. El barrido envía cada parte a las billeteras guardadas en la configuración de la empresa. Ni el servidor ni un atacante que robe su clave pueden desviar el neto a otra dirección.
- La plataforma no puede cambiar tu tesorería ni tu billetera de comisiones. Solo la billetera
adminde la empresa. - La dirección se conoce antes de desplegar nada. Se calcula con CREATE2 a partir del id de la empresa y del cliente, por eso es permanente y crear clientes no cuesta gas.
- El gas descontado tiene tope. El contrato rechaza un barrido que descuente más del tope por token (0.50 USD), y solo permite descontar gas si la empresa está en un modo que lo paga.
- El contrato no es actualizable. No hay un proxy que permita cambiar su lógica después.
Quién puede qué#
| Acción | Plataforma | `admin` de la empresa |
|---|---|---|
| Barrer un depósito hacia las billeteras configuradas | Sí (puede descontar gas, con tope) | Sí (sin descuento de gas) |
| Elegir a dónde va el dinero de un barrido | No | No: sale de la configuración |
| Cambiar la tesorería | No | Sí, con 48 horas de espera en producción |
| Cambiar la billetera de comisiones | No | Sí |
| Traspasar la administración a otra billetera | No | Sí |
| Cambiar la comisión de la empresa y su base | Sí (desde el panel) | Sí |
| Cambiar la comisión de la plataforma y si se descuenta gas | Sí | No |
| Cambiar el tope de gas, los relayers y la billetera de la plataforma | Sí | No |
Con franqueza: lo que sí depende de la plataforma
La comisión de la plataforma no tiene tope en el contrato (puede ir de 0 a 100 %) y la fija la plataforma. Cada cambio queda registrado en la blockchain (evento MerchantFeesChanged) y se refleja en Ver cuenta, pero el contrato no lo impide. Las condiciones comerciales son un acuerdo entre tu empresa y la plataforma.
Usa tu propia billetera de administración
Si al dar de alta la empresa no se indica una billetera admin propia, la administra la cuenta de la plataforma, y entonces la plataforma sí podría cambiar la tesorería. Comprueba admin_address en Ver cuenta: debe ser una billetera que controles tú, idealmente una multifirma.
Barrido directo por la empresa#
Si el servidor de la plataforma dejara de funcionar, el dinero no queda atrapado: la billetera admin de la empresa puede llamar al contrato y barrer cualquier dirección de sus clientes. El reparto es el mismo (comisiones incluidas) y gasFee debe ser 0; el gas de la transacción lo paga la propia billetera en ETH. Cuando el servidor vuelve a leer la red, ve ese barrido y marca los depósitos como liquidados con normalidad.
1// GatewayFactory — dirección en "factory" de GET /v1/me2function sweep(bytes32 merchantId, bytes32 depositKey, IERC20 token, uint256 gasFee) external returns (uint256);3 4// merchantId = keccak256(bytes(<id de la empresa>)) p. ej. "01a01557-db25-4c0a-91da-7a46e3f6c163"5// depositKey = keccak256(bytes(<id del cliente>)) p. ej. "3d8ed2f2-72d4-4c27-b606-a53b5a4db086"6// token = contrato de USDT o USDC7// gasFee = 0 cuando llama el admin de la empresaTokens enviados por error#
| Qué se envió a la dirección de depósito | ¿Se recupera? | Cómo |
|---|---|---|
| ETH en Arbitrum | Sí | sweepNative lo envía entero a la tesorería. Lo puede llamar la plataforma o el admin. |
| Otro token ERC-20 en Arbitrum | Sí | sweep con el contrato de ese token. Se reparte igual que un depósito, con las comisiones. No genera eventos ni webhooks. |
| USDT o USDC por otra red compatible (Ethereum, Base, Polygon, BSC) | Hoy no | Requeriría desplegar el contrato en esa red en la misma dirección. No está hecho. |
| Por Tron u otra red no compatible | No | La dirección no existe allí. |
Estado de la auditoría#
Probados, aún sin auditoría externa
Los contratos tienen pruebas automáticas y una prueba de punta a punta con depósitos reales en Arbitrum Sepolia, pero todavía no han pasado por una auditoría externa. Es un pendiente previo a producción. Hasta entonces, trátalos como software en pruebas.