Program Derived Addresses (PDAs)

Los Program Derived Addresses (PDAs) son direcciones de cuenta de 32 bytes que se derivan de forma determinística a partir de un ID de programa y un conjunto de seeds. Están garantizadas para no encontrarse en la curva Ed25519, lo que significa que no existe clave privada para ellas. Solo el programa cuyo ID se utilizó en la derivación puede "firmar" por un PDA, y lo hace a través de invoke_signed durante invocaciones entre programas (CPIs).

Program Derived AddressProgram Derived Address

Datos clave

  • Determinístico: Los mismos seeds e ID de programa siempre producen la misma dirección.
  • Fuera de la curva: La dirección derivada se verifica para no ser una clave pública Ed25519 válida. Si el hash resulta estar en la curva, la derivación falla y se prueba un bump seed diferente.
  • Sin clave privada: Debido a que la dirección está fuera de la curva, nadie puede producir una firma criptográfica para ella. El programa "firma" mediante el mecanismo invoke_signed del runtime.

Cuándo usar PDAs

  • Direccionamiento determinístico: Deriva la misma cuenta a partir de los mismos seeds cada vez.
  • Firma del programa: Solo el programa propietario puede firmar mediante invoke_signed, permitiendo que los programas actúen como autoridades autónomas.
  • Estado por usuario: Deriva cuentas por usuario a partir de seeds de pubkey de usuario (p. ej., ["user", user_pubkey]).
  • Sin gestión de keypair: No hay clave privada que almacenar o perder. La dirección se deriva puramente a partir de seeds.

Límites

LímiteValorFuente
Máximo de seeds16MAX_SEEDS
Longitud máxima de seed32 bytes máximo por seedMAX_SEED_LEN
Rango de bump0-255 (1 byte)Añadido como el elemento seed final
Coste de create_program_address1.500 CUscreate_program_address_units
Coste en el peor caso de find_program_address1.500 entrada + 1.500 x iteraciones1.500 en la entrada + 1.500 por bump fallido
Máximo de firmantes PDA por CPI16MAX_SIGNERS

Is this page helpful?

Tabla de Contenidos

Editar Página

Gestionado por

© 2026 Fundación Solana.
Todos los derechos reservados.
Conéctate