You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Single Nominator](https://github.com/orbs-network/single-nominator) is a TON smart contract that enables secure validation for TON blockchain. The contract is designed for TON validators that have enough self stake to validate by themselves without relying on third-party nominators stakes. The contract provides an alternative simplified implementation for the Nominator Pool smart contract that supports a Single Nominator only.
7
+
8
+
## Start using mytonctrl
4
9
5
10
Currently [mytonctrl](https://github.com/ton-blockchain/mytonctrl) supports `single_nominator` contracts, but firstly you need to install mytonctrl 2.0.
6
11
7
-
### mytonctrl 2.0
12
+
### Launch mytonctrl 2.0
8
13
9
14
If you already have installed mytonctrl just use command `update mytonctrl2`. If you have no mytonctrl installed, follow these steps:
After you have created and activated validator's wallet, follow these steps:
30
+
After you have [created](/participate/run-nodes/full-node#import-existed-account) and [activated](/participate/run-nodes/full-node#activate-the-wallets) the validator's wallet, follow these steps:
26
31
27
32
1. Enable single nominator mode
28
33
29
34
```bash
30
35
MyTonCtrl> enable_mode single-nominator
31
36
```
32
37
33
-
2. Create pool
38
+
2. Check if single-nominator mode is enabled.
39
+
40
+
```bash
41
+
MyTonCtrl> status_modes
42
+
Name Status Description
43
+
single-nominator enabled Orbs's single nominator pools.
test-pool active 0.99389 spool_r2 kf_JcC5pn3etTAdwOnc16_tyMmKE8-ftNUnf0OnUjAIdDJpX
78
+
```
79
+
47
80
Now you can work with this pool via mytonctrl like with a standard nominator pool.
48
81
49
-
## Without mytonctrl
82
+
:::info
83
+
If the pool's balance is enough to participate in both rounds (`balance > min_stake_amount * 2`) then MyTonCtrl will automatically participate in both rounds using `stake = balance / 2`, unless user sets stake manually using command `set stake`. This behaviour is different from using a nominator pool but similar to staking using validator wallet.
84
+
:::
85
+
86
+
## Start without mytonctrl
50
87
51
88
#### Prepare launched Validator
52
89
@@ -60,19 +97,19 @@ Now you can work with this pool via mytonctrl like with a standard nominator poo
60
97
2. Stop validation and withdraw all funds.
61
98
62
99
63
-
## Prepare single_nominator
100
+
### Prepare Single Nominator
64
101
65
102
66
103
1. Install [nodejs](https://nodejs.org/en) v.16 and later and npm ([detailed instructions](https://github.com/nodesource/distributions#debian-and-ubuntu-based-distributions))
1. Go to the pool’s page https://tonscan.org/nominator/<pool_address>.
237
+
238
+
2. Make sure that the information about the pool is fully displayed, if the pool has the wrong smart contract, there will be no information.
239
+
240
+
3. Press the `ADD STAKE` button or scan the QR-code using Tonkeeper or any other TON Wallet.
241
+
242
+
4. After you are transferred to the wallet, please, enter the amount of TON and then send the transaction. After that TON coins will be added to staking.
243
+
244
+
If the wallet does not open automatically, you can send the transaction manually by copying the pool address. Send it through any TON wallet. From the sent transaction, 1 TON will be debited as a commission for processing the deposit.
245
+
246
+
247
+
## Withdraw funds
248
+
249
+
To get coins back after staking, send 1 TON to the pool’s address, add a comment **w** (small letter) to the transaction. This 1 TON minus commission will be returned, and a smart-contract will understand that you want to bring the coins back and it will send them back right after the end of the validator’s work cycle. It usually takes up to 18 hours on Mainnet and 2 hours on Testnet.
250
+
251
+
You can also withdraw funds using the following command:
MustStoreUInt(WITHDRAW_OP, 32). // op code for withdrawal
296
+
MustStoreUInt(query_id, 64). // query_id
297
+
MustStoreCoins(amount). // amount to withdraw
298
+
EndCell().MarshalJSON()
299
+
300
+
msg, err:= tonconnect.NewMessage(
301
+
single_nominator_address,
302
+
tlb.MustFromTON("1").Nano().String(), // nanocoins to transfer/compute message
303
+
tonconnect.WithPayload(payload))
304
+
305
+
if err != nil {
306
+
returnnil, err
307
+
}
308
+
309
+
return msg, nil
310
+
}
311
+
```
312
+
313
+
</TabItem>
314
+
315
+
</Tabs>
316
+
317
+
318
+
## Election process
319
+
320
+
### Set up a Single Nominator Pool
321
+
322
+
Configure the Single Nominator Pool contract using the [following]((/participate/network-maintenance/single-nominator#set-up-single-nominator)) instructions.
323
+
324
+
### Join the elections
325
+
326
+
[Deposit](/participate/network-maintenance/single-nominator#deposit-pool) minimum stake amount to the Single Nominator Pool.
327
+
328
+
**MyTonCtrl** will automatically join the elections. You can set the stake amount that mytonctrl sends to the [Elector contract](/develop/smart-contracts/governance#elector) ~ every 18 hours on Mainnet and 2 hours on Testnet.
329
+
330
+
```sh
331
+
MyTonCtrl>set stake 90000
332
+
```
333
+
334
+
**Minimum stake** amount could be found using `status` command.
335
+
336
+

337
+
338
+
You can set `stake` as `null` and it will be calculated according to the `stakePercent` value (could be checked with `status_settings` command).
339
+
340
+
It's possible to check is election has already been started:
If the election has been started and Single Nominator Pool is activated, validator should **automatically** send **ElectorNewStake** message to the Elector contract at the beginning of the next round.
358
+
359
+
Check validator wallet:
360
+
361
+
```sh
362
+
MyTonCtrl> wl
363
+
Name Status Balance Ver Wch Address
364
+
validator_wallet_001 active 995.828585374 v1 -1 kf_dctjwS4tqWdeG4GcCLJ53rkgxZOGGrdDzHJ_mxPkm_Xct
365
+
```
366
+
367
+
Then check it transaction history:
368
+
369
+
```sh
370
+
MyTonCtrl> vas kf_dctjwS4tqWdeG4GcCLJ53rkgxZOGGrdDzHJ_mxPkm_Xct
371
+
Address Status Balance Version
372
+
kf_dctjwS4tqWdeG4GcCLJ53rkgxZOGGrdDzHJ_mxPkm_Xct active 995.828585374 v1r3
You can confirm if your node has become a full validator by checking the following conditions:
394
+
395
+
1.**Validator Efficiency** - An efficiency of the local validator should be green and not `n/a`.
396
+
2.**Validator Index** - The validator index should be greater than -1.
397
+
398
+
399
+
### Checking profit
400
+
401
+
At the end of the round **MyTonCtrl** sends **ElectorRecoverStakeRequest** message to the Elector contract. It responses with `stake + profit` amount of Toncoins to your Single Nominator Pool.
0 commit comments