Políticas

Define salvaguardas programables que permiten, bloquean o envían automáticamente las acciones sensibles de tu workspace al flujo de aprobación normal. Las políticas evalúan cada retiro y cada llamada a smart contracts según las reglas que definas, de modo que la actividad riesgosa se detiene antes de llegar a la blockchain.

Descripción general

Una política es un conjunto de reglas que se ejecuta automáticamente cada vez que alguien inicia una acción protegida, como solicitar un retiro o llamar a un smart contract. Cada regla describe una condición (por ejemplo, "retiro por más de $10,000 a una dirección que no está en la lista blanca") y un efecto:

  • Deny: bloquea la acción por completo
  • Allow: permite que la acción omita la cola de aprobación y continúe directamente

Las políticas actúan como una capa de defensa siempre activa que complementa las aprobaciones de tus firmantes. En lugar de depender de que cada aprobador recuerde tus reglas de tesorería, codificas esas reglas una sola vez y dejas que Fystack las aplique en cada transacción.

Lista de políticas

Cómo se evalúan las políticas

Cuando se ejecuta una acción protegida, Fystack la verifica contra todas las políticas activas que apuntan a la billetera correspondiente y aplica un modelo de decisión seguro para la custodia:

  1. Deny siempre gana: si alguna regla coincide con un efecto Deny, la acción se bloquea, aunque otra regla la permita.
  2. Allow omite la aprobación: si una regla coincide con un efecto Allow y nada la deniega, la acción omite la cola de aprobación y continúa.
  3. Sin coincidencias: si ninguna regla coincide, la acción sigue tu flujo de aprobación normal.

Acciones disparadoras

Cada regla se aplica a una acción disparadora, es decir, al tipo de operación que protege:

Disparador

Protege

Withdrawal

Se evalúa cuando se solicita un retiro. Las reglas pueden hacer referencia al monto, el valor en USD, el activo, la dirección de destino, el estado en la lista blanca, la antigüedad de la dirección y la actividad reciente de la billetera, del workspace y de la red.

Contract Call

Se evalúa cuando se llama a un método de un smart contract. Las reglas pueden hacer referencia a la red, la dirección del contrato, el selector del método, el nombre del método, el valor nativo, el límite de gas y los argumentos decodificados de la llamada.

Web3 Transfer

Se evalúa cuando se envía una transferencia de moneda nativa o ERC-20 a través de la API de transacciones raw de Web3. Las reglas usan los mismos campos que los retiros (monto, valor en USD, activo, destino, entrada de la libreta de direcciones, billetera interna), de modo que una condición se lee igual en ambos disparadores. Las transferencias ERC-20 también se evalúan como Contract Call.

Web3 Message Signing

Se evalúa cuando se pide a una billetera que firme un mensaje (personal_sign, eth_sign, eth_signTypedData_v4). Las reglas pueden detectar permits de tokens (EIP-2612, DAI, Permit2), su spender, los tokens, el monto y la fecha límite. Solo Deny: un mensaje firmado siempre requiere aprobación.

Cómo crear una política

Paso 1: Abre la página de políticas

En la barra lateral izquierda, abre Policies y haz clic en Create Policy.

Paso 2: Asigna un nombre a la política y elige un grupo de aprobación

Dale a la política un Name claro que describa lo que protege (por ejemplo, "Protección de retiros grandes"). Luego selecciona el Approval Group que revisará los cambios de esta política.

Cada política está vinculada a un grupo de aprobación. Esto significa que una política no puede crearse ni editarse de forma silenciosa: cualquier cambio debe revisarse y aprobarse, igual que un retiro.

Formulario de creación de política

Paso 3: Apunta a billeteras específicas (opcional)

De forma predeterminada, una política se aplica a todas las billeteras del workspace. Para limitarla a un subconjunto, selecciona una o más billeteras en el campo Wallets. Las reglas de la política solo se evaluarán para las acciones sobre esas billeteras.

Selector de billeteras

Paso 4: Agrega reglas

Agrega una o más reglas a la política. Para cada regla, elige el Trigger (Withdrawal, Contract Call, Web3 Transfer o Web3 Message Signing), construye la Condition y selecciona el Effect (Allow o Deny).

El constructor de condiciones muestra los campos disponibles para el disparador seleccionado, de modo que puedes construir expresiones sin memorizar los nombres de los campos. Para no escribir reglas desde cero, parte de una de las plantillas de políticas que se muestran más abajo.

Formulario para agregar una regla

Las políticas también se pueden programar con el constructor JSON, útil para usuarios avanzados que quieren copiar y pegar reglas o usar una lógica más compleja de la que admite la interfaz.

Constructor JSON de políticas

Paso 5: Envía para aprobación

Haz clic en Create. Como toda política requiere aprobación, la nueva política todavía no está activa: se envía a su grupo de aprobación como una solicitud Pending Approval, junto con todas sus reglas.

Solicitud de aprobación de política

Paso 6: Aprueba la política

Un miembro del grupo de aprobación asignado abre la solicitud pendiente, revisa la política propuesta y sus reglas, y la aprueba. Solo entonces la política pasa a estar Active y comienza a proteger las transacciones.

Modal de aprobación de política

Plantillas de políticas

Parte de una plantilla en lugar de una política en blanco. Cada una de las siguientes es una política completa para una configuración de billeteras habitual: qué protege, las reglas explicadas en lenguaje sencillo y un JSON que puedes pegar directamente en el editor de políticas.

Usar una plantilla

  1. Ve a Policies, haz clic en Create Policy y cambia el editor a la pestaña JSON.
  2. Pega el Policy JSON de la plantilla.
  3. Vuelve a Form. Elige el Approval Group y las Wallets que debe cubrir la política. Las plantillas dejan ambos vacíos a propósito, y una lista de billeteras vacía significa todas las billeteras del workspace.
  4. Abre cada regla y reemplaza cualquier marcador entre corchetes angulares, como <payout_api_key_id>. Las reglas que hacen referencia a un miembro, una API key, una billetera o una entrada de la libreta de direcciones muestran un selector en el constructor, para que puedas elegirlo por nombre en lugar de buscar su ID.
  5. Ajusta los límites a tu propio volumen, luego haz clic en Create y haz que se apruebe la política.

También puedes enviar el mismo JSON a la API de políticas.

Elegir una plantilla

Plantilla

Aplicar a

Aprueba automáticamente

Límites principales

Bóveda de tesorería

Billeteras de custodia y de tesorería

Nada

Solo libreta de direcciones, espera de 24 h, 250,000 USD por día por billetera

Pagos desde hot wallets

Billeteras operativas que usa tu equipo

Pagos pequeños a direcciones de confianza

2,000 USD a direcciones desconocidas, 50,000 USD por día, 60 por hora

Bot de pagos por API

Billeteras desde las que paga una API key automatizada

Pagos de hasta 500 USD desde una misma clave

Solo stablecoins, 2,000 USD por pago, 20,000 USD por día para la clave

Sweep de depósitos

Billeteras de depósito de clientes

Sweeps hacia tu billetera de tesorería

Los fondos solo pueden moverse a la billetera de tesorería

Operaciones DeFi

Billeteras que usan Web3 y dApps

Nada

Solo contratos aprobados, sin tokens desconocidos, sin firmas riesgosas

Respaldo del workspace

Todas las billeteras

Nada

500,000 USD por día en todo el workspace, bloqueo de retiros grandes los fines de semana

Bóveda de tesorería

Úsala para: billeteras que guardan reservas y mueven fondos algunas veces por semana. Nada se aprueba automáticamente, así que cada transferencia sigue pasando por tus aprobadores, y las reglas bloquean las transferencias que nunca se debería pedir a los aprobadores que firmen.

Billeteras: selecciona tus billeteras de custodia y de tesorería.

Efecto

Regla

Por qué

Deny

Bloquea los retiros a cualquier dirección externa que no esté en la libreta de direcciones.

Un error de tipeo o una dirección sustituida en el portapapeles nunca puede aprobarse por equivocación.

Deny

Bloquea los retiros a una dirección agregada a la libreta de direcciones hace menos de 24 horas.

Quien pueda editar la libreta de direcciones no puede agregar una dirección y vaciar fondos hacia ella el mismo día.

Deny

Bloquea un retiro que haría que la billetera supere los 250,000 USD en 24 horas, contando los retiros pendientes.

Limita el daño si los aprobadores se ven comprometidos o engañados.

Deny

Aplica la regla de la libreta de direcciones a las transferencias nativas y ERC-20 enviadas a través de la API Web3.

Cierra el camino que eludiría las reglas de retiro.

Policy JSON

{
  "name": "Treasury vault guard",
  "description": "Hard limits for custody and treasury wallets",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "!withdrawal.destination_is_internal && !withdrawal.is_whitelisted",
      "effect": "DENY",
      "description": "Only send to address book entries or workspace wallets"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "withdrawal.is_whitelisted && withdrawal.address_age_sec < 86400",
      "effect": "DENY",
      "description": "New address book addresses wait 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.projected_outflow_24h > 250000",
      "effect": "DENY",
      "description": "Cap each wallet at 250000 USD per 24 hours"
    },
    {
      "trigger_action": "web3.transfer",
      "condition": "!withdrawal.destination_is_internal && !withdrawal.is_whitelisted",
      "effect": "DENY",
      "description": "Apply the address book rule to Web3 transfers"
    }
  ]
}

Ajústala

  • ¿Necesitas un período de espera más estricto? Cambia 86400 (24 horas) por 172800 (48 horas).
  • Para mantener los fondos de custodia dentro del workspace, de modo que solo puedan moverse a tus propias hot wallets, agrega una regla Deny: wallet.purpose == 'custody' && !withdrawal.destination_is_internal.
  • Para limitar un solo activo en sus propias unidades, agrega withdrawal.asset_symbol == 'BTC' && wallet.asset_projected_outflow_24h > 5.
Pagos desde hot wallets

Úsala para: billeteras operativas desde las que tu equipo paga todos los días. Los pagos pequeños y rutinarios a destinatarios conocidos omiten la aprobación, y todo lo demás se revisa o se bloquea.

Billeteras: selecciona tus hot wallets o billeteras de pago.

Efecto

Regla

Por qué

Deny

Bloquea los retiros de más de 2,000 USD a direcciones que no están en la libreta de direcciones.

Los montos mayores deben ir a una dirección verificada.

Deny

Bloquea un retiro que haría que la billetera supere los 50,000 USD en 24 horas.

Limita el peor caso, incluidos los pagos aprobados automáticamente.

Deny

Bloquea los retiros una vez que la billetera haya enviado 60 en la última hora.

Detecta un script o una sesión comprometida que envía muchos retiros pequeños.

Allow

Omite la aprobación para retiros de hasta 1,000 USD a una dirección que lleve al menos 24 horas en la libreta de direcciones.

Los aprobadores dejan de dedicar tiempo a los pagos rutinarios.

Qué ocurre con un retiro

Retiro

Resultado

500 USD a una entrada de la libreta de direcciones agregada la semana pasada

Aprobado automáticamente por la regla Allow

500 USD a una dirección agregada hace una hora

Pasa a tus aprobadores, porque la dirección es demasiado reciente para la regla Allow

1,500 USD a una dirección desconocida

Pasa a tus aprobadores

5,000 USD a una dirección desconocida

Bloqueado

800 USD a una dirección de confianza cuando la billetera ya envió 49,500 USD hoy

Bloqueado, porque Deny siempre gana sobre Allow

Policy JSON

{
  "name": "Hot wallet payouts",
  "description": "Auto approve routine payouts and cap the worst case",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "!withdrawal.destination_is_internal && !withdrawal.is_whitelisted && withdrawal.value_usd > 2000",
      "effect": "DENY",
      "description": "Unknown recipients are limited to 2000 USD"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.projected_outflow_24h > 50000",
      "effect": "DENY",
      "description": "Cap each wallet at 50000 USD per 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.withdrawal_count_1h > 60",
      "effect": "DENY",
      "description": "Stop bursts of more than 60 withdrawals per hour"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "withdrawal.is_whitelisted && withdrawal.address_age_sec >= 86400 && withdrawal.value_usd <= 1000",
      "effect": "ALLOW",
      "description": "Auto approve small payouts to trusted addresses"
    }
  ]
}

Ajústala

  • Primero sube o baja el límite de aprobación automática (1000). Mantenlo muy por debajo del límite diario por billetera.
  • Para aprobar automáticamente solo a algunos destinatarios, como tus cuentas de exchange, reemplaza withdrawal.is_whitelisted en la regla Allow por Destination · Address book entry es cualquiera de las entradas en las que confías.
  • Si tu equipo trabaja en un horario fijo, agrega la receta de horario laboral de las recetas de reglas más abajo.
Bot de pagos por API

Úsala para: un servicio backend que envía pagos a clientes mediante una API key. Los pagos pequeños salen sin esperar a los aprobadores, los medianos se revisan y la clave tiene un presupuesto diario estricto.

Billeteras: selecciona las billeteras desde las que envía el servicio de pagos.

Efecto

Regla

Por qué

Deny

Bloquea que la clave de pagos envíe cualquier cosa que no sea USDT y USDC.

Una clave filtrada no puede mover tus otros activos.

Deny

Bloquea cualquier pago individual de la clave por más de 2,000 USD.

Los pagos mayores deben ser creados por una persona.

Deny

Bloquea la clave cuando sus pagos superarían los 20,000 USD en 24 horas, en todas las billeteras.

Un presupuesto diario para la clave, use la billetera que use.

Allow

Omite la aprobación para pagos de hasta 500 USD desde la clave.

Los clientes reciben los pagos pequeños de inmediato. Los pagos de 500 a 2,000 USD pasan a tus aprobadores.

Policy JSON

{
  "name": "API payout bot",
  "description": "Budget and auto approval for the payout API key",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && !(withdrawal.asset_symbol in ['USDT', 'USDC'])",
      "effect": "DENY",
      "description": "Payout key sends stablecoins only"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && withdrawal.value_usd > 2000",
      "effect": "DENY",
      "description": "Payout key cannot send more than 2000 USD at once"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && workspace.initiator_projected_outflow_24h > 20000",
      "effect": "DENY",
      "description": "Payout key is capped at 20000 USD per 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "principal.api_key_id in ['<payout_api_key_id>'] && withdrawal.value_usd <= 500",
      "effect": "ALLOW",
      "description": "Auto approve payouts up to 500 USD"
    }
  ]
}

Ajústala

  • Reemplaza <payout_api_key_id> en cada regla, o elige la clave con el selector Initiator · API key. Usa la misma clave en las cuatro reglas.
  • Las direcciones de pago de los clientes normalmente no están en tu libreta de direcciones, por lo que esta plantilla no lo exige. En su lugar, los límites por pago y diarios asumen el riesgo.
  • Agrega más símbolos a la lista, como 'DAI', si pagas en otras stablecoins.
Sweep de depósitos

Úsala para: billeteras de depósito por cliente cuyos fondos solo deben moverse a tu tesorería. El destino es fijo, por lo que este es el flujo más seguro para automatizar por completo.

Billeteras: selecciona tus billeteras de depósito de clientes, o deja la lista vacía para depender de la verificación del propósito de la billetera.

Efecto

Regla

Por qué

Deny

Bloquea los retiros desde billeteras de depósito a cualquier destino que no sea tu billetera de tesorería.

Los depósitos nunca pueden salir directamente del workspace.

Allow

Omite la aprobación para las transferencias desde billeteras de depósito a tu billetera de tesorería.

Los sweeps se ejecutan sin esperar a nadie.

Policy JSON

{
  "name": "Deposit sweep",
  "description": "Deposit wallets sweep to treasury only",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.purpose == 'user' && !(withdrawal.destination_wallet_id in ['<treasury_wallet_id>'])",
      "effect": "DENY",
      "description": "Deposit wallets can only send to the treasury"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "wallet.purpose == 'user' && withdrawal.destination_wallet_id in ['<treasury_wallet_id>']",
      "effect": "ALLOW",
      "description": "Auto approve sweeps to the treasury"
    }
  ]
}

Ajústala

  • Reemplaza <treasury_wallet_id>, o elígela con el selector Destination · Workspace wallet.
  • Para permitir más de un destino de sweep, agrega sus IDs a ambas listas.
Operaciones DeFi

Úsala para: billeteras que interactúan con dApps a través de la API Web3. Cada llamada sigue pasando por tus aprobadores, y las reglas detienen llamadas y firmas que los aprobadores a menudo no pueden evaluar a partir de los datos sin procesar.

Billeteras: selecciona las billeteras que conectas a dApps.

Efecto

Regla

Por qué

Deny

Bloquea las llamadas a cualquier contrato que no esté en tu lista.

Una dApp de phishing no puede presentar a los aprobadores una llamada a un contrato desconocido.

Deny

Bloquea las aprobaciones de tokens (approve, selector 0x095ea7b3) en cualquier contrato que no esté en tu lista de tokens.

Las allowances son una forma habitual de vaciar una billetera más adelante.

Deny

Bloquea las transferencias de tokens que no están en el catálogo de activos de Fystack.

Los tokens desconocidos no tienen valor en USD, por lo que no se les pueden aplicar límites de monto.

Deny

Bloquea la firma de un permit de token con un monto ilimitado.

Un permit firmado permite al spender mover tokens más adelante, sin ninguna otra transacción de tu parte.

Deny

Bloquea la firma de un permit para cualquier spender que no esté en tu lista.

El phishing de permits suele pedirte que firmes a favor de un spender atacante.

Deny

Bloquea las solicitudes eth_sign.

eth_sign puede firmar una transacción oculta, y las dApps modernas no lo necesitan.

Policy JSON

{
  "name": "DeFi operations guard",
  "description": "Approved contracts and safe signatures for dApp wallets",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "web3.contract_call",
      "condition": "!(resource.contract_address in ['<router_address>', '<vault_address>', '<token_address>'])",
      "effect": "DENY",
      "description": "Only call approved contracts"
    },
    {
      "trigger_action": "web3.contract_call",
      "condition": "resource.method_selector == '0x095ea7b3' && !(resource.contract_address in ['<token_address>'])",
      "effect": "DENY",
      "description": "Only approve allowances on known tokens"
    },
    {
      "trigger_action": "web3.transfer",
      "condition": "!withdrawal.asset_is_known",
      "effect": "DENY",
      "description": "Block transfers of unknown tokens"
    },
    {
      "trigger_action": "web3.sign_message",
      "condition": "resource.is_permit && resource.permit_amount_is_unlimited",
      "effect": "DENY",
      "description": "Block unlimited token permits"
    },
    {
      "trigger_action": "web3.sign_message",
      "condition": "resource.is_permit && !(resource.permit_spender in ['<trusted_spender_address>'])",
      "effect": "DENY",
      "description": "Block permits to untrusted spenders"
    },
    {
      "trigger_action": "web3.sign_message",
      "condition": "resource.method == 'eth_sign'",
      "effect": "DENY",
      "description": "Block raw eth_sign"
    }
  ]
}

Ajústala

  • Las direcciones de contratos y tokens deben estar en minúsculas.
  • Agrega todos los contratos que usa tu estrategia, como routers, vaults y contratos de tokens, antes de activar la política, o se bloquearán llamadas legítimas.
  • Las reglas de firma de mensajes son solo Deny. Una firma que supera estas reglas sigue pasando por tus aprobadores.
Respaldo del workspace

Úsala para: una red de seguridad sobre todas las billeteras. Detecta un vaciado repartido entre muchas billeteras, claves o miembros, que un límite por billetera no detectaría.

Billeteras: deja la lista vacía para que la política cubra todas las billeteras.

Efecto

Regla

Por qué

Deny

Bloquea un retiro que haría que todo el workspace supere los 500,000 USD en 24 horas.

El techo absoluto, independientemente de lo que permitan otras políticas.

Deny

Bloquea los retiros una vez que el workspace haya enviado 300 en la última hora.

Detecta abusos automatizados repartidos entre billeteras.

Deny

Bloquea los retiros de más de 25,000 USD los sábados y domingos (UTC).

Las transferencias grandes esperan a que tu equipo esté disponible para supervisarlas.

Policy JSON

{
  "name": "Workspace backstop",
  "description": "Workspace wide ceilings for all wallets",
  "approval_group_id": "",
  "wallet_ids": [],
  "rules": [
    {
      "trigger_action": "withdrawal.create",
      "condition": "workspace.projected_outflow_24h > 500000",
      "effect": "DENY",
      "description": "Cap the workspace at 500000 USD per 24 hours"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "workspace.withdrawal_count_1h > 300",
      "effect": "DENY",
      "description": "Stop bursts of more than 300 withdrawals per hour"
    },
    {
      "trigger_action": "withdrawal.create",
      "condition": "context.day_of_week in ['Saturday', 'Sunday'] && withdrawal.value_usd > 25000",
      "effect": "DENY",
      "description": "No withdrawals over 25000 USD on weekends"
    }
  ]
}

Ajústala

  • Los días y las horas están en UTC.
  • Fija el límite del workspace por encima de la suma de tus días normales de mayor actividad en todas las billeteras, para que el respaldo solo se active ante anomalías reales.

Recetas de reglas

Reglas individuales que puedes agregar a cualquier política. Pega la condición en la pestaña Expression de una regla, o constrúyela en Fields.

Objetivo

Disparador

Efecto

Condición

Bloquear una lista de direcciones, como direcciones sancionadas o fraudulentas

Withdrawal

Deny

withdrawal.address_book_id in ['<blocklist_entry_id>']. Guarda las direcciones en una sola entrada de la libreta de direcciones, de modo que al actualizar la entrada se actualice la regla.

Solo owners y admins pueden enviar más de 50,000 USD

Withdrawal

Deny

!(principal.role in ['owner', 'admin']) && withdrawal.value_usd > 50000

Permitir retiros grandes solo en horario laboral (09:00 a 18:00 UTC)

Withdrawal

Deny

withdrawal.value_usd > 25000 && (context.hour < 9 || context.hour >= 18). Usa paréntesis, así que escríbela en la pestaña Expression.

Limitar una billetera a 5 BTC por día

Withdrawal

Deny

withdrawal.asset_symbol == 'BTC' && wallet.asset_projected_outflow_24h > 5

Limitar una red a 100,000 USD por día

Withdrawal

Deny

withdrawal.network_code == '<network_code>' && workspace.network_projected_outflow_24h > 100000

Aprobar automáticamente las transferencias entre tus propias billeteras

Withdrawal

Allow

withdrawal.destination_is_internal && withdrawal.value_usd <= 10000

Aprobar automáticamente las recargas a cuentas de exchange de confianza

Withdrawal

Allow

withdrawal.address_book_id in ['<exchange_entry_id>'] && withdrawal.address_age_sec >= 172800 && withdrawal.value_usd <= 25000

Evitar que se acumule trabajo en la cola de aprobación

Withdrawal

Deny

wallet.pending_outflow > 100000. Bloquea nuevas solicitudes mientras ya hay 100,000 USD en espera.

Bloquear llamadas a contratos inusualmente costosas

Contract Call

Deny

resource.gas_limit > 1000000

Desplegar una política

Las reglas Allow cambian quién tiene que revisar una transacción, así que introdúcelas al final.

  1. Semana 1, solo reglas Deny: crea la política solo con sus reglas Deny. Todavía no se aprueba nada automáticamente, y las reglas solo bloquean lo que nunca debería ocurrir.
  2. Revisa la cola de aprobación: busca los retiros que tus aprobadores aprueban sin cambios cada vez, como los mismos destinatarios, activos y rango de montos.
  3. Agrega una regla Allow acotada: escribe una regla Allow exactamente para ese tráfico, con un límite menor del que crees que necesitarás.
  4. Sube los límites poco a poco: amplía la regla Allow solo después de que haya funcionado sin problemas durante un tiempo. Cada cambio pasa por aprobación y aparece en el historial de cambios de la política.

Escribir condiciones de reglas

Una condición es una expresión que se evalúa como verdadera o falsa. Cuando es verdadera, se aplica el efecto de la regla. Combina campos con and, or y not, y compara valores con operadores como >, >=, == y !=.

Constructor de condiciones

Campos de condición

Los campos disponibles en el constructor dependen del disparador de la regla. Usa las etiquetas siguientes para decidir qué campo corresponde a una regla.

Disponibles en todos los disparadores

Campo

Úsalo para

Initiator type

Si la acción provino de una sesión web (user) o de una API key (api_key).

Member

Reglas para miembros específicos del workspace. Elígelos de la lista de miembros.

API key

Reglas para API keys específicas, por ejemplo una clave de pagos automatizados. Las sesiones web no tienen API key, así que combina una verificación is none of con Initiator type.

User role

Reglas basadas en el rol en el workspace: owner, admin, signer, proposer o viewer.

Hour

Controles por hora del día usando la hora UTC de 0 a 23.

Day of week

Reglas para horario laboral, fines de semana o solo días hábiles.

Source wallet

Reglas para billeteras específicas dentro de una misma política.

Source wallet purpose

Reglas según el propósito de la billetera: general, custody, payment, user, one-time use, gas tank o deployment.

Source wallet type

Controles diferentes para billeteras MPC y estándar.

User email (legacy)

Se sigue evaluando en las reglas existentes. Las reglas nuevas usan Member, porque un correo puede cambiar.

Campos de retiro

Campo

Úsalo para

Amount

Límites expresados en el activo, como más de 10 ETH o 1 BTC.

Value USD

Límites expresados en dólares para todos los activos.

Asset symbol

Reglas específicas por activo para símbolos como USDT, ETH, BTC o SOL.

Native asset

Controles diferentes para los activos nativos de la red frente a los tokens.

Destination address

Bloquear o permitir direcciones de destinatarios específicas.

Network code

Límites específicos por red, como reglas más estrictas en una cadena.

In address book

Controles para destinatarios que están o no están en alguna entrada de la libreta de direcciones.

Address book entry

Controles para entradas específicas de la libreta de direcciones. Una entrada cubre todas sus direcciones, así que funciona como una lista con nombre.

Address age

Reglas de período de espera: segundos transcurridos desde que la dirección de destino se agregó a su entrada de la libreta de direcciones.

Internal wallet

Controles para transferencias entre billeteras del mismo workspace.

Workspace wallet

Controles para transferencias a billeteras específicas del mismo workspace.

Campos de actividad de retiros

Campo

Úsalo para

Wallet outflow

Salida en USD por billetera durante la última 1, 6 o 24 horas.

Wallet withdrawal count

Controles de ráfagas para muchos retiros desde una billetera en la última hora.

Workspace outflow

Salida en USD de todo el workspace durante la última 1, 6 o 24 horas.

Workspace withdrawal count

Volumen de retiros de todo el workspace en la última hora.

Network outflow

Salida en USD del workspace en la red seleccionada durante la última 1, 6 o 24 horas.

Network withdrawal count

Volumen de retiros del workspace en la red seleccionada en la última hora.

Campos de actividad pendiente y proyectada

Campo

Úsalo para

Pending outflow

Valor en USD de los retiros que todavía no se ejecutaron (a la espera de aprobación, en cola o financiando gas), sin importar su antigüedad. Disponible por billetera, workspace y red.

Projected 24h outflow

Salida realizada en las últimas 24 horas, más la salida pendiente, más el retiro que se está verificando. Úsalo para límites: projected 24h outflow over $100,000 significa que este retiro superaría el límite. Disponible por billetera, workspace y red.

Projected 24h asset outflow

La misma proyección para la billetera de origen, en unidades del activo retirado, por ejemplo como máximo 5 BTC por día.

Initiator projected 24h outflow

La misma proyección para los retiros creados por el mismo miembro o la misma API key, en todo el workspace.

Campos de llamadas a contratos

Campo

Úsalo para

Network code

Reglas de llamadas a contratos específicas por cadena.

Contract address

Bloquear contratos desconocidos o permitir contratos conocidos.

Method selector

Verificaciones de funciones a bajo nivel, como el selector de transfer de ERC-20 0xa9059cbb.

Method name

Verificaciones legibles del método cuando hay metadatos disponibles.

Value wei

Valor nativo enviado con una llamada a contrato.

Gas limit

Bloquear llamadas inusualmente costosas o riesgosas.

Decoded arguments

Reglas a nivel de argumento cuando Fystack puede decodificar la llamada. Las transferencias ERC-20 exponen el destinatario y el valor del token.

Campos de transferencias Web3

Las reglas de Web3 Transfer usan los campos de retiro más los campos siguientes. Los campos de actividad no están disponibles, porque estas transferencias no son retiros.

Campo

Úsalo para

Asset in catalog

Falso cuando el contrato del token no está en el catálogo de activos. En ese caso, el monto, el valor en USD y el símbolo quedan vacíos, así que deniega explícitamente los tokens desconocidos si lo necesitas.

Token contract

Reglas para un contrato de token específico. Vacío para las monedas nativas.

Campos de firma de mensajes

Campo

Úsalo para

Signing method

personal_sign, eth_sign o eth_signTypedData_v4.

Typed data type, domain name, verifying contract

Reglas para mensajes de typed data específicos, como las órdenes de una dApp conocida.

Is a token permit

Verdadero para los mensajes EIP-2612, DAI y Permit2, que permiten al spender mover tokens más adelante sin otra firma.

Permit spender

Deniega los permits a spenders en los que no confías.

Permit tokens

Los contratos de tokens que cubre el permit. Úsalo en el editor de expresiones, por ejemplo '0x…' in resource.permit_tokens.

Permit unlimited amount

Verdadero para allowances de valor máximo (2159 o más, o un permit de DAI con allowed activado).

Permit deadline

Tiempo Unix en que vence el permit o su firma. 0 cuando el mensaje no tiene ninguno.

Estados de las políticas

Estado

Significado

Pending

La política, o un cambio en ella, está a la espera de la aprobación de su grupo de aprobación. Todavía no se aplica.

Active

La política está aprobada y activa. Sus reglas se evalúan en cada acción protegida sobre las billeteras a las que apunta.

Inactive

La política está desactivada y no se evalúa.

Rejected

Un aprobador rechazó un cambio pendiente y este no tuvo efecto.

Historial de cambios

Cada cambio en una política queda registrado. El History de la política muestra cada revisión con quién la propuso, qué cambió (campo por campo) y si se aprobó o rechazó. Esto te da un registro de auditoría completo de cómo evolucionaron tus salvaguardas con el tiempo.

Historial de cambios de la política

Buenas prácticas

  • Empieza con reglas Deny para tus escenarios de mayor riesgo (transferencias grandes, destinos desconocidos) antes de agregar reglas Allow de conveniencia
  • Recuerda que Deny siempre gana: úsalo para fijar límites estrictos que ninguna regla Allow pueda anular
  • Limita las políticas a billeteras específicas cuando distintas billeteras tengan perfiles de riesgo diferentes, en lugar de aplicar una política amplia en todas partes
  • Usa las reglas Allow con moderación: omiten tu cola de aprobación, así que resérvalas para patrones de bajo valor y claramente confiables
  • Cuando una regla Allow confíe en entradas de la libreta de direcciones, conserva la condición de antigüedad de la dirección que agrega el constructor. Cualquiera que pueda editar la libreta de direcciones puede agregar una dirección a una entrada de confianza, y la verificación de antigüedad hace que una dirección nueva espere antes de aprobarse automáticamente
  • Valida cada condición antes de enviarla y revisa el cambio en el paso de aprobación para confirmar que se comporta como esperas
  • Trata los cambios de políticas con el mismo cuidado que los retiros: la aprobación existe para que ninguna persona pueda debilitar tus controles sin que se note