# DAORoot

#### **`propose`**

Creates new DAO proposal.

```
function propose(
        uint32 answerId,
        TonAction[] tonActions,
        EthAction[] ethActions,
        string description
    ) override public
```

**Parameters:**

| Name        | Type         | Description                 |
| ----------- | ------------ | --------------------------- |
| answerId    | uint32       |                             |
| tonActions  | TonAction\[] | List of everscale actions   |
| ethActions  | EthAction\[] | List of ethereum actions    |
| description | string       | Description of the proposal |

#### **`deployProposal`**

Deploys Proposal contract (creates a new instance of Platform contract).

```
function deployProposal(
        uint32 nonce,
        address accountOwner,
        TvmCell proposalData
    ) override public onlyStakingAccount(accountOwner)onProposalDeployed
```

| Name         | Type    | Description                                                                                   |
| ------------ | ------- | --------------------------------------------------------------------------------------------- |
| nonce        | uint32  |                                                                                               |
| accountOwner | address | The address of owner of the account                                                           |
| proposalData | TvmCell | Information about the proposal, including answer id, description, list of TON and EVM actions |

**Events emitted:**

* ProposalCreated

#### **`onProposalSucceeded`**

Callback method after successful proposal.

```
function onProposalSucceeded(
        uint32 proposalId,
        address proposer,
        TonAction[] tonActions,
        EthAction[] ethActions
    ) override public onlyProposal(proposalId)
```

**Parameters:**

| Name       | Type         | Description                     |
| ---------- | ------------ | ------------------------------- |
| proposalId | uint32       | The id of the proposal          |
| proposer   | address      | Address of the proposal creator |
| tonActions | TonAction\[] | List of everscale actions       |
| ethActions | EthAction\[] | List of ethereum actions        |

**Events emitted:**

* ExecutingTonActions

#### **`executeTonAction`**

Does the transfer based on the action payload.

```
function executeTonAction(TonAction action) private pure inline
```

**Parameters:**

| Name   | Type      | Description                         |
| ------ | --------- | ----------------------------------- |
| action | TonAction | The everscale action to be executed |

#### **`executeEthActions`**

Based on the list of actions fills necessary data, adds actions to the chain of actions, encodes them to the event data and deploys events.

```
function executeEthActions(address proposer, EthAction[] actions) private view inline
```

**Parameters:**

| Name     | Type         | Description                        |
| -------- | ------------ | ---------------------------------- |
| proposer | address      | Address of the proposal creator    |
| actions  | EthAction\[] | The ethereum action to be executed |

#### **`calcTonActionsValue`**

Calculates total value of actions on Everscale.

```
function calcTonActionsValue(TonAction[] actions) public pure returns (uint128 totalValue)
```

Parameters:

| Name    | Type         | Description                          |
| ------- | ------------ | ------------------------------------ |
| actions | TonAction\[] | The list of actions to be calculated |

**Return values:**

| Name       | Type    | Description                     |
| ---------- | ------- | ------------------------------- |
| totalValue | uint128 | Total value of the actions list |

#### **`calcEthActionsValue`**

Calculates total value of actions on Ethereum.

```
function calcEthActionsValue(
        EthAction[] actions
    ) public view returns (uint128 totalValue)
```

**Parameters:**

| Name    | Type         | Description                          |
| ------- | ------------ | ------------------------------------ |
| actions | EthAction\[] | The list of actions to be calculated |

**Return values:**

| Name       | Type    | Description                     |
| ---------- | ------- | ------------------------------- |
| totalValue | uint128 | Total value of the actions list |

\_buildProposalInitialData Builds initial data for Proposal

function \_buildProposalInitialData(uint32 proposalId) private inline pure returns (TvmCell)

**Parameters:**

| Name       | Type   | Description            |
| ---------- | ------ | ---------------------- |
| proposalId | uint32 | The id of the proposal |

**Return values:**

| Type    | Description                          |
| ------- | ------------------------------------ |
| TvmCell | Proposal initial data in cell format |

#### **`_buildStakingAccountInitialData`**

Builds initial data for Staking account

```
function _buildStakingAccountInitialData(address accountOwner) private inline pure returns (TvmCell)
```

**Parameters:**

| Name         | Type    | Description                              |
| ------------ | ------- | ---------------------------------------- |
| accountOwner | address | The address of the staking account owner |

**Return values:**

| Type    | Description                                 |
| ------- | ------------------------------------------- |
| TvmCell | Staking account initial data in cell format |

#### **`_buildInitData`**

Builds initial data for specified Platform type.

```
function _buildInitData(PlatformType platformType, TvmCell initialData) private view returns (TvmCell)
```

**Parameters:**

| Name         | Type         | Description                              |
| ------------ | ------------ | ---------------------------------------- |
| platformType | PlatformType | Type of the platform                     |
| initialData  | TvmCell      | The proposal initial data in cell format |

**Return values:**

| Type    | Description                             | Description          |
| ------- | --------------------------------------- | -------------------- |
| TvmCell | Initial data represented in cell format | Type of the platform |

#### **`requestUpgradeProposal`**

Creates request for upgrading proposal for different version.

```
function requestUpgradeProposal(
        uint16 currentVersion,
        address sendGasTo,
        uint32 proposalId
    ) override public onlyProposal(proposalId)
```

**Parameters:**

| Name           | Type    | Description                     |
| -------------- | ------- | ------------------------------- |
| currentVersion | uint16  | Current version of proposal     |
| sendGasTo      | address | Address where to send spent gas |
| proposalId     | uint32  | The id of the proposal          |

#### **`setStakingRoot`**

Sets staking root address from params and transfers remaining gas to admin

```
function setStakingRoot(address newStakingRoot) override public onlyAdmin
```

**Parameters:**

| Name           | Type    | Description                         |
| -------------- | ------- | ----------------------------------- |
| newStakingRoot | address | The address of the new staking root |

**Events emitted:**

* StakingRootUpdated

#### **`transferAdmin`**

Transfers admin role to other address.

```
function transferAdmin(address newAdmin) override public onlyAdmin
```

**Parameters:**

| Name     | Type    | Description                  |
| -------- | ------- | ---------------------------- |
| newAdmin | address | The address of the new admin |

**Events emitted:**

* AdminTransferAccepted


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.octusbridge.io/integrate/octus-bridge-contracts/everscale/dao-section/daoroot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
