# UserData

#### **`propose`**

Jika pengguna memiliki cukup bensin dan tidak dipotong, meluncurkan pengajuan baru ke root dao, jika tidak memberi tahu pengguna bahwa pengajuan tidak dibuat.

```
function propose(
        TvmCell proposal_data,
        uint128 threshold
    ) override public onlyDaoRoot
```

**Parameter:**

| Nama           | Jenis   | Deskripsi                                                                        |
| -------------- | ------- | -------------------------------------------------------------------------------- |
| proposal\_data | TvmCell | Data pengajuan dalam format sel yang diperlukan untuk meluncurkan pengajuan baru |
| threshold      | uint128 | Jumlah token minimum yang diperlukan untuk mengajukan                            |

#### **`onProposalDeployed`**

Menambahkan pengajuan ke pengajuan yang dibuat, menghapus pengajuan yang tertunda dan memberi tahu pengguna bahwa pengajuan telah dibuat.

```
function onProposalDeployed(uint32 nonce, uint32 proposal_id, uint32 answer_id) public override onlyDaoRoot
```

**Parameter:**

| Nama         | Jenis  | Deskripsi                |
| ------------ | ------ | ------------------------ |
| nonce        | uint32 | Id pengajuan sementara   |
| proposal\_id | uint32 | Id pengajuan yang dibuat |
| answer\_id   | uint32 |                          |

#### **`castVote`**

Jika ada kesalahan memberi tahu pengguna jika suara ditolak, jika tidak menambahkan suara yang dikeluarkan ke suara yang masuk dan suara yang masuk ke pengajuan dengan id yang diberikan.

```
function castVote(uint32 code_version, uint32 proposal_id, bool support, string reason) public override onlyRoot
```

**Parameter:**

| Nama          | Jenis  | Deskripsi                                                  |
| ------------- | ------ | ---------------------------------------------------------- |
| code\_version | uint32 | Versi kode saat ini                                        |
| proposal\_id  | uint32 | Id pengajuan di mana pengguna memberikan suara             |
| support       | bool   | Benar jika suara mendukung pengajuan, salah jika menentang |
| reason        | string | Alasan suara yang diputuskan                               |

**Acara yang dikeluarkan:**

* VoteCast

#### **`voteCasted`**

Memberi tahu pengguna bahwa suara diberikan.

```
function voteCasted(uint32 proposal_id) override public onlyDaoProposal(proposal_id)
```

**Parameter:**

| Nama         | Jenis  | Deskripsi                                       |
| ------------ | ------ | ----------------------------------------------- |
| proposal\_id | uint32 | Id pengajuan di mana suara pengguna dikeluarkan |

#### **`rejectVote`**

Menghapus suara dari suara yang diberikan dan memberi tahu pengguna tentang penolakan.

```
function rejectVote(uint32 proposal_id) override public onlyDaoProposal(proposal_id)
```

**Parameter:**

| Nama         | Jenis  | Deskripsi                                   |
| ------------ | ------ | ------------------------------------------- |
| proposal\_id | uint32 | Id pengajuan di mana suara pengguna ditolak |

#### **`tryUnlockVoteTokens`**

Membuka token yang digunakan untuk pemilihan.

```
function tryUnlockVoteTokens(uint32 code_version, uint32 proposal_id) override public view onlyRoot
```

**Parameter:**

| Nama          | Jenis  | Deskripsi                                |
| ------------- | ------ | ---------------------------------------- |
| code\_version | uint32 | Versi kode saat ini                      |
| proposal\_id  | uint32 | Id pengajuan di mana token suara terbuka |

#### **`unlockVoteTokens`**

Menghapus pengajuan yang dibuat dan membuka suara pengguna.

```
function unlockVoteTokens(uint32 proposal_id, bool success) override public onlyDaoProposal(proposal_id)
```

**Parameter:**

| Nama         | Jenis  | Deskripsi                                         |
| ------------ | ------ | ------------------------------------------------- |
| proposal\_id | uint32 | Id pengajuan di mana token suara harus dibuka     |
| success      | bool   | Benar jika pengajuan diterima, salah jika ditolak |

**Acara yang dikeluarkan:**

* UnlockVotes

#### **`tryUnlockCastedVotes`**

Membuka suara yang dikeluarkan dari pengajuan dan mentransfer sisa bensin ke pengguna.

```
function tryUnlockCastedVotes(uint32 code_version, uint32[] proposal_ids) override public view onlyRoot
```

**Parameter:**

| Nama          | Jenis     | Deskripsi                                                |
| ------------- | --------- | -------------------------------------------------------- |
| code\_version | uint32    | Versi kode saat ini                                      |
| proposal\_ids | uint32\[] | Id pengajuan di mana suara yang dikeluarkan harus dibuka |

#### **`unlockCastedVote`**

Menghapus suara yang dikeluarkan dari daftar dan memberi tahu pengguna bahwa suara terbuka.

```
function unlockCastedVote(uint32 proposal_id, bool success) override public onlyDaoProposal(proposal_id)
```

**Parameter:**

| Nama         | Jenis  | Deskripsi                                         |
| ------------ | ------ | ------------------------------------------------- |
| proposal\_id | uint32 | Id pengajuan di mana pengguna mengeluarkan suara  |
| success      | bool   | Benar jika pengajuan diterima, salah jika ditolak |

**Acara yang dikeluarkan:**

* UnlockCastedVotes

#### **`_lockedTokens`**

Mengembalikan jumlah total token pengguna yang terkunci yang digunakan di pengajuan

```
function _lockedTokens() private view returns (uint128)
```

Nilai hasil:

| Jenis   | Deskripsi                                 |
| ------- | ----------------------------------------- |
| uint128 | Jumlah total token pengguna yang terkunci |

#### **`syncRewards`**

Mensinkronkan semua data yang terhubung ke putaran hadiah saat menambahkan putaran hadiah baru.

```
function syncRewards(IStakingPool.RewardRound[] reward_rounds, uint256 updated_balance) internal
```

**Parameter:**

| Nama             | Jenis                       | Deskripsi                                |
| ---------------- | --------------------------- | ---------------------------------------- |
| reward\_rounds   | IStakingPool.RewardRound\[] | Daftar hadiah putaran                    |
| updated\_balance | uint256                     | Memperbarui saldo token setelah tindakan |

#### **`slash`**

Mensinkronkan hadiah, mengatur hadiah yang terblokir, hutang hadiah dan saldo token dan mengonfirmasi pemotongan dengan menggunakan data itu.

```
function slash(IStakingPool.RewardRound[] reward_rounds, address send_gas_to) external override onlyRoot
```

**Parameter:**

| Nama           | Jenis          | Deskripsi                            |
| -------------- | -------------- | ------------------------------------ |
| reward\_rounds | RewardRound\[] | Daftar hadiah putaran                |
| send\_gas\_to  | address        | Alamat untuk mengirimkan sisa bensin |

#### **`processDeposit`**

Mensinkronkan hadiah, menambahkan token yang didepositokan ke saldo token dan menyelesaikan deposito.

```
function processDeposit(
        uint64 nonce,
        uint128 _tokens_to_deposit,
        IStakingPool.RewardRound[] reward_rounds,
        uint32 code_version
    ) external override onlyRoot
```

**Parameter:**

| Nama                  | Jenis          | Deskripsi                                             |
| --------------------- | -------------- | ----------------------------------------------------- |
| nonce                 | uint64         | Id deposito yang harus dikembalikan atau diselesaikan |
| \_tokens\_to\_deposit | uint128        | Jumlah token untuk didepositokan                      |
| reward\_rounds        | RewardRound\[] | Daftar hadiah putaran                                 |
| code\_version         | uint32         | Versi kode saat ini                                   |

**Acara yang dikeluarkan:**

* DepositProcessed

#### **`processClaimReward`**

Mensinkronkan hadiah, membuat daftar hadiah baru yang datanya adalah saldo hadiah dari putaran hadiah masing-masing dan menyelesaikan mengklaim hadiah.

```
function processClaimReward(
        IStakingPool.RewardRound[] reward_rounds,
        address send_gas_to,
        uint32 code_version
    ) external override onlyRoot
```

**Parameter:**

| Nama           | Jenis          | Deskripsi                            |
| -------------- | -------------- | ------------------------------------ |
| reward\_rounds | RewardRound\[] | Daftar hadiah putaran                |
| send\_gas\_to  | address        | Alamat untuk mengirimkan sisa bensin |
| code\_version  | uint32         | Versi kode saat ini                  |

#### **`getRewardForRelayRound`**

Melakukan semua pemeriksaan yang diperlukan dan mendapatkan hadiah untuk putaran pengganti yang selesai.

```
function getRewardForRelayRound(uint32 round_num) external onlyRelay
```

**Parameter:**

| Nama       | Jenis  | Deskripsi      |
| ---------- | ------ | -------------- |
| round\_num | uint32 | Jumlah putaran |

#### **`processGetRewardForRelayRound2`**

Mensinkronkan hadiah dan berdasarkan alamat putaran pengganti yang ditemukan menggunakan angka putaran mendapatkan hadiah untuk putaran berikut.

```
function processGetRewardForRelayRound2(
        IStakingPool.RewardRound[] reward_rounds,
        uint32 round_num,
        uint32 code_version,
        uint32 relay_round_code_version
    ) external override onlyRoot
```

**Parameter:**

| Nama                        | Jenis          | Deskripsi                    |
| --------------------------- | -------------- | ---------------------------- |
| reward\_rounds              | RewardRound\[] | Daftar hadiah putaran        |
| round\_num                  | uint32         | Jumlah putaran               |
| code\_version               | uint32         | Versi kode saat ini          |
| relay\_round\_code\_version | uint32         | Versi kode putaran pengganti |

#### **`receiveRewardForRelayRound`**

Meningkatkan saldo hadiah untuk putaran tertentu.

```
function receiveRewardForRelayRound(
        uint32 relay_round_num, uint32 reward_round_num, uint128 reward
    ) external override onlyRelayRound(relay_round_num)
```

**Parameter:**

| Nama               | Jenis   | Deskripsi                              |
| ------------------ | ------- | -------------------------------------- |
| relay\_round\_num  | uint32  | Jumlah putaran pengganti               |
| reward\_round\_num | uint32  | Jumlah hadiah putaran                  |
| reward             | uint128 | Jumlah untuk meningkatkan saldo hadiah |

**Acara yang dikeluarkan:**

* RelayRoundRewardClaimed

#### **`processLinkRelayAccounts`**

Menautkan akun pengganti dengan mengatur relay\_ton\_pubkey dan relay\_eth\_address

```
function processLinkRelayAccounts(
        uint256 ton_pubkey,
        uint160 eth_address,
        bool confirm,
        uint32 code_version
    ) external override onlyRoot
```

**Parameter:**

| Nama          | Jenis   | Deskripsi                                                        |
| ------------- | ------- | ---------------------------------------------------------------- |
| ton\_pubkey   | uint256 | Kunci umum akun ton                                              |
| eth\_address  | uint160 | Alamat akun ethereum                                             |
| confirm       | bool    | Benar jika kedua akun ton and eth terkonfirmasi, saah jika tidak |
| code\_version | uint32  | Versi kode saat ini                                              |

**Acara yang dikeluarkan:**

* RelayKeysUpdated
* TonPubkeyConfirmed
* EthAddressConfirmed

#### **`confirmTonAccount`**

Mengatur ton\_pubkey\_confirmed ke benar.

```
function confirmTonAccount() external
```

**Acara yang dikeluarkan:**

* TonPubkeyConfirmed

#### **`processConfirmEthAccount`**

Mengatur eth\_address\_confirmed ke benar dan mentransfer sisa bensin ke send\_gas\_to.

```
function processConfirmEthAccount(uint160 eth_address, address send_gas_to) external override onlyRoot
```

**Parameter:**

| Nama          | Jenis   | Deskripsi                            |
| ------------- | ------- | ------------------------------------ |
| eth\_address  | uint160 | Alamat akun ethereum                 |
| send\_gas\_to | address | Alamat untuk mengirimkan sisa bensin |

**Acara yang dikeluarkan:**

* EthAddressConfirmed

#### **`becomeRelayNextRound`**

Memproses pengganti untuk putaran berikutnya di pool taruhan.

```
function becomeRelayNextRound() external onlyRelay
```

#### **`processBecomeRelayNextRound2`**

Berdasarkan alamat pemilihan mengajukan keanggotaan.

```
function processBecomeRelayNextRound2(
        uint32 round_num,
        uint32 lock_time,
        uint128 min_deposit,
        uint32 code_version,
        uint32 election_code_version
    ) external override onlyRoot
```

**Parameter:**

| Nama                    | Jenis   | Deskripsi                         |
| ----------------------- | ------- | --------------------------------- |
| round\_num              | uint32  | Jumlah putaran                    |
| lock\_time              | uint32  | Durasi penguncian token           |
| min\_deposit            | uint128 | Jumlah minimal deposito pengganti |
| code\_version           | uint32  | Versi kode saat ini               |
| election\_code\_version | uint32  | Versi kode pemilihan              |

#### **`relayMembershipRequestAccepted`**

Mengunci pengganti selama 30 hari.

```
function relayMembershipRequestAccepted(
        uint32 round_num, uint128 tokens, uint256 ton_pubkey, uint160 eth_addr, uint32 lock_time
    ) external override onlyElection(round_num)
```

**Parameter:**

| Nama        | Jenis   | Deskripsi               |
| ----------- | ------- | ----------------------- |
| round\_num  | uint32  | Jumlah putaran          |
| tokens      | uint128 |                         |
| ton\_pubkey | uint256 | Kunci umum akun ton     |
| eth\_addr   | uint160 | Alamat akun ethereum    |
| lock\_time  | uint32  | Durasi penguncian token |

**Acara yang dikeluarkan:**

* RelayMembershipRequested

#### **`processWithdraw`**

Mensinkronkan hadiah, mengurangi jumlah saldo token untuk menarik dan menyelesaikan penarikan di pool taruhan.

```
function processWithdraw(
        uint128 _tokens_to_withdraw,
        IStakingPool.RewardRound[] reward_rounds,
        bool emergency,
        address send_gas_to,
        uint32 code_version
    ) external override onlyRoot
```

**Parameter:**

| Nama                   | Jenis          | Deskripsi                                      |
| ---------------------- | -------------- | ---------------------------------------------- |
| \_tokens\_to\_withdraw | uint128        | Jumlah token untuk ditarik                     |
| reward\_rounds         | RewardRound\[] | Daftar hadiah putaran                          |
| emergency              | bool           | Benar jika penarikan darurat, salah jika tidak |
| send\_gas\_to          | address        | Alamat untuk mengirimkan sisa bensin           |
| code\_version          | uint32         | Versi kode saat ini                            |

#### **`withdrawTons`**

Mentransfer ke pengguna semua sisa ton.

```
function withdrawTons() external override onlyRoot
```


---

# 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/ob-id/integrate/octus-bridge-contracts/everscale/staking-section/userdata.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.
