Установка и настройка полной ноды для TON Валидатора

cryptobro

New member
Сообщения
23
Реакции
6
Инструкция по настройке полной ноды для блокчейна TON в качестве валидатора


Обратите внимание, что валидатор должен быть запущен на выделенном высокопроизводительном сервере с высокой пропускной способностью сети, установленном в надежном центре обработки данных, и что вам потребуется большое количество Gram как ставки для вашего валидатора. Если ваш валидатор работает неправильно или недоступен в течение длительного периода времени, вы можете потерять часть или всю свою ставку, поэтому имеет смысл использовать высокопроизводительные надежные серверы.


0. Скачивание и компиляция

Основные инструкции такие же, как и для полной ноды TON Blockchain. Фактически, любая полная нода автоматически будет работать как валидатор, если обнаружит, что открытый ключ, соответствующий его секретному ключу, отображается как член текущего набора валидаторов для текущего выбранного экземпляра цепочки блоков TON. В частности, полная нода и средство проверки используют один и тот же механизм проверки двоичных файлов и управляются с помощью одной и той же консоли средства проверки.


1. Контроль смарт-контракта валидатора

Чтобы запустить Validator, вам понадобится полный узел, который уже запущен и работает (и полностью синхронизирован с текущим состоянием блокчейна), и кошелек в главной цепочке, содержащий большое количество Gram. Как правило, вам понадобится не менее 100000 Grams.

Каждый валидатор идентифицируется своим открытым ключом (Ed25519). Во время выборов валидатора валидатор (или, скорее, его открытый ключ) также связан со смарт-контрактом, находящимся в masterchain. Для простоты мы говорим, что валидатор «контролируется» этим умным договором (например, умным договором кошелька). Ставки принимаются от имени этого валидатора только в том случае, если они получены из соответствующего смарт-контракта, и только этот связанный смарт-контракт имеет право получить долю валидатора после его размораживания вместе с долей валидатора в бонусах (блокировка сборов за майнинг, транзакция и сборы за пересылку сообщений, взимаемые с пользователей блокчейна TON пулом валидаторов). Обычно бонусы распределяются пропорционально (действующим) ставкам валидаторов. С другой стороны, валидаторы с более высокими ставками выполняют большую работу (должны создавать и проверять блоки для большего количества цепей шарданов), поэтому важно не слишком жадничать.

Обратите внимание, что каждый валидатор (идентифицируемый его открытым ключом) может быть связан максимум с одним управляющим смарт-контрактом (находящимся в основной цепочке), но один и тот же управляющий смарт-контракт может быть связан с несколькими валидаторами. Таким образом, вы можете запускать несколько валидаторов (на разных физических серверах) и делать для них ставки из одного и того же умного контракта. Если один из этих валидаторов выйдет из строя и вы потеряете его ставку, по крайней мере, другие валидаторы продолжат работать и сохранят свои ставки и получат бонусы.


2. Создание контрольного смарт-контракта

Если у вас нет контролирующего смарт-контракта, вы можете просто создать кошелек в masterchain. Простой кошелек может быть создан с помощью скрипта new-wallet.fif, расположенного в подкаталоге crypto/smartcont дерева исходного кода. В дальнейшем мы предполагаем, что вы настроили переменную среды FIFTPATH для включения <source-root>/crypto/fift/lib: <source-root>/crypto/smartcont, и что ваш PATH содержит каталог с двоичным файлом Fift ( находится в <build-directory>/crypto/fift). Тогда вы можете просто запустить

$ fift -s new-wallet.fif -1 my_wallet_id

где «my_wallet_id» - это любой идентификатор, который вы хотите назначить вашему новому кошельку, а -1 - идентификатор рабочей цепочки для главной цепочки. Если вы не настроили FIFTPATH и PATH, вам придется запустить более длинную версию этой команды

$ crypto/fift -I <source-dir>/crypto/fift/lib: <source-dir>/crypto/smartcont -s new-wallet.fif -1 my_wallet_id

в вашем каталоге сборки.

После запуска этого скрипта отображается адрес нового смарт-контракта:
...
адрес нового кошелька = -1: af17db43f40b6aa24e7203a9f8c8652310c88c125062d1129fe883eaa1bd6763
(Сохранение адреса в файл my_wallet_id.addr)
Невосприимчивый адрес (для инициализации): 0f-vF9tD9Atqok5yA6n4yGUjEMiMElBi0RKf6IPqob1nYzqK
Адрес для пересылки (для последующего доступа): kf-vF9tD9Atqok5yA6n4yGUjEMiMElBi0RKf6IPqob1nY2dP
...
(Сохраненный запрос создания кошелька в файл my_wallet_id-query.boc)

Теперь my_wallet_id.pk - это новый файл, содержащий закрытый ключ для управления этим кошельком (вы должны хранить его в секрете), а my_wallet_id.addr - это (не очень секретный) файл, содержащий адрес этого кошелька. Как только это будет сделано, вы должны перевести некоторые (тестовые) граммы на не подлежащий возврату адрес вашего кошелька и запустить «sendfile my_wallet_id-query.boc» в клиенте Lite для завершения создания нового кошелька. Этот процесс более подробно объясняется в LiteClient-HOWTO.

Если вы запускаете валидатор в «основной сети», рекомендуется использовать более сложные смарт-контракты с кошельками, например, кошелек с несколькими подписями. Для «testnet» простого кошелька должно хватить.


3. Избиратель умный договор

Интеллектуальный контракт выборщика - это специальный смарт-контракт, заключенный в masterchain. Его полный адрес равен -1: xxx..xxx, где -1 - идентификатор рабочей цепочки (-1 соответствует главной цепочке), а xxx..xxx - шестнадцатеричное представление его 256-битного адреса внутри главной цепочки. Чтобы узнать этот адрес, вы должны прочитать параметр конфигурации # 1 из недавнего состояния блокчейна. Это легко сделать с помощью команды «getconfig 1» в Lite Client:

ConfigParam (1) = (elector_addr: xA4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA)
{х} A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA

В этом случае полный адрес избирателя равен -1: A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA

Мы предполагаем, что вы знакомы с Lite Client и знаете, как его запустить и как получить глобальный файл конфигурации для него. Обратите внимание, что указанную выше команду можно запустить в пакетном режиме с помощью параметра командной строки '-c' в клиенте Lite:

$ lite-client -C <global-config-file> -c 'getconfig 1'
...
ConfigParam(1) = ( elector_addr:xA4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA)
x{A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA}

$

Интеллектуальный контракт избирателя используется для нескольких вещей. Самое главное, что вы можете участвовать в выборах валидатора или собирать незамерзающие ставки и бонусы, отправляя сообщения от контролирующего умного договора вашего валидатора к умному договору избирателя. Вы также можете узнать о текущих выборах валидаторов и их участниках, используя так называемые «методы получения» смарт-контракта с избирателями.

А именно, работает
runmethod -1:A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA active_election_id
...
arguments: [ 86535 ]
result: [ 1567633899 ]

(или lite-client -C <global-config> -c "runmethod -1: <elector-addr> active_election_id" в пакетном режиме) вернет идентификатор активных в настоящий момент выборов (ненулевое целое число, обычно unixtime из начало срока службы избираемой группы валидаторов) или 0, если в настоящее время выборы не активны. В этом примере идентификатор активных выборов - 1567633899.

Вы также можете восстановить список всех активных участников (пары 256-битных открытых ключей валидатора и их соответствующие ставки, выраженные в нанограммах), запустив метод "member_list" вместо "active_election_id".


4. Создание открытого ключа валидатора и адреса ADNL

Чтобы участвовать в выборах валидатора, вам нужно знать идентификатор выборов (полученный с помощью get-метода "active_elections_id" смарт-контракта с избирателем), а также открытый ключ вашего валидатора. Открытый ключ создается при запуске validator-engine-console (как описано в FullNode-HOWTO) и выполнении следующих команд:

$ validator-engine-console ...
...
conn ready
created new key BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67
exportpub BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67
got public key: xrQTSIQEsqZkWnoADMiBnyBFRUUweXTvzRQFqb5nHd5xmeE6
addpermkey BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67 1567633899 1567733900
success

Теперь полный узел (механизм проверки) сгенерировал новую пару ключей, экспортировал представление открытого ключа в Base64 (xrQT ... E6) и зарегистрировал его в качестве постоянного ключа для подписывания блоков, начиная с unixtime 1567633899 (равного выбора идентификатор) до 1567733900 (соответствует предыдущему номеру плюс срок действия выбранного валидатора, доступного в параметре конфигурации # 15, который можно узнать, введя «getconfig 15» в клиенте Lite, плюс запас прочности в случае выборы на самом деле состоятся позже чем предполагалось).

Вам также необходимо определить временный ключ, который будет использоваться валидатором для участия в сетевом согласованном протоколе. Самый простой способ (достаточный для целей тестирования) - установить этот ключ равным постоянному ключу (подпись блока):

addtempkey BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67 BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67 1567733900
success

Также рекомендуется создать выделенный адрес ADNL, который будет использоваться исключительно в целях проверки:

created new key C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C
addadnl C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C 0
success
addvalidatoraddr BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67 C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C 1567733900
success

Теперь C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C - это новый адрес ADNL, который будет использоваться полным узлом для запуска в качестве валидатора с открытым ключом BCA ... B67, со временем истечения, равным 156779.


5. Создание запроса на участие в выборах

Специальный скрипт validator-elect-req.fif (находится в <source-dir>/crypto/smartcont) используется для создания сообщения, которое должно быть подписано валидатором для участия в выборах. Он запускается следующим образом:

$ fift -s validator-elect-req.fif <wallet-addr> <elect-utime> <max-factor> <adnl-addr> [<savefile>]

Например,

$ fift -s validator-elect-req.fif kf-vF9tD9Atqok5yA6n4yGUjEMiMElBi0RKf6IPqob1nY2dP 1567633899 2.7 C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C

или, если вы создали управляющий кошелек с помощью new-wallet.fif, вы можете использовать @ my_wallet_id.addr вместо копирования адреса кошелька kf-vF ... dP:

---------------------------------------
$ fift -s validator-elect-req.fif @my_wallet_id.addr 1567633899 2.7 C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C

Создание запроса на участие в выборах валидатора во время 1567633899 от смарт-контракта Uf + vF9tD9Atqok5yA6n4yGUjEMiMElBi0RKf6IPqob1nY4EA = -1: af17db43f40b6aa24e7203a9f8c8652310c88c125062d1129fe883eaa1bd6763 с максимальным коэффициентом доли относительно минимальной доли 176947/65536 и валидатор ADNL адреса c5c2b94529405fb07d1ddfb4c42bfb07727e7ba07006b2db569fbf23060b9e5c
654C50745D7031EB0002B333AF17DB43F40B6AA24E7203A9F8C8652310C88C125062D1129FE883EAA1BD6763C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C
ZUxQdF1wMesAArMzrxfbQ_QLaqJOcgOp-MhlIxDIjBJQYtESn-iD6qG9Z2PFwrlFKUBfsH0d37TEK_sHcn57oHAGsttWn78jBgueXA ==
---------------------------------------

Здесь <max-factor> = 2.7 - максимально допустимое соотношение вашей ставки по отношению к минимальной доле валидатора в избранной группе валидаторов. Таким образом, вы можете быть уверены, что ваша ставка будет не более чем в 2,7 раза меньше наименьшей ставки, поэтому рабочая нагрузка вашего валидатора будет не более чем в 2,7 раза меньше минимальной. Если ваша ставка слишком велика по отношению к ставкам других валидаторов, она будет обрезана до этого значения (в 2,7 раза меньше минимальной ставки), а остаток будет возвращен вам (т. Е. В контролирующий смарт-контракт вашего валидатора). ) сразу после выборов.

Теперь вы получаете двоичную строку в шестнадцатеричной (654C ... 9E5C) и форме base64 для подписи валидатором. Это можно сделать в validator-engine-console:

sign BCA335626726CF2E522D287B27E4FAFFF82D1D98615957DB8E224CB397B2EB67 654C50745D7031EB0002B333AF17DB43F40B6AA24E7203A9F8C8652310C88C125062D1129FE883EAA1BD6763C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C
got signature ovf9cmr2J/speJEtMU+tZm6zH/GBEyZCPpaukqL3mmNH9Wipyoys63VFh0yR386bARHKMPpfKAYBYslOjdSjCQ

Здесь BCA ... B67 - идентификатор подписывающего ключа нашего валидатора, а 654 ... E5C - сообщение, сгенерированное validator-elect-req.fif. Подпись ovf9 ... jCQ (это представление Base64 64-байтовой подписи Ed25519).

Теперь вам нужно запустить другой скрипт validator-elect-signature.fif, для которого также требуется открытый ключ и подпись валидатора:

------------------------------------
$ fift -s validator-elect-signed.fif @my_wallet_id.addr 1567633899 2.7 C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C xrQTSIQEsqZkWnoADMiBnyBFRUUweXTvzRQFqb5nHd5xmeE6 ovf9cmr2J/speJEtMU+tZm6zH/GBEyZCPpaukqL3mmNH9Wipyoys63VFh0yR386bARHKMPpfKAYBYslOjdSjCQ==
Creating a request to participate in validator elections at time 1567633899 from smart contract Uf+vF9tD9Atqok5yA6n4yGUjEMiMElBi0RKf6IPqob1nY4EA = -1:af17db43f40b6aa24e7203a9f8c8652310c88c125062d1129fe883eaa1bd6763 with maximal stake factor with respect to the minimal stake 176947/65536 and validator ADNL address c5c2b94529405fb07d1ddfb4c42bfb07727e7ba07006b2db569fbf23060b9e5c
String to sign is: 654C50745D7031EB0002B333AF17DB43F40B6AA24E7203A9F8C8652310C88C125062D1129FE883EAA1BD6763C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C
Provided a valid Ed25519 signature A2F7FD726AF627FB2978912D314FAD666EB31FF1811326423E96AE92A2F79A6347F568A9CA8CACEB7545874C91DFCE9B0111CA30FA5F28060162C94E8DD4A309 with validator public key 8404B2A6645A7A000CC8819F20454545307974EFCD1405A9BE671DDE7199E13A
query_id set to 1567632790

Message body is x{4E73744B000000005D702D968404B2A6645A7A000CC8819F20454545307974EFCD1405A9BE671DDE7199E13A5D7031EB0002B333C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C}
x{A2F7FD726AF627FB2978912D314FAD666EB31FF1811326423E96AE92A2F79A6347F568A9CA8CACEB7545874C91DFCE9B0111CA30FA5F28060162C94E8DD4A309}

Saved to file validator-query.boc
-----------------------

В качестве альтернативы, если вы запускаете консоль validator-engine-console на том же компьютере, что и ваш кошелек, вы можете пропустить вышеуказанные шаги и вместо этого использовать «createelectionbid» для создания файла с внешним сообщением, которое будет отправлено клиентом lite. Чтобы эта команда работала, вы должны запустить средство проверки с параметром командной строки -f <fift-dir>, где <fift-dir> - это каталог, содержащий копии всех необходимых исходных файлов Fift (например, Fift.fif). , TonUtil.fif, validator-elect-req.fif и validator-elect-signature.fif), хотя эти файлы обычно находятся в разных исходных каталогах (<source-dir>/crypto/fift/lib и <source-dir>/crypto/smartcont).

Теперь у вас есть тело сообщения, содержащее ваш запрос об участии в выборах. Вы должны отправить его из контролирующего смарт-контракта, указав в качестве значения ставку (плюс один дополнительный грамм для отправки подтверждения). Если вы используете умный контракт простого кошелька, это можно сделать с помощью аргумента командной строки -B для wallet.fif:

--------------------------------------------
$ fift -s wallet.fif my_wallet_id -1:A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA 1 100001. -B validator-query.boc
Source wallet address = -1:af17db43f40b6aa24e7203a9f8c8652310c88c125062d1129fe883eaa1bd6763
kf-vF9tD9Atqok5yA6n4yGUjEMiMElBi0RKf6IPqob1nY2dP
Loading private key from file my_wallet_id.pk
Transferring GR$100001. to account kf-kwsfAWwk9Rw3iMW26CJ-g3Xdf2bHr_J3J0EtJjTot2lHQ = -1:a4c2c7c05b093d470de2316dba089fa0dd775fd9b1ebfc9dc9d04b498d3a2dda seqno=0x1 bounce=-1
Body of transfer message is x{4E73744B000000005D702D968404B2A6645A7A000CC8819F20454545307974EFCD1405A9BE671DDE7199E13A5D7031EB0002B333C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C}
x{A2F7FD726AF627FB2978912D314FAD666EB31FF1811326423E96AE92A2F79A6347F568A9CA8CACEB7545874C91DFCE9B0111CA30FA5F28060162C94E8DD4A309}

signing message: x{0000000101}
x{627FD26163E02D849EA386F118B6DD044FD06EBBAFECD8F5FE4EE4E825A4C69D16ED32D79A60A8500000000000000000000000000001}
x{4E73744B000000005D702D968404B2A6645A7A000CC8819F20454545307974EFCD1405A9BE671DDE7199E13A5D7031EB0002B333C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C}
x{A2F7FD726AF627FB2978912D314FAD666EB31FF1811326423E96AE92A2F79A6347F568A9CA8CACEB7545874C91DFCE9B0111CA30FA5F28060162C94E8DD4A309}

resulting external message: x{89FF5E2FB687E816D5449CE40753F190CA4621911824A0C5A2253FD107D5437ACEC6049CF8B8EA035B0446E232DB8C1DFEA97738076162B2E053513310D2A3A66A2A6C16294189F8D60A9E33D1E74518721B126A47DA3A813812959BD0BD607923B010000000080C_}
x{627FD26163E02D849EA386F118B6DD044FD06EBBAFECD8F5FE4EE4E825A4C69D16ED32D79A60A8500000000000000000000000000001}
x{4E73744B000000005D702D968404B2A6645A7A000CC8819F20454545307974EFCD1405A9BE671DDE7199E13A5D7031EB0002B333C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C}
x{A2F7FD726AF627FB2978912D314FAD666EB31FF1811326423E96AE92A2F79A6347F568A9CA8CACEB7545874C91DFCE9B0111CA30FA5F28060162C94E8DD4A309}

B5EE9C7241040401000000013D0001CF89FF5E2FB687E816D5449CE40753F190CA4621911824A0C5A2253FD107D5437ACEC6049CF8B8EA035B0446E232DB8C1DFEA97738076162B2E053513310D2A3A66A2A6C16294189F8D60A9E33D1E74518721B126A47DA3A813812959BD0BD607923B010000000080C01016C627FD26163E02D849EA386F118B6DD044FD06EBBAFECD8F5FE4EE4E825A4C69D16ED32D79A60A85000000000000000000000000000010201A84E73744B000000005D702D968404B2A6645A7A000CC8819F20454545307974EFCD1405A9BE671DDE7199E13A5D7031EB0002B333C5C2B94529405FB07D1DDFB4C42BFB07727E7BA07006B2DB569FBF23060B9E5C030080A2F7FD726AF627FB2978912D314FAD666EB31FF1811326423E96AE92A2F79A6347F568A9CA8CACEB7545874C91DFCE9B0111CA30FA5F28060162C94E8DD4A309062A7721
(Saved to file wallet-query.boc)
----------------------------------

Теперь вам просто нужно отправить wallet-query.boc из Lite-клиента (а не из консоли Validator):

или вы можете использовать LiteClient в пакетном режиме
$ lite-client -C <config-file> -c "sendfile wallet-query.boc"

Это внешнее сообщение, подписанное вашим закрытым ключом (который контролирует ваш кошелек), которое инструктирует ваш смарт-контракт на кошелек отправлять внутреннее сообщение на смарт-контракт с избирателем с заданной полезной нагрузкой (содержащей ставку валидатора и подписанную его ключом) и передавать указанное количество грамм. Когда смарт-контракт выборщика получает это внутреннее сообщение, он регистрирует вашу ставку (с ставкой, равной указанной сумме в граммах минус один) и отправляет вам (т. е. Смарт-контракт с кошельком) подтверждение (несет 1 грамм назад) или сообщение об отклонении с кодом ошибки (переносит почти всю первоначальную сумму ставки за вычетом сборов за обработку).

Вы можете проверить, была ли принята ваша ставка, запустив get-method "member_list" смарт-контракта с избирателями.


6. Восстановление ставок и бонусов

Если ваша ставка принята лишь частично (из-за максимального коэффициента) во время выборов или после того, как ваша ставка не заморожена (это происходит через некоторое время после истечения срока действия группы валидаторов, в которую был избран ваш валидатор), вы можете Вы хотите получить обратно всю или часть своей ставки вместе с любой долей бонусов, причитающихся вашему валидатору. Интеллектуальный контракт с избирателем не отправляет вам ставку и бонусы (т. е. Контролирующий смарт-контракт) в сообщении. Вместо этого он зачисляет сумму, которая будет возвращена вам, в специальной таблице, которую можно проверить с помощью метода get «compute_returned_stake» (который ожидает адрес управляющего смарт-контракта в качестве аргумента):

$ lite-client -C ton-lite-client-test1.config.json -rc 'runmethod -1:A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA compute_returned_stake 0xaf17db43f40b6aa24e7203a9f8c8652310c88c125062d1129fe883eaa1bd6763'
arguments: [ 79196899299028790296381692623119733846152089453039582491866112477478757689187 130944 ]
result: [ 0 ]

Если результат равен нулю, ничего не из-за вас. В противном случае вы увидите часть или всю свою ставку, возможно, с некоторыми бонусами. В этом случае вы можете создать запрос на восстановление доли, используя recovery-deal.fif:

-----------------------------
$ fift -s recover-stake.fif
query_id for stake recovery message is set to 1567634299

Message body is x{47657424000000005D70337B}

Saved to file recover-query.boc
-----------------------------

Опять же, вы должны отправить recovery-query.boc в качестве полезной нагрузки сообщения из контролирующего смарт-контракта (т. е. Вашего кошелька) в смарт-контракт выборщика:

$ fift -s wallet.fif my_wallet_id <dest-addr> <my-wallet-seqno> <gram-amount> -B recover-query.boc

Например,

$ fift -s wallet.fif my_wallet_id -1:A4C2C7C05B093D470DE2316DBA089FA0DD775FD9B1EBFC9DC9D04B498D3A2DDA 2 1. -B recover-query.boc
...
(Saved to file wallet-query.boc)

Обратите внимание, что это сообщение имеет небольшую стоимость (один грамм) только для оплаты пересылки и обработки сообщения. Если вы укажете значение, равное нулю, сообщение не будет обработано интеллектуальным контрактом о выборах (сообщение с точно нулевым значением практически бесполезно в контексте цепочки блоков TON).

Как только wallet-query.boc будет готов, вы можете отправить его из Lite Client:

$ liteclient -C <config> -c 'sendfile wallet-query.boc'

Если вы все сделали правильно (в частности, указали правильный seqno вашего кошелька вместо «2» в приведенном выше примере), вы получите сообщение из смарт-контракта для избирателей, содержащее изменение от небольшого значения, которое вы отправили с вашим запросом (1. Грамм в этом примере) плюс восстановленная часть вашей ставки и бонусы.


7. Участие в следующих выборах

Обратите внимание, что даже до истечения срока действия группы валидаторов, в которую входит ваш избранный валидатор, будут объявлены новые выборы в следующую группу валидаторов. Возможно, вы захотите принять в них участие. Для этого вы можете использовать тот же валидатор, но вы должны сгенерировать новый ключ валидатора и новый адрес ADNL. Вам также нужно будет сделать новую ставку до того, как ваша предыдущая ставка будет возвращена (поскольку ваша предыдущая ставка будет разморажена и возвращена только через некоторое время после того, как станет активной следующая группа валидаторов), поэтому нет смысла ставить больше половины ставки ваших грамм.
 
Сверху