# GOVERNANCE

#### Welcome to first actual, autonomous, self hosted DAO Service for Community Governance.

{% hint style="info" %}
Community Governance

PhunkBot enables decentralized decision-making, allowing Phunk holders to open proposals, vote and steer changes that benefit Phunks community long term. \
Besides social consensus, Phunk community governs [Phunks treasury](https://etherscan.io/address/0x61f874551c69f0E40c9f55219107B408C989aDEc) and allocation of its assets. All past and future proposals are managed in Phunks [OG discord server](https://discord.gg/6DadnVRwVY) and can be tracked in link below.&#x20;
{% endhint %}

{% embed url="<https://phunk.cc/>" %}

***

## <mark style="color:yellow;">`Challenge`</mark>

Achieving consensus in Web3 is a big challenge, decentralized nature of Communities around Crypto Projects brought up questions like how can decentralized Community come to consensus in decision making without being reliant on old centralised Solutions or single point of failure. \
\
Smart people came out with Solutions by offering Services to Communities like for example CollabLand (token Gated discord roles and management), GitCoin (bind Social accounts to your Web3 identity), SnapShot (transparent and certificated Voting system), EasyPoll (anonymous voting bot for Discord), TweetShift (Discord Sales Bot). \
\
While all those Services are of great benefit for whole Crypto Community, they come with the Price. Making it really complicated for onboarding and thus limiting participation, there is also risk involved with how user data is being processed/stored. Web3 is all about own you own Data, Simplicity, not to rely on third party Services and be self sufficient as individual and Community. \
How things are set currently is not only not optimal but also undermines basic principles of Web3: *Decentralised, Trustless and Transparent.*&#x20;

{% hint style="info" %}
Web3 introduces four core principles that promise to reshape the digital landscape: ownership, commerce, identity, and governance.
{% endhint %}

## <mark style="color:yellow;">`Solution`</mark>

With PhunkBot module called [`DAOService`](https://phunks.gitbook.io/knowledge-base/built-by-phunks/for-the-pham/phunkbot/features) enabled, communities don't need to be dependent on third party Services for Governance anymore. In true Web3 fashion, PhunkBot makes third party Services like CollabLand, GitCoin, SnapShot, EasyPoll and TweetShift obsolete. \
\
PhunkBot is in house, Self-Sufficient Service hosted by the Community for the Community, safe and as simple to use as running Discord [application commands](#daoservice-commands-explained) or pressing an emoji to vote.\
\
**Solution we found is, it all revolves around token ownership and identity in Web3. By binding those two Assets we can actually solve Governance for decentralized community.**\
**PhunkBot elegantly eliminates possible sybil attacks with simple and configurable `minOwnedCount`&`minOwnedTime` safety checks and by binding discord account and/or social account with Web3 wallet(s) holding underlying Assets or even Traits of underlying Assets.** \
**This enables individual to safely participate in community Governance and it guarantees provably fair process to achieve consensus.**&#x20;

{% code title="app.module.ts" %}

```typescript
import { DAOService } from './extensions/dao/dao.extension.service';
```

{% endcode %}

***

## <mark style="color:yellow;">`Sybil Attack`</mark>

<details>

<summary>ELEGANCE ACHIEVED</summary>

Hardly any Community in Crypto is immune to [Sybil Attack](https://en.wikipedia.org/wiki/Sybil_attack) especially where individuals can exploit Governance system to their monetary advantage.

We at Phunks Community, while exploring best ways to Achieve consensus for Proposals came to conclusion that [current system](#challenge) if flawed and undermines basic Principles of Web3.&#x20;

We found a new, better way to Govern decentralized Community by utilising already available ideas and tools into Simple yet powerful way.

We enabled PhunkBot to serve as autonomous, trustless Bot that elegantly eliminates Sybil in dynamic and configurable setup. &#x20;

{% code title="config.ts" %}

```typescript
      minOwnedCount: 1,
      minOwnedTime: 15, // in days
```

{% endcode %}

Example Above is set off Parameters that writes a Simple Rule that if user has minimum of \
1 underlying Asset and owns that Asset for minimum of 15 days is allowed to Vote. Only works if that user already [bounded](#bounded) his Discord and/or Twitter account to his Web3 wallet(s).&#x20;

Example bellow is another (optional) set of rules where only [permitted](#createpoll) Discord Roles that PhunkBot granted to a specific underlying Assets/Traits are allowed to Vote.&#x20;

{% code title="dao.extention.service.ts" %}

```typescript
if (poll.discord_role_id && !member.roles.cache.has(poll.discord_role_id)) {
```

{% endcode %}

<mark style="background-color:orange;">Also here, First rule</mark> <mark style="background-color:orange;"></mark><mark style="background-color:orange;">**minOwnedCount & minOwnedTime**</mark> <mark style="background-color:orange;"></mark><mark style="background-color:orange;">always applies.</mark> \ <mark style="background-color:red;">Additional Rules like</mark> <mark style="background-color:red;"></mark><mark style="background-color:red;">**minDiscordActivity & minTwitterActivity**</mark> <mark style="background-color:red;"></mark><mark style="background-color:red;">can be added in the future.</mark>

</details>

***

## <mark style="color:yellow;">`Voting Process Explained`</mark>

<details>

<summary>HARDCODED RULES</summary>

#### For users to participate in Voting Process, few simple conditions needs to be met.

* User holds underlying Asset, for example Phunk NFT.
* User holds underlying Asset for minimum [threshold](#sybil-attack) time set.
* User has Discord and optional Twitter Account.
* User [bounded](#daoservice-commands-explained) his Discord and optional Twitter Account.
* For Vote to be considered Success, min Vote count [threshold](#min-vote-count) needs to be reached.

<mark style="background-color:red;">1 bounded Identity even with multiple Wallets and Phunks NFTs equals 1 Vote.</mark>

<mark style="background-color:green;">That's it! Player one ready, go!</mark>&#x20;

</details>

<details>

<summary>START NEW POLL</summary>

This commands is reserved for Discord Admins only and is explained here:

-> [#createpoll](#createpoll "mention")

</details>

<details>

<summary>CAST YOUR VOTE</summary>

By default users have two options to Vote 👍 (Yes) and 👎 (No).

Note: your Vote is anonymous and is not visible to other users, however Admins are allowed to privately [audit](#pollresults) all the Voters/Votes for [security](#sybil-attack) purposes and if necessary to provide proof in case of a dispute.

Not&#x65;**:** once Voted, Vote can not be redacted! You can however change your Vote from yes to no or other way around during whole voting period without limitations.

#### If Vote was successfully recorded, user gets confirmation message from PhunkBot

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2Fi4Jo9A3Et8yVSks4S2MI%2Fimage.png?alt=media\&token=16ce2c0b-c871-436a-b59f-e2939bffca4b)

#### If user is not allowed to Vote, user gets notification message from PhunkBot

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FdpxZ3kpNFG2doLNSH1EG%2Fimage.png?alt=media\&token=88375bb3-2f44-4216-a174-e8a811ff0a2d)

<mark style="background-color:red;">To receive PhunkBot notifications you need to have your Discord DMs open.</mark>\ <mark style="background-color:orange;">To see all Active Polls to Vote, simply run /listpolls</mark> [<mark style="background-color:orange;">command</mark>](#daoservice-commands-explained) <mark style="background-color:orange;">on Discord or go to:</mark>\
<https://phunk.cc/polls/>

#### DEMO

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FZtZAtQqrZOHsImgqbmxO%2F2023-12-05_10-06-43%20(1).gif?alt=media&#x26;token=237d7a81-4e34-4561-830a-5d1ae5df1ce9" alt="" data-size="original">

Vote demo for custom Discord role powered by PhunkBot.

</details>

<details>

<summary>MIN VOTE COUNT</summary>

Optional Admins can set `minimumVotesRequired` for Poll to be considered Success or if minimum threshold was not Reached is marked as Failed, therefore consensus not reached.&#x20;

{% code title="dao.extention.service.ts" %}

```typescript
    if (minimumVotesRequired) {
      const reached = voteCount >= minimumVotesRequired ? '✅' : '❌'
      msg += `\nMinimum votes required: **${minimumVotesRequired}** (Reached: ${reached})`
    }
```

{% endcode %}

#### Input

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FkbWdfr6yJ9QZBeGRhblI%2FBildschirmfoto%202023-12-03%20um%2010.15.49.png?alt=media&#x26;token=0e3bb141-89c5-4bd2-a353-356d849da45e" alt="" data-size="original">

#### Output

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FpHG2BuM8PAd2jYO960mv%2FBildschirmfoto%202023-12-03%20um%2010.15.21.png?alt=media&#x26;token=9713db3a-bf46-4ff2-82ac-494508d67c7d" alt="" data-size="original">

<mark style="background-color:orange;">Note: If min threshold of Votes is set too for example 30 and reached; Min votes required:</mark> <mark style="background-color:orange;"></mark><mark style="background-color:orange;">**30**</mark> <mark style="background-color:orange;"></mark><mark style="background-color:orange;">(Reached: ❌) will automatically change to Min votes required:</mark> <mark style="background-color:orange;"></mark><mark style="background-color:orange;">**30**</mark> <mark style="background-color:orange;"></mark><mark style="background-color:orange;">(Reached: ✅).</mark>

</details>

<details>

<summary>RESULTS</summary>

To avoid user being influenced by Vote weight going in one direction and to keep Voting process as fair as possible, it is not possible to see current results nor count of yes or no Votes/Voters. Only after [set time](#createpoll) for Poll expired, final results are automatically Revealed.

#### Output

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FkK0E1Skd2oQ7PyMBk0cG%2FBildschirmfoto%202023-12-04%20um%2007.09.22.png?alt=media\&token=d15b1c32-508a-41c6-969a-9cbdc2c9059a)

</details>

***

## <mark style="color:yellow;">`Discord Roles Explained`</mark>

<details>

<summary>ROLES</summary>

By binding Discord Account with your Web3 wallet(s), PhunkBot automatically Grants you Discord roles depending on underlying Asset and parameters set under `src/config.ts`.&#x20;

This can be for example one Role for holding underlying Asset or Multiple Roles for holding Specific Traits of underlying Collection.

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FfVbnstHu3ZCgHXvKuRx8%2FBildschirmfoto%202023-11-30%20um%2022.49.38.png?alt=media&#x26;token=36d5d9d6-709a-4815-87d1-6698d610b7f2" alt="" data-size="original">

#### Code Example of Role granted to Stringy Hair Trait Holders

{% code title="config.ts" %}

```typescript
    {
      guildId: '873564453227094078',
      roleId: '1174817463515500574',
      specificTrait: {
        traitType: 'Hair',
        traitValue: 'Stringy Hair'
      }
    },
```

{% endcode %}

#### Example of PhunkBot log when granting roles

{% code title="dao.extention.service.ts" %}

```typescript
[start:prod] [2023-11-30 22:58:57] [dao.extension.service] [info]: grantRoles()
[start:prod] --> granting PHUNK to avolalim.eth
[start:prod] --> granting PHUNK to MACHO 💥
[start:prod] --> granting PHUNK to .meuleman
[start:prod] --> granting PHUNK to dovebot <afk>
[start:prod] --> granting PHUNK to shalfean
[start:prod] --> granting PHUNK to qukuaiboyou
[start:prod] --> granting PHUNK to jacopoman
[start:prod] --> granting PHUNK to 9999999333
[start:prod] --> granting PHUNK to cadillion
[start:prod] --> granting PHUNK to doli0li
[start:prod] --> granting PHUNK to web_gnar
```

{% endcode %}

<mark style="background-color:orange;">grantRoles() is handled by PhunkBot automatically and if user at anytime or for any reason removes underlying Asset from his bounded Web3 wallet, Role(s) get redacted.</mark> \ <mark style="background-color:red;">**Grace period is set to 24h!**</mark>

</details>

<details>

<summary>MANAGE ROLES</summary>

</details>

***

## <mark style="color:yellow;">`DAOService Commands Explained`</mark>

### <mark style="color:green;">`User Commands`</mark>

<details>

<summary><mark style="color:blue;">/</mark>bindweb3</summary>

User command to bind Discord Account with Web3 wallet(s).

#### User Command

```typescript
/bindweb3
```

#### Output

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FyqA4wpGvxqboWwKts638%2FBildschirmfoto%202023-12-02%20um%2000.35.43.png?alt=media&#x26;token=118de1de-b062-4d34-a153-d2b4ed5fa811" alt="" data-size="original">

</details>

<details>

<summary><mark style="color:blue;">/</mark>bindtwitter</summary>

User command to bind Twitter Account with Web3 wallet(s).

#### User Command

```typescript
/bindtwitter
```

#### Output

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FtcIICpCJ0XEKnweOoHwA%2FBildschirmfoto%202023-12-02%20um%2000.36.51.png?alt=media&#x26;token=45efe9af-8738-4d66-a645-f3bf4fb1fa28" alt="" data-size="original">

</details>

<details>

<summary><mark style="color:blue;">/</mark>bounded</summary>

List bounded Web3 wallet(s) and Twitter Account to your Discord Account.&#x20;

#### User Command

```typescript
/bounded
```

#### Output

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FpfhJIFgttw2RejrXC4b8%2FBildschirmfoto%202023-11-30%20um%2023.29.09.png?alt=media&#x26;token=f5c0aa09-f0e5-451b-9aee-aab907b05d5d" alt="" data-size="original">\ <mark style="background-color:orange;">To preserve privacy, command output is only Visible to user that called it.</mark>&#x20;

</details>

<details>

<summary><mark style="color:blue;">/</mark>listpolls</summary>

#### To make it easy for users to keep track of Active Polls, users can run this command at any time without limitations. Wen called, it will List all Active Polls and link to each Poll.

#### User Command

```typescript
/listpolls
```

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FMmuTP65gu0IV5B8310xt%2Fimage.png?alt=media\&token=c6e5c693-d121-4175-9456-548620d3c24e)

#### Output

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2F5WDoo8MLe2ZskCaQJ8GQ%2Fimage.png?alt=media\&token=ed2296e3-fb02-47a7-b124-b4d729aaa227)

<mark style="background-color:orange;">For non Discord users, all Active and Finished Polls are visible at:</mark> <https://phunk.cc/polls/>

</details>

### <mark style="color:red;">`Admin Commands`</mark>

<details>

<summary><mark style="color:blue;">/</mark>createpoll</summary>

This commands is reserved for Discord Admins only, executing this command with parameters set kicks off new Poll where community can vote on Active proposals and as a result achieve consensus.

* Voting itself is anonymous and final results get auto revealed only after set time expires.&#x20;
* Only Admins are [permitted](#pollresults) to see casted Votes and Voters for auditing purposes.
* If optional <mark style="color:blue;">\<role></mark> is set, only users with set Discord role can cast a Vote.
* With set parameters under src/config.ts Sybil attacks are mitigated, read more [here](#sybil-attack-handling).

#### Admin Command

```typescript
/createpoll <description> <duration> <role> <emoji> <link> <minimumvotes> 
```

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2F8iBilypzSpjpePpPY1fw%2FBildschirmfoto%202023-12-03%20um%2010.15.49.png?alt=media\&token=40062ce6-c55e-4031-947c-1e35a851f329)

#### Output

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FvZR91cZbv4uBlbAzD4yT%2FBildschirmfoto%202023-12-03%20um%2010.15.21.png?alt=media\&token=d676c855-aedc-425c-8c9c-fafb161c8894)

</details>

<details>

<summary><mark style="color:blue;">/</mark>pollresults</summary>

This commands is reserved for Discord Admins only. It will display SnapShot of Vote result and will list all the Voters for Current and Past Polls.

#### Admin Command

```typescript
/pollresults <poll id>
```

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2F6JaQHXnmiDpsdL08V8IF%2Fimage.png?alt=media\&token=1166429e-ba44-446b-bc1c-b62d3f404009)

#### How to get Poll ID?

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FB8yv0HzxhCgjcUfONNwT%2Fimage.png?alt=media\&token=6a88bf83-3c40-45ef-a0e1-c35f48be0b49)

To see this option, on your Discord settings, you will need to have Developer mode turned ON.

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FHe1FQOf22Wn9EMGLflcP%2FBildschirmfoto%202023-12-02%20um%2000.11.25.png?alt=media&#x26;token=7c31c7ce-59cf-4cfc-9c6d-6492a9a52f9f" alt="" data-size="original">

#### Output

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FTSrVwKRKVJ2XIvnPh740%2Fimage.png?alt=media\&token=50070196-9f3d-49a9-bc65-babb1077cac6)

<mark style="background-color:orange;">This is Visible to Admins only and it is on their own discretion if they will share this information with the Community.</mark>&#x20;

</details>

<details>

<summary><mark style="color:blue;">/</mark>closepoll</summary>

This commands is reserved for Discord Admins only. It will Force Close currently Active Poll.\
If used, PhunkBot will Print this interaction and it will be visible to users.&#x20;

#### Admin Command

```typescript
/closepoll <poll id>
```

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2Ff1C22TyMVRideJTI2Uhg%2Fimage.png?alt=media\&token=ecc54787-e9cb-4947-8ceb-f5951f0be572)

#### Output

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2Fqu74a9nwMTIBT6Vjgg23%2FBildschirmfoto%202023-12-02%20um%2000.28.30.png?alt=media&#x26;token=5ae4ea7c-6379-4e7a-b9a2-d23e674de71a" alt="" data-size="original">

</details>

<details>

<summary><mark style="color:blue;">/</mark>deletepoll</summary>

This commands is reserved for Discord Admins only. It will Force Delete currently Active Poll.\
If used, PhunkBot will Print this interaction and it will be visible to users.&#x20;

#### Admin Command

```typescript
/deletepoll <poll id>
```

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2F3e9ezHhOHtDfkTVreoyz%2Fimage.png?alt=media\&token=23360ea0-bd42-404f-9786-186ab131d7c4)

#### Output

<img src="https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FHoYsksy13LXNJFv9sVEg%2FBildschirmfoto%202023-12-02%20um%2000.28.59.png?alt=media&#x26;token=f17bfd7d-13a7-4a18-87da-67ec40e7898f" alt="" data-size="original">

</details>

***

## <mark style="color:yellow;">`Encryption`</mark>

<details>

<summary>USER DATA</summary>

To protect user data in case of data breach, data is Encrypted using community owned Symetric key that is obtained from the discord server and [Explained here](https://discord.com/channels/873564453227094078/1148354544938528830/1162887458309029890).

#### Wen enabled, this is how Encrypted user data looks like on Host Server.

![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FVKjGnuJQ19o5iT8PmBpc%2Fimage.png?alt=media\&token=fb48499b-9d4f-4658-a8eb-04643527b958)

#### Encryption is Optional, it can be Enabled by changing Boolean from `false` to `true`

{% code title="config.ts" %}

```typescript
  dao_requires_encryption_key: false,
```

{% endcode %}

#### Code Sample

{% code title="dao.extention.service.ts" %}

```typescript
if (config.dao_requires_encryption_key) {
  const guildsId = unique(config.dao_roles.map(r => r.guildId))
  for (const guildId of guildsId) {
    console.log(`fetching encryption key for ${guildId}`)
    
    const guild = this.discordClient.getClient().guilds.cache.get(guildId)
    const channels = await guild.channels.fetch()

    const channel = channels.find(channel => channel.name === 'setup-daoextension') as TextBasedChannel
    const lastMessage = await channel.messages.fetch(channel.lastMessageId)
    this.encryptionKeys.set(guildId, lastMessage.content)
    console.log(`fetched encryption key for ${guildId}`)
  }
}
```

{% endcode %}

<mark style="background-color:red;">Data saved is: Discord ID, Wallet(s) public Key(s).</mark>

</details>

<details>

<summary>DEPLOYMENT</summary>

Data is Encrypted using community owned Symetric key that is obtained from the discord server, but how does that work?

Ideally one of Discord Admins creates Private channel called `#setup-daoextension` \
on Discord containing a 32 bytes encryption key for example using this [generator](https://seanwasere.com/generate-random-hex/).

&#x20;![](https://2655375593-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZX46fZLl1vCmsmnasnrn%2Fuploads%2FGcH21c9qRIRWftyDmEpF%2FBildschirmfoto%202023-12-16%20um%2010.08.45.png?alt=media\&token=81343279-da8a-4ff4-87d4-725ea034e23b)

and places Encryption key as only message into this Private channel. PhunkBot needs to have access to channel to Decrypt data in PhunkBot memory using this key.

After seed (encryption key) is in place, bot host enables encryption by changing Boolean from `false` to `true` under config.ts.

{% code title="config.ts" %}

```typescript
 dao_requires_encryption_key: true,
```

{% endcode %}

<mark style="background-color:red;">Warning: enabling Encryption will wipe database containing user data collected before.</mark>

</details>
