# Prácticas recomendadas para PDAs en Anchor
Uso determinista y validado de PDAs entre el programa y los clientes.
## Cómo usar esta lista
- Aplica a cada PDA nuevo introducido en un programa.
- Comparte constantes de semillas entre Rust y TypeScript.
- Prueba la derivación en pruebas de Anchor y en el cliente de kit.
## A - Derivación
- [ ] **Documenta las semillas en la documentación IDL o en un módulo de constantes compartidas** que los clientes deben igualar byte por byte.
- [ ] **Almacena el bump canónico al inicializar** para referencia en instrucciones posteriores.
- [ ] **Usa restricciones de Cuenta tipadas** en lugar de `UncheckedAccount` para PDAs.
- [ ] **Mantén las semillas mínimas**; los arrays de semillas largos consumen CU.
## B - Firma y CPIs
- [ ] **Usa `ctx.bumps` o el bump almacenado en los firmantes de CPI**; nunca adivines el bump.
- [ ] **Divide las PDAs de tesorería por mercado** para limitar el radio de explosión.
- [ ] **Verifica que la autoridad de la mint/ATA coincida con la PDA** en cada CPI de token.
## Preguntas frecuentes
<details>
<summary>¿Qué versión de Anchor se asume?</summary>
0.32.1 en toda esta sección.
</details>
<details>
<summary>¿Puede una PDA ser un Signer en la estructura de cuentas?</summary>
No. Usa restricciones de semillas y firma de CPI.
</details>
<details>
<summary>¿Dónde se almacena el bump?</summary>
En el campo de tu estructura de cuenta, establecido en la inicialización.
</details>
<details>
<summary>¿Cómo derivan las PDAs los clientes?</summary>
Usa `@solana/kit` 7.0.0 con bytes de semilla coincidentes.
</details>
<details>
<summary>¿Qué ID de programa se usa para las PDAs?</summary>
La dirección `declare_id` de tu programa Anchor.
</details>
<details>
<summary>¿Incluyen las semillas el bump?</summary>
No en el array de semillas; el bump es un parámetro separado para `find_program_address`.
</details>
<details>
<summary>¿Cómo depurar fallos de PDA?</summary>
Compara las claves registradas; verifica las semillas y el ID del programa en el lado del cliente.
</details>
<details>
<summary>¿Las PDAs están exentas de alquiler?</summary>
Sí, cuando contienen datos; fináncialas con el pagador en la inicialización.
</details>
<details>
<summary>¿Puede una PDA firmar múltiples CPIs en una instrucción?</summary>
Sí, con las mismas semillas de firmante para cada CPI.
</details>
<details>
<summary>¿Qué leer a continuación?</summary>
Consulta los enlaces relacionados para temas más profundos sobre prácticas recomendadas de PDAs.
</details>
## Relacionados
- [PDAs en Anchor](./pdas-in-anchor.md) - introducción
- [Errores comunes de PDA](./common-pda-mistakes.md) - lista de auditoría
- [Firma con PDAs](./signing-with-pdas.md) - firma de CPI
> **Versiones de la pila:** Esta página fue escrita para **Agave 4.1.1**, **Solana CLI 3.0.10**, **Anchor 0.32.1**, **anchor-lang 0.32.1**, **Rust 1.91.1**, **@solana/kit 7.0.0**, **Surfpool 0.12.0** y **LiteSVM 0.6.x**.
//