> For the complete documentation index, see [llms.txt](https://docs.zestprotocol.com/start/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zestprotocol.com/start/stacks-market-smart-contracts/v2-contracts/dao-contracts/dao-traits.md).

# DAO Traits

{% hint style="info" %}
Purpose: Interface definitions for DAO system contracts. Defines traits for upgradable contracts and proposal scripts.
{% endhint %}

## Traits Defined

### upgradable

Interface for upgradable contracts. Used by dao-executor.

Functions:

{% code title="upgradable trait" %}

```
get-impl : () -> (response (optional principal) uint)
  - Get current implementation

set-impl : (principal) -> (response bool uint)
  - Set new implementation

init : (principal) -> (response bool uint)
  - Initialize with implementation
```

{% endcode %}

***

### proposal-script

Interface for DAO proposal contracts. All proposals must implement this trait.

Functions:

{% code title="proposal-script trait" %}

```
execute : () -> (response bool uint)
  - Execute proposal logic
```

{% endcode %}

## Usage

Contracts implementing these traits can interact with the DAO system:

* upgradable: Implemented by dao-executor for implementation management
* proposal-script: Implemented by all proposal contracts for execution by dao-executor
