# Pemilihan

#### **`applyForMembership`**

Menambahkan pengganti baru ke daftar node permintaan dan menerima permintaan.

```
function applyForMembership(
        address staker_addr,
        uint256 ton_pubkey,
        uint160 eth_addr,
        uint128 tokens,
        uint32 lock_time,
        uint32 code_version
    ) external override onlyUserData(staker_addr)
```

**Parameter:**

| Nama          | Jenis   | Deskripsi                     |
| ------------- | ------- | ----------------------------- |
| staker\_addr  | address | Alamat pengaplikasian penaruh |
| ton\_pubkey   | uint256 | Kunci umum akun ton           |
| eth\_addr     | uint160 | Alamat akun ethereum          |
| tokens        | uint128 | Jumlah token penaruh          |
| lock\_time    | uint32  | Durasi penguncian token       |
| code\_version | uint32  | Versi kode                    |

#### **`destroy`**

Harus dipanggil setelah transfer data pengganti ke putaran pengganti berikutnya.

```
function destroy() external override onlyRoot
```

#### **`finish`**

Mengakhiri pemilihan jika belum diakhiri dan mengirimkan bensin kembali ke root.

```
function finish(uint32 code_version) external override onlyRoot
```

**Parameter:**

| Nama          | Jenis  | Deskripsi            |
| ------------- | ------ | -------------------- |
| code\_version | uint32 | Kode versi pemilihan |

#### **`sendRelaysToRelayRound`**

Mengatur pengganti ke putaran pengganti.

```
function sendRelaysToRelayRound(address relay_round_addr, uint32 relays_count) external override onlyRoot
```

**Parameter:**

| Nama               | Jenis   | Deskripsi                   |
| ------------------ | ------- | --------------------------- |
| relay\_round\_addr | address | Alamat putaran pengganti    |
| relays\_count      | uint32  | Jumlah pengganti di putaran |

#### **`upgrade`**

Meningkatkan data pemilihan dan mengatur kode baru.

```
function upgrade(TvmCell code, uint32 new_version, address send_gas_to) external onlyRoot
```

**Parameter:**

| Nama         | Jenis   | Deskripsi                            |
| ------------ | ------- | ------------------------------------ |
| code         | TvmCell | Kode platform pemilihan              |
| new\_version | uint32  | Versi baru platform pemilihan        |
| sendGasTo    | address | Alamat untuk mengirimkan sisa bensin |

**Acara yang dikeluarkan:**

* ElectionCodeUpgraded

#### **`onCodeUpgrade`**

Membawa info versi saat ini dan membuat node asal setelah inisialisasi kontrak.

```
function onCodeUpgrade(TvmCell upgrade_data) private
```

**Parameter:**

| Nama          | Jenis   | Deskripsi                                    |
| ------------- | ------- | -------------------------------------------- |
| upgrade\_data | TvmCell | Meningkatkan data pemilihan dalam format sel |

#### **`_buildUserDataParams`**

Membangun param data pengguna.

```
function _buildUserDataParams(address user) private view returns (TvmCell)
```

**Parameter:**

| Nama | Jenis   | Deskripsi            |
| ---- | ------- | -------------------- |
| user | address | Alamat data pengguna |

**Nilai hasil:**

| Jenis   | Deskripsi                            |
| ------- | ------------------------------------ |
| TvmCell | Param Data Pengguna dalam format sel |

#### **`_buildPlatformInitData`**

Mengatur data platform awal.

```
function _buildPlatformInitData(address platform_root, uint8 platform_type, TvmCell initial_data) private view returns (TvmCell)
```

**Parameter:**

| Nama           | Jenis   | Deskripsi                           |
| -------------- | ------- | ----------------------------------- |
| platform\_root | address | Alamat platform                     |
| platform\_type | uint8   | Jenis platform                      |
| initial\_data  | TvmCell | Data platform awal dalam format sel |

**Nilai hasil:**

| Jenis   | Deskripsi                              |
| ------- | -------------------------------------- |
| TvmCell | Keadaan awal platform dalam format sel |
