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 admin de 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ónPlataformaadmin de la empresa
AcciónBarrer un depósito hacia las billeteras configuradasPlataformaSí (puede descontar gas, con tope)admin de la empresaSí (sin descuento de gas)
AcciónElegir a dónde va el dinero de un barridoPlataformaNoadmin de la empresaNo: sale de la configuración
AcciónCambiar la tesoreríaPlataformaNoadmin de la empresaSí, con 48 horas de espera en producción
AcciónCambiar la billetera de comisionesPlataformaNoadmin de la empresaSí
AcciónTraspasar la administración a otra billeteraPlataformaNoadmin de la empresaSí
AcciónCambiar la comisión de la empresa y su basePlataformaSí (desde el panel)admin de la empresaSí
AcciónCambiar la comisión de la plataforma y si se descuenta gasPlataformaSíadmin de la empresaNo
AcciónCambiar el tope de gas, los relayers y la billetera de la plataformaPlataformaSí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.

Contrato
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 empresa

Tokens 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 noCó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?NoCó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.