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_list
to 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-node
andarg
module
$ 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