Single Nominator Pool
Using mytonctrl
Currently mytonctrl supports single_nominator contracts, but firstly you need to install mytonctrl 2.0.
mytonctrl 2.0
If you already have installed mytonctrl just use command update mytonctrl2. If you have no mytonctrl installed, follow these steps:
- Download installation script:
wget https://raw.githubusercontent.com/ton-blockchain/mytonctrl/mytonctrl2/scripts/install.sh
- Run installation script:
sudo bash ./install.sh -b mytonctrl2
Set up single-nominator
After you have created and activated validator's wallet, follow these steps:
- Enable single nominator mode
MyTonCtrl> enable_mode single-nominator
- Create pool
MyTonCtrl> new_single_pool <pool-name> <owner_address>
Type
pools_listto display pool addressesSend 1 TON to the pool and activate it
MyTonCtrl> activate_single_pool <pool-name>
Now you can work with this pool via mytonctrl like with a standard nominator pool.
Without mytonctrl
Prepare launched Validator
If you have mytonctrl installed and validator running:
- Stop validation and withdraw all funds.
Prepare from the beginning
If you had no Validator before, do the following:
- Run a Validator and make sure it's synced.
- Stop validation and withdraw all funds.
Prepare single_nominator
- Install nodejs v.16 and later and npm (detailed instructions)
- Install
ts-nodeandargmodule
$ sudo apt install ts-node
$ sudo npm i arg -g
- Create symlinks:
$ sudo ln -s /usr/bin/ton/crypto/fift /usr/local/bin/fift
$ sudo ln -s /usr/bin/ton/crypto/func /usr/local/bin/func
- Run test to make sure everything is set up properly:
$ npm run test
- Replace mytonctrl nominator-pool scripts: https://raw.githubusercontent.com/orbs-network/single-nominator/main/mytonctrl-scripts/install-pool-scripts.sh
Create single_nominator Pool
- Get Toncenter API key from a Telegram @tonapibot
- Set env variables:
export OWNER_ADDRESS=<owner_address>
export VALIDATOR_ADDRESS=<validator_wallet_address>
export TON_ENDPOINT=https://toncenter.com/api/v2/jsonRPC
export TON_API_KEY=<toncenter api key>
- Create deployer address:
$ npm run init-deploy-wallet
Insufficient Deployer [EQAo5U...yGgbvR] funds 0
- Topup deployer address with 2.1 TON
- Deploy pool contract, you will get pool address:
Ef-kC0..._WLqgs:
$ npm run deploy
- Convert address to .addr:
$ fift -s ./scripts/fift/str-to-addr.fif Ef-kC0..._WLqgs
(Saving address to file single-nominator.addr)
- Backup deployer private key "./build/deploy.config.json" and "single-nominator.addr" files
- Copy "single-nominator.addr" to "mytoncore/pools/single-nominator-1.addr"
- Send stake from owner address to single nominator address
Withdrawals from Single Nominator
Using wallets to withdraw from single_nominator Fift:
- Create "withdraw.boc" request with amount:
$ fift -s ./scripts/fift/withdraw.fif <withdraw_amount>
- Create and sign request from owner's wallet:
$ fift -s wallet-v3.fif <my-wallet> <single_nominator_address> <sub_wallet_id> <seqno> <amount=1> -B withdraw.boc
- Broadcast query:
$ lite-client -C global.config.json -c 'sendfile wallet-query.boc'
tons
- Create "withdraw.boc" request with amount:
$ fift -s ./scripts/fift/withdraw.fif <withdraw_amount>
- Send request to single nominator address:
a.
$ tons wallet transfer <my-wallet> <single_nominator_address> <amount=1> --body withdraw.boc
tonkeeper
b.
npm link typescript
c.
npx ts-node scripts/ts/withdraw-deeplink.ts <single-nominator-addr> <withdraw-amount>
d. Open deeplink on the owner's phone