> For the complete documentation index, see [llms.txt](https://docs.octusbridge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.octusbridge.io/ob-id/integrate/octus-bridge-contracts/everscale/dao-section/daoroot.md).

# DAORoot

#### **`propose`**

Membuat pengajuan DAO baru.

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

**Parameter:**

| Nama        | Jenis        | Deskripsi                 |
| ----------- | ------------ | ------------------------- |
| answerId    | uint32       |                           |
| tonActions  | TonAction\[] | Daftar tindakan everscale |
| ethActions  | EthAction\[] | Daftar tindakan ethereum  |
| description | string       | Deskripsi pengajuan       |

#### **`deployProposal`**

Meluncurkan kontrak Pengajuan (membuat contoh kontrak Platform baru).

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

| Nama         | Jenis   | Deskripsi                                                                                |
| ------------ | ------- | ---------------------------------------------------------------------------------------- |
| nonce        | uint32  |                                                                                          |
| accountOwner | address | Alamat pemilik akun                                                                      |
| proposalData | TvmCell | Informasi tentang pengajuan, termasuk id jawaban, deskripsi, daftar tindakan TON dan EVM |

**Acara yang dikeluarkan:**

* ProposalCreated

#### **`onProposalSucceeded`**

Metode panggilan kembali setelah pengajuan berhasil.

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

**Parameter:**

| Nama       | Jenis        | Deskripsi                 |
| ---------- | ------------ | ------------------------- |
| proposalId | uint32       | Id pengajuan              |
| proposer   | address      | Alamat pembuat pengajuan  |
| tonActions | TonAction\[] | Daftar tindakan everscale |
| ethActions | EthAction\[] | Daftar tindakan ethereum  |

**Acara yang dikeluarkan:**

* ExecutingTonActions

#### **`executeTonAction`**

Melakukan transfer berdasarkan payload tindakan.

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

**Parameter:**

| Nama   | Jenis     | Deskripsi                           |
| ------ | --------- | ----------------------------------- |
| action | TonAction | Tindakan everscale untuk dijalankan |

#### **`executeEthActions`**

Berdasarkan daftar tindakan mengisi data yang diperlukan, menambahkan tindakan ke chain tindakan, menuliskan kodenya ke data acara dan meluncurkan acara.

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

**Parameter:**

| Nama     | Jenis        | Deskripsi                          |
| -------- | ------------ | ---------------------------------- |
| proposer | address      | Alamat pembuat pengajuan           |
| actions  | EthAction\[] | Tindakan ethereum untuk dijalankan |

#### **`calcTonActionsValue`**

Menghitung nilai total tindakan di Everscale.

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

Parameter:

| Nama    | Jenis        | Deskripsi                      |
| ------- | ------------ | ------------------------------ |
| actions | TonAction\[] | Daftar tindakan untuk dihitung |

**Nilai hasil:**

| Nama       | Jenis   | Deskripsi                   |
| ---------- | ------- | --------------------------- |
| totalValue | uint128 | Nilai total daftar tindakan |

#### **`calcEthActionsValue`**

Menghitung nilai todal tindakan di Ethereum.

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

**Parameter:**

| Nama    | Jenis        | Deskripsi                      |
| ------- | ------------ | ------------------------------ |
| actions | EthAction\[] | Daftar tindakan untuk dihitung |

**Nilai hasil:**

| Nama       | Jenis   | Deskripsi                   |
| ---------- | ------- | --------------------------- |
| totalValue | uint128 | Nilai total daftar tindakan |

\_buildProposalInitialData Membangun data awal untuk Pengajuan

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

**Parameter:**

| Nama       | Jenis  | Deskripsi    |
| ---------- | ------ | ------------ |
| proposalId | uint32 | Id pengajuan |

**Nilai hasil:**

| Jenis   | Deskripsi                            |
| ------- | ------------------------------------ |
| TvmCell | Data awal pengajuan dalam format sel |

#### **`_buildStakingAccountInitialData`**

Membangun data awal untuk akun Taruhan

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

**Parameter:**

| Nama         | Jenis   | Deskripsi                   |
| ------------ | ------- | --------------------------- |
| accountOwner | address | Alamat pemilik akun taruhan |

**Nilai hasil:**

| Jenis   | Deskripsi                               |
| ------- | --------------------------------------- |
| TvmCell | Data awal akun taruhan dalam format sel |

#### **`_buildInitData`**

Membangun data awal untuk jenis Platform yang ditentukan.

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

**Parameter:**

| Nama         | Jenis        | Deskripsi                            |
| ------------ | ------------ | ------------------------------------ |
| platformType | PlatformType | Jenis platform                       |
| initialData  | TvmCell      | Data awal pengajuan dalam format sel |

**Nilai hasil:**

| Jenis   | Deskripsi                                    | Deskripsi      |
| ------- | -------------------------------------------- | -------------- |
| TvmCell | Data awal direpresentasikan dalam format sel | Jenis platform |

#### **`requestUpgradeProposal`**

Membuat permintaan untuk meningkatkan pengajuan untuk versi berbeda.

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

**Parameter:**

| Nama           | Jenis   | Deskripsi                                        |
| -------------- | ------- | ------------------------------------------------ |
| currentVersion | uint16  | Versi pengajuan saat ini                         |
| sendGasTo      | address | Alamat untuk mengirimkan bensin yang dikeluarkan |
| proposalId     | uint32  | Id pengajuan                                     |

#### **`setStakingRoot`**

Mengatur alamat root taruhan dari param dan mentransfer sisa bensin ke admin

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

**Parameter:**

| Nama           | Jenis   | Deskripsi                     |
| -------------- | ------- | ----------------------------- |
| newStakingRoot | address | Alamat root taruhan yang baru |

**Acara yang dikeluarkan:**

* StakingRootUpdated

#### **`transferAdmin`**

Mentransfer peran admin ke alamat lain.

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

**Parameter:**

| Nama     | Jenis   | Deskripsi         |
| -------- | ------- | ----------------- |
| newAdmin | address | Alamat admin baru |

**Acara yang dikeluarkan:**

* AdminTransferAccepted
