> For the complete documentation index, see [llms.txt](https://max-daunarovich.gitbook.io/flow-network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://max-daunarovich.gitbook.io/flow-network/introduction/events/transactions/execute-phase.md).

# Execute Phase

The `execute` phase does exactly what it says, it executes the main logic of the transaction. This phase is optional, but it is a best practice to add your main transaction logic in the section, so it is explicit.

```
execute {
    // Invalid: Cannot access the authorized account object,
    // as `account1` is not in scope
    let resource <- account1.load<@Resource>(from: /storage/resource)
    destroy resource

    // Valid: Can access any account's public Account object
    let publicAccount = getAccount(0x03)
}
```

You **may not** access private `AuthAccount` objects in the `execute` phase, but you may get an account's `PublicAccount` object, which allows reading and calling methods on objects that an account has published in the public domain of its account (resources, contract methods, etc.).
