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 |
|---|---|---|
| AcciónBarrer un depósito hacia las billeteras configuradas | PlataformaSí (puede descontar gas, con tope) | admin de la empresaSí (sin descuento de gas) |
| AcciónElegir a dónde va el dinero de un barrido | PlataformaNo | admin de la empresaNo: sale de la configuración |
| AcciónCambiar la tesorería | PlataformaNo | admin de la empresaSí, con 48 horas de espera en producción |
| AcciónCambiar la billetera de comisiones | PlataformaNo | admin de la empresaSí |
| AcciónTraspasar la administración a otra billetera | PlataformaNo | admin de la empresaSí |
| AcciónCambiar la comisión de la empresa y su base | PlataformaSí (desde el panel) | admin de la empresaSí |
| AcciónCambiar la comisión de la plataforma y si se descuenta gas | PlataformaSí | admin de la empresaNo |
| AcciónCambiar el tope de gas, los relayers y la billetera de la plataforma | PlataformaSí | admin de la empresaNo |
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 |
|---|---|---|
| Qué se envió a la dirección de depósitoETH en Arbitrum | ¿Se recupera?Sí | CómosweepNative lo envía entero a la tesorería. Lo puede llamar la plataforma o el admin. |
| Qué se envió a la dirección de depósitoOtro token ERC-20 en Arbitrum | ¿Se recupera?Sí | Cómosweep con el contrato de ese token. Se reparte igual que un depósito, con las comisiones. No genera eventos ni webhooks. |
| Qué se envió a la dirección de depósitoUSDT o USDC por otra red compatible (Ethereum, Base, Polygon, BSC) | ¿Se recupera?Hoy no | CómoRequeriría desplegar el contrato en esa red en la misma dirección. No está hecho. |
| Qué se envió a la dirección de depósitoPor Tron u otra red no compatible | ¿Se recupera?No | CómoLa 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.