> 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/pdas/instruction.md).

# Instruction

Instruction PDAs reference an on-chain account that stores information about instructions that are attached to a Transaction.

As with transaction PDAs, instruction PDAs also expect a numeric index relating to the number of instructions attached to a transaction. Every time an instruction is attached to a transaction, the `instructionIndex` will be bumped up by one. This provides a simple way to collect all instructions associated with a specific transaction. Deriving an instruction PDA requires a transaction PDA and the `transactionIndex`.&#x20;

```
await anchor.web3.PublicKey.findProgramAddress([
    anchor.utils.bytes.utf8.encode("squad"),
    transaction.toBuffer(),
    instructionIndex.toBuffer("le", 1),  // note instruction index is an u8 (1 byte)
    anchor.utils.bytes.utf8.encode("instruction")
], programId);
```

Be sure to provide the `instructionIndex` as a single byte little-endian buffer.&#x20;

The instruction PDA derivation format is as follows:

```
["squad", transaction, instructionIndex, "instruction"]
```
