> For the complete documentation index, see [llms.txt](https://docs.squads.so/squads-v3-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.squads.so/squads-v3-docs/development/authorities.md).

# Authorities

Authority PDAs are responsible for signing the underlying CPIs executed by the multisig. Generally they should be seeded by a u32 starting from the default of 1 (the `authorityIndex`). The `authorityIndex` of a Transaction account will be used to generate the seeds necessary to perform the CPI. Most often you can simply use the `authorityIndex` of 1. For example, the Squads client uses an `authorityIndex` of 1 for all default PDAs (the vault, program upgrade authorities, etc).

Transactions must specify this `authorityIndex` upon creation, and all instructions attached to the Transaction should use the same authority PDA for any account that is designated as a signer.

*The `authorityIndex` of 0 is reserved for internal multisig instructions, and should generally be avoided.*&#x20;

The Authority PDAs are derived as such:

```
await anchor.web3.PublicKey.findProgramAddress([
    anchor.utils.bytes.utf8.encode("squad"),
    multisig.toBuffer(),
    authorityIndex.toBuffer("le", 4),  // note authority index is an u32 (4 byte)
    anchor.utils.bytes.utf8.encode("authority")
], programId);
```

Note that the authorityIndex should be supplied to the function as a 4 byte little-endian buffer.

The format of deriving an authority is:

`["squad", multisig, authorityIndex, "authority"]`
