Инструменты пользователя

Инструменты сайта


multisignature_wallet_management_in_tonos-cli

Содержание

Управление кошельком с мультиподписью в TONOS-CLI

1. Вступление

Кошелек с мультиподписью – это криптокошелек в блокчейне, который поддерживает множество владельцев (хранителей), которые авторизованы к управлению кошельком. Вы можете использовать утилиту TONOS-CLI для создания и управления кошельков с мультиподписью. Доступные действия в TONOS-CLI включают следующее:

  • Настройка среды TONOS-CLI
  • Создание ключевой фразы, приватные/публичных ключей
  • Создание и разворачивание (deploy) кошелька
  • Проверка баланса кошелька
  • Создание транзакций (переводов), ожидающих подтверждения и их подтверждение
  • Создание транзакций, не требующих отдельного подтверждения

Словарь

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

Адрес кошелька – уникальный адрес кошелька в блокчейне. Он точно определяет кошелек, и необходим для выполнения любых действий с кошельком. Сам по себе он не предоставляет никому доступ к средствам кошелька.

Хранитель кошелька – авторизованный владелец (собственник) кошелька. Имеет приватный ключ и соответствующую ключевую фразу, которая запрашивается, для совершения любых изменений в статусе кошелька или передвижения его средств. Кошелек может иметь нескольких хранителей.

Приватный ключ хранителя – уникальный криптографический ключ, принадлежащий хранителю кошелька, который авторизует доступ к кошельку. Должен храниться в секрете.

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

Публичный ключ хранителя – публичный ключ, формирующий криптографическую пару с приватным ключом хранителя. Не является секретным и может быть свободно передан кому-либо.

Валидатор – субъект, выполняющий проверку новых блоков в блокчейне через систему Proof-of-Stake (Доказательство Доли Владения). Требует наличия кошелька с мультиподписью для своей работы.

2. Установка TONOS-CLI

2.1. Установка TONOS-CLI

Скомпилированная утилита установки в Linux

Создайте папку. Загрузите файл .tar.gz из самого свежего релиза отсюда: https://github.com/tonlabs/tonos-cli/releases в эту папку. Распакуйте полученный архив командой:

tar -xvf ./tonos-cli_v0.1.3_linux.tar.gz

Сборка утилиты из исходников на Linux и Mac OS

Установите Cargo: https://github.com/rust-lang/cargo#compiling-from-source

Соберите утилиту TONOS-CLI из исходников:

git clone https://github.com/tonlabs/tonos-cli.git\\ cd tonos-cli\\ cargo update\\ cargo build --release\\ cd target/release

Исполняемый файл TONOS-CLI будет создан в папке tonos-cli/target/release. Создайте другую папку. Для дальнейшего использования скопируйте полученный исполняемый файл tonos-cli в новую папку, которую вы создали.

Сборка из исходников на Windows

Установите Cargo: https://github.com/rust-lang/cargo#compiling-from-source

Соберите утилиту TONOS-CLI из исходников:

> git clone https://github.com/tonlabs/tonos-cli.git\\ > cd tonos-cli\\ > cargo update\\ > cargo build --release\\ > cd target/release

Исполняемый файл TONOS-CLI будет создан в папке tonos-cli/target/release. Создайте другую папку. Для дальнейшего использования скопируйте полученный исполняемый файл tonos-cli в новую папку, которую вы создали.

Примечание о синтаксисе командной строки Windows

Во время использования командной строки Windows используйте следующий синтаксис для всех команд TONOS-CLI:

1. Никогда не используйте символы ./ до tonos-cli:

> tonos-cli <command_name> <options>

2. Для всех команд с вложенными кавычками, внешние одиночные кавычки должны быть заменены на двойные, а внутренние двойные кавычки должны быть предварены /. Пример:

> tonos-cli deploy SafeMultisigWallet.tvc "{\"owners\":[\"0x723b2f0fa217cd10fe21326634e66106678f15d5a584babe4f576dffe9dcbb1b\",\"0x127e3ca223ad429ddaa053a39fecd21131df173bb459a4438592493245b695a3\",\"0xc2dd3682ffa9df97a968bef90b63da90fc92b22163f558b63cb7e52bfcd51bbb\"],\"reqConfirms\":2}" --abi SafeMultisigWallet.abi.json --sign deploy.keys.json

Безопасная среда Tails OS

Для обеспечения максимальной безопасности во время управления кошельком вы можете использовать Tails OS для всех действий, которые могут производиться в оффлайн режиме. Следуйте всем шагам в документе Создание безопасной среды с Tails OS и TONOS-CLI, для установки TONOS-CLI.

Вы можете выполнять следующие действия полностью оффлайн (находясь в режиме оффлайн):

  • Генерировать ключевые фразы и ключи владельцев
  • Подготовить новую оффлайн-транзакцию
  • Подготовить подтверждение оффлайн-транзакции

2.2 Загрузка файлов контракта

Загрузите скомпилированные файлы .abi.json и .tvc контрактов с мультиподписью из https://github.com/tonlabs/ton-labs-contracts/tree/master/solidity

Выберите версию контракта:

  • SafeMultisig – базовый кошелек с мультиподписью, не позволяет модификацию кода контракта. Требуется, если вы используете скрипты валидатора.

прямая ссылка на загрузку SafeMultisigWallet.abi.json:

https://raw.githubusercontent.com/tonlabs/ton-labs-contracts/master/solidity/safemultisig/SafeMultisigWallet.abi.json

прямая ссылка на загрузку SafeMultisigWallet.tvc:

https://github.com/tonlabs/ton-labs-contracts/raw/master/solidity/safemultisig/SafeMultisigWallet.tvc

  • SetcodeMultising – более продвинутый кошелек с мультиподписью. Эта версия требуется, чтобы создать кошелек, которым можно управлять в TON Surf:

прямая ссылка на загрузку SetcodeMultisigWallet.abi.json:

https://raw.githubusercontent.com/tonlabs/ton-labs-contracts/master/solidity/setcodemultisig/SetcodeMultisigWallet.abi.json

прямая ссылка на загрузку SetcodeMultisigWallet.tvc:

https://github.com/tonlabs/ton-labs-contracts/raw/master/solidity/setcodemultisig/SetcodeMultisigWallet.tvc

Поместите оба файла в папку, содержащую исполняемый файл tonos-cli.

Замечание: Убедитесь, что вы загрузили RAW-версии файлов. Распространенной ошибкой в процессе загрузки со страницы проекта github вручную является сохранение страницы с перенаправлением вместо RAW файла.

2.3 Конфигурация среды TONOS-CLI

1. (Опционально, Linux/Mac OS) Поместите tonos-cli в переменную окружения PATH:

export PATH="<tonos_folder_path>:$PATH"

Если вы пропустите этот шаг, убедитесь, что вы запустили утилиту из папки, в которой она находится:

./tonos-cli <command> <options>

2. Используйте следующую команду, чтобы указать рабочую сеть:

tonos-cli config --url <https://network_url>

Заметка: Убедитесь, что URL указан в следующем формате: https://net.ton.dev (без слеша в конце).

Рабочие сети, доступные в настоящее время:

https://net.ton.dev – «песочница» разработчиков для тестирования (тестовая сеть).

https://main.ton.dev – основная сеть Free TON, в настоящее время в режиме бета-теста.

Вам достаточно настроить рабочую сеть только один раз перед использованием утилиты. Файл конфигурации tonlabs-cli.conf.json будет создан в папке утилиты и URL текущей сети будет указан там. Во время последующих запусков утилита будет использовать этот файл, чтобы задать рабочую сеть для подключения.

Заметка: По умолчанию TONOS-CLI соединяется с сетью net.ton.dev

Заметка: Всегда запускайте утилиту tonos-cli только из папки, где размещен файл tonlabs-cli.conf.json

3. Создание Кошелька

Для создания кошелька необходимо выполнить следующие действия:

  1. Создать ключевую фразу кошелька
  2. Сгенерировать файл ключевой пары с приватными/публичными ключами кошелька, которые основаны на ключевой фразе кошелька
  3. Сгенерировать адрес кошелька, который основанн на его ключевой фразе
  4. Отправить некоторое количество токенов на кошелек по его адресу
  5. Развернуть кошелек (установить его владельцев)

Все эти шаги детально разобраны в этой секции.

3.1 Создание ключевой фразы и открытых ключей для всех владельцев

3.1.1 Создание ключевой фразы кошелька

Чтобы сгенерировать ключевую фразу, введите следующую команду:

tonos-cli genphrase

В консоли отобразится сгенерированная ключевая фраза:

Заметка: Ключевые фразы нужно создавать для каждого владельца кошелька с мультиподписью.
Ключевая фраза обеспечивает доступ к кошельку с мультиподписью. В случае потери, владелец не сможет управлять кошельком. Ключевая фраза уникальна для каждого владельца и должна храниться в секрете.

3.1.2 Сгенерируйте публичный ключ

Чтобы сгенерировать открытый ключ, введите следующую команду, используя сгенерированную ранее ключевую фразу в кавычках:

tonos-cli genpubkey "dizzy modify exotic daring gloom rival pipe disagree again film neck fuel"

Скопируйте сгенерированный код из консоли или отсканируйте QR код при помощи смартфона и отправьте его любому из хранителей, ответственному за развертывание кошелька с мультиподписью.

Заметка: Публичный ключ должен также быть сгенерирован для каждого хранителя. Публичный ключ - не секретный, и может быть свободно передан любому.

3.2 Создание файла с ключевой парой для развертывания кошелька

Любой хранитель, знающий открытые ключи других хранителей, может развернуть кошелек с мультиподписью в блокчейне. Чтобы создать файл с ключевой парой из ключевой фразы, сгенерированной в шаге 3.1.1, используйте следующую команду:

tonos-cli getkeypair <deploy.keys.json> "<seed_phrase>"

<deploy.keys.json> - файл, куда будет записана ключевая пара.

Утилита генерирует файл, который содержит ключевую пару, полученную из ключевой фразы.

3.3. Создание адреса кошелька

Используйте полученный ранее файл с ключевой парой для получения адреса:

tonos-cli genaddr <MultisigWallet.tvc> <MultisigWallet.abi.json> --setkey <deploy.keys.json> --wc <workchain_id>

<MultisigWallet.tvc> - этот SafeMultisigWallet.tvc или SetcodeMultisigWallet.tvc в зависимости от контракта кошелька, выбранного в пункте 2.2.

<MultisigWallet.abi.json> - этот SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта, выбранного в пункте 2.2.

<deploy.keys.json> - файл, из которого считывается ключевая пара.

--wc <workchain_id> - (опционально) идентификатор рабочей цепочки, в которой будет развернут кошелек (-1 для masterchain, 0 для basechain). По умолчанию это значение установлено в 0.

Заметка: Комиссии в Masterchain значительно выше, но для кошельков валидаторов требуется использование Masterchain. Убедитесь, что в начале идентификатора кошелька установлено значение ID рабочей цепочки -1: --wc -1. Basechain же лучше всего подходит для пользовательских кошельков.

Утилита покажет полученный адрес кошелька с мультиподписью (Raw_address)

Заметка: Адрес кошелька необходим для любых взаимодействий с кошельком. Он должен быть предоставлен всем хранителям кошелька.

3.4 Отправка токенов на новый адрес из другого кошелька

Используйте следующую команду, чтобы создать транзакцию из другого существующего кошелька:

tonos-cli call <source_address> submitTransaction '{"dest":"<raw_address>","value":<nanotokens>,"bounce":false,"allBalance":false,"payload":""}' --abi <MultisigWallet.abi.json> --sign "<source_seed>"

<source_address> - адрес кошелька, с которого отправляются средства.

<source_seed> - ключевая фраза кошелька, с которого отправляются средства.

"dest": <raw_address> - адрес кошелька получателя, сгенерированный на шаге 3.3.
Пример:
"0:f22e02a1240dd4b5201f8740c38f2baf5afac3cedf8f97f3bd7cbaf23c7261e3"
"value": - количество токенов для передачи в нанотокенах (Пример: «value»:10000000000 устанавливает перевод 10 токенов).

"bounce" - используйте false для передачи средств на несуществующий контракт кошелька для его создания.

"allBalance" – используйте truevalue = 0) если Вам нужно отправить все средства с кошелька. Не указывайте для этого значение, равное остатку баланса для отправки всех оставшихся токенов - такая транзакция завершится неудачно, поскольку совместно со значением value так же вычитаются комиссии за хранение и транзакцию, поэтому оставшийся остаток будет меньше value.

"payload" -используйте значение «» для простого перевода

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта кошелька, который вы выбрали в шаге 2.2.

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

tonos-cli call <source_address> confirmTransaction '{"transactionId":"<id>"}' --abi <MultisigWallet.abi.json> --sign "<source_seed>"

<source_address> - адрес кошелька, с которого отправляются средства.

<source_seed> - ключевая фраза кошелька, с которого отправляются средства.

transactionId – идентификатор транзакции перевода токенов на новый кошелек.

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта кошелька, который вы выбрали в шаге 2.2.

Убедитесь, что новый кошелек был создан в блокчейне и имеет статус «Uninit».

tonos-cli account <multisig_address>

<multisig_address> - адрес кошелька, сгенерированный на шаге 3.3.

3.5. Развертывание кошелька (установка его владельцев)

3.5.1. Развернуть кошелек к блокчейне

Используйте следующую команду:

tonos-cli deploy <MultisigWallet.tvc> '{"owners":["0x...", ...],"reqConfirms":N}' --abi <MultisigWallet.abi.json> --sign <deploy_seed_or_keyfile> --wc <workchain_id>

Параметры:

<MultisigWallet.tvc> - SafeMultisigWallet.tvc или SetcodeMultisigWallet.tvc, в зависимости от выбранного вами контракта в шаге 2.2.

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json, в зависимости от выбранного вами контракта в шаге 2.2.

owners – массив открытых ключей хранителей, сгенерированных всеми хранителями кошелька в шаге 3.1.2 в численном формате uint256. Убедитесь, что все открытые ключи заключены в кавычки и начинаются с 0х…

Пример: "owners":["0x8868adbf012ebc349ced852fdcf5b9d55d1873a68250fae1be609286ddb962582", "0xa0e16ccff0c7bf4f29422b33ec1c9187200e9bd949bb2dd4c7841f5009d50778a"]

reqConfirms - количество подписей хранителей, необходимых для подтверждения транзакции (0 < N ≤ число хранителей).

--wc <workchain_id> - (опционально) идентификатор рабочей сети, в которой будет развернут кошелек (-1 для masterchain, 0 для basechain). По умолчанию это значение установлено в 0.

Заметка: Сборы (комиссии) в Masterchain значительно выше, но для кошельков валидаторов требуется именно Masterchain. Убедитесь, что для идентификатора рабочего кошелька валидатора установлено значение ID рабочей цепочки -1: –wc -1. С другой стороны Basechain лучше всего подходит для кошельков простых пользователей.

<deploy_seed_or_keyfile> - может быть ключевой фразой, использованной на шаге 3.2 для создания файла пары ключей развертывания, или самим файлом deploy.keys.json. Если используется ключевая фраза - заключите ее в двойные кавычки.

Пример:

--sign "flip uncover dish sense hazard smile gun mom vehicle chapter order enact"

Или:

--sign deploy.keys.json

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

Заметка: Из соображений безопасности после того как кошелек развернут вы не сможете добавить или удалить оттуда хранителей. Если вы хотите изменить список хранителей, Вам нужно создать новый кошелек, перевести туда все средства, и установить для него новый список хранителей.

3.5.2. Убедитесь, что кошелек активен

Снова проверьте новый статус кошелька. Сейчас он должен быть Активен (Active).

tonos-cli account <multisig_address>

3.5.3. Запросите список публичных ключей хранителей из блокчейна

Убедитесь, что они соответствуют ключам, которые вы установили во время развертывания.

tonos-cli run <multisig_address> getCustodians {} --abi SafeMultisigWallet.abi.json

Теперь кошелек развернут, и владельцы публичных ключей из заданного списка имеют доступ к нему.

4. Управление кошельком

4.1. Выберите сеть блокчейн

Рабочие сети, доступные в настоящее время:

https://net.ton.dev – «песочница» разработчиков для тестирования (тестовая сеть). https://main.ton.dev – основная сеть Free TON, в настоящее время в режиме бета-теста.

Используйте следующую команду для переключения на любую из этих сетей:

tonos-cli config --url https://network_url

Заметка: Убедитесь, что URL указан в следующем формате: https://net.ton.dev (без слеша в конце).

Вам достаточно настроить рабочую сеть только один раз перед использованием утилиты.

Файл конфигурации .json будет создан в папке утилиты TONOS-CLI и URL текущей сети будет указан там. Во время последующих запусков утилита будет использовать этот файл, чтобы задать рабочую сеть для подключения.

4.2 Конвертация токенов в нанотокены

Суммы переводов в мультиподписанных транзакциях указаны в нанотокенах. Чтобы преобразовать токены в нанокотены, используйте следующую команду:

tonos-cli convert tokens <amount>

4.3. Проверка баланса и статуса кошелька

4.3.1. Проверка баланса кошелька и его статуса в TONOS-CLI

Вы можете использовать следующую команду, чтобы проверить текущий статус и баланс Вашего кошелька:

tonos-cli account <multisig_address>

Отображается статус кошелька:

  • Not found – если кошелек не существует
  • Uninit – кошелек был создан, но код его контракта не был развернут
  • Active – кошелек существует, имеется код и данные контракта

Также отображается баланс кошелька, время последней транзакции и блок данных контракта.

4.3.2. Проверьте баланс кошелька и его статус в блокчейн-обозревателе

Подробное состояние учетной записи можно посмотреть в блокчейн-обозревателе на ton.live.

Выберите сеть, в которой развернут кошелек, и введите raw адрес кошелька в поле поиска:

Будет показан статус аккаунта, баланс, сообщения и история транзакций для данного аккаунта.

4.4. Список публичных ключей хранителей

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

tonos-cli run <multisig_address> getCustodians {} --abi SafeMultisigWallet.abi.json

4.5. Список транзакций, ожидающих подтверждения

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

tonos-cli run <multisig_address> getTransactions {} --abi SafeMultisigWallet.abi.json

На скриншоте выше показан пример пустого списка переводов. В настоящее время нет транзакций, требующих подтверждения.

Если есть транзакции, требующие подтверждения, они будут отображены:

4.6. Создание транзакции онлайн

Используйте следующую команду, чтобы создать новую транзакцию:

tonos-cli call <multisig_address> submitTransaction '{"dest":"raw_address","value":<nanotokens>,"bounce":true,"allBalance":false,"payload":""}' --abi <MultisigWallet.abi.json> --sign <seed_or_keyfile>

"dest" - raw-адрес назначения смарт-контракта кошелька. Например: "0:f22e02a1240dd4b5201f8740c38f2baf5afac3cedf8f97f3bd7cbaf23c7261e3"

"value": - количество токенов для передачи в нанотокенах (Пример: "value":10000000000 устанавливает перевод 10 токенов).

"bounce" - используйте false для передачи средств на несуществующий контракт кошелька для его создания. Используйте true для передачи средств на активный контракт.

"allBalance" – используйте truevalue = 0) если Вам нужно отправить сразу все средства с кошелька. Не указывайте для этого значение, равное остатку баланса для отправки всех оставшихся токенов - такая транзакция завершится неудачно, поскольку совместно со значением value так же вычитаются комиссии за хранение и транзакцию, поэтому оставшийся остаток будет меньше value.

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта кошелька, который вы выбрали в шаге 2.2.

"payload" - используйте значение "" для простого перевода. В противном случае payload используется как тело исходящего внутреннего сообщения.

<seed_or_keyfile> - может быть ключевой фразой или файлом с ключевой парой. Если используется ключевая фраза, заключите ее в двойные кавычки.

Пример:

--sign "flip uncover dish sense hazard smile gun mom vehicle chapter order enact"

Или:

--sign deploy.keys.json

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

Заметка: Для максимальной безопасности Вы также можете создать сообщение о транзакции на компьютере без подключения к Интернету в автономном режиме.

4.7. Создание подтверждения транзакции онлайн

Как только один из хранителей создает новую транзакцию в блокчейне, он должен получить необходимое количество подтверждений от других хранителей.

Для подтверждения транзакции используйте следующую команду:

tonos-cli call <multisig_address> confirmTransaction '{"transactionId":"<id>"}' --abi <MultisigWallet.abi.json> --sign <seed_or_keyfile>

transactionId – идентификатор транзакции, который можно получить у хранителя, который ее создал, или запросить список транзакций, ожидающих подтверждения, из кошелька с мультиподписью.

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта, выбранного в пункте 2.2.

<seed_or_keyfile> - может быть ключевой фразой или файлом с ключевой парой. Если используется ключевая фраза, заключите ее в двойные кавычки.

Пример:

--sign "flip uncover dish sense hazard smile gun mom vehicle chapter order enact"

Или:

--sign deploy.keys.json

Заметка: Если у кошелька всего один хранитель, или если количество подтверждений, необходимых для выполнения транзакции, было установлено равным 1, то это действие не требуется. Транзакция будет подтверждена автоматически.

Заметка: Для максимальной безопасности Вы также можете создать сообщение о транзакции на компьютере без подключения к Интернету в автономном режиме.

4.8. Создание новой транзакции оффлайн

Подключение к Интернету не требуется для создания подписанного сообщения о транзакции. Для этого используйте следующую команду:

tonos-cli message <multisig_address> submitTransaction '{"dest":"raw_address","value":<nanotokens>,"bounce":true,"allBalance":false,"payload":""}' --abi <MultisigWallet.abi.json> --sign <seed_or_keyfile> --lifetime 3600

"dest" - raw-адрес назначения смарт-контракта кошелька. Например: "0:f22e02a1240dd4b5201f8740c38f2baf5afac3cedf8f97f3bd7cbaf23c7261e3"

"value": - количество токенов для передачи в нанотокенах (Пример: "value":10000000000 устанавливает перевод 10 токенов).

"bounce" - используйте false для передачи средств на несуществующий контракт кошелька для его создания. Используйте true для передачи средств на активный контракт.

"allBalance" – используйте truevalue = 0) если вам нужно отправить все средства с кошелька. Не указывайте для этого значение, равное остатку баланса для отправки всех оставшихся токенов - такая транзакция завершится неудачно, поскольку совместно со значением value так же вычитаются комиссии за хранение и транзакцию, поэтому оставшийся остаток будет меньше value.

"payload" - используйте значение "" для простого перевода. В противном случае payload используется как тело исходящего внутреннего сообщения.

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта кошелька, который вы выбрали в шаге 2.2.

<seed_or_keyfile> - может быть ключевой фразой или файлом с ключевой парой. Если используется ключевая фраза, заключите ее в двойные кавычки.

Пример:

--sign "flip uncover dish sense hazard smile gun mom vehicle chapter order enact"

Или:

--sign deploy.keys.json

lifetime – время жизни сообщения в секундах. По истечении этого времени сообщение не будет принято контрактом.

Утилита TONOS-CLI отображает зашифрованный текст транзакции и QR-код, который содержит значение submitTransaction.

Скопируйте текст сообщения или отсканируйте QR-код и отправьте сообщение онлайн.

4.9. Создание подтверждения транзакции оффлайн

Как только один из хранителей создает новую транзакцию в блокчейне, он должен получить необходимое количество подтверждений от других хранителей.

Чтобы создать подтверждающее сообщение в автономном режиме, используйте следующую команду:

tonos-cli message <multisig_address> confirmTransaction '{"transactionId":"<id>"}' --abi <MultisigWallet.abi.json> --sign "<seed_phrase>" --lifetime 600

transactionId – идентификатор транзакции, который можно получить у хранителя, который ее создал, или запросить список транзакций, ожидающих подтверждения, из кошелька с мультиподписью.

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта, выбранного в пункте 2.2.

<seed_or_keyfile> - может быть ключевой фразой или файлом с ключевой парой. Если используется ключевая фраза, заключите ее в двойные кавычки.

Пример:

--sign "flip uncover dish sense hazard smile gun mom vehicle chapter order enact"

Или:

--sign deploy.keys.json

lifetime – время жизни сообщения в секундах. По истечении этого времени сообщение не будет принято контрактом.

Утилита TONOS-CLI отображает зашифрованный текст транзакции и QR-код, который содержит значение submitTransaction.

Скопируйте текст сообщения или отсканируйте QR-код и отправьте сообщение онлайн.

4.10. Трансляция ранее сгенерированного сообщения

Используйте следующую команду для рассылки любого ранее созданного сообщения (сообщения о транзакции или сообщения с подтверждением):

tonos-cli send --abi <MultisigWallet.abi.json> "message"

<MultisigWallet.abi.json> - SafeMultisigWallet.abi.json или SetcodeMultisigWallet.abi.json в зависимости от контракта, выбранного в пункте 2.2.

Message – содержимое сообщения, сгенерированного утилитой TONOS-CLI при создании сообщения. Оно должно быть заключено в двойные кавычки.

В консоли отобразится результат создания новой транзакции:

Result: {
"transId": "0x5ea98b30fb3f0041"
}

Чтобы получить подтверждение от необходимого количества других хранителей кошельков - отправьте им этот идентификатор транзакции.

multisignature_wallet_management_in_tonos-cli.txt · Последнее изменение: 2020/06/05 16:01 — 94.179.218.122