> For the complete documentation index, see [llms.txt](https://lofingv.gitbook.io/namada-docs-ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lofingv.gitbook.io/namada-docs-ru/rukovodstvo-polzovatelya/prozrachnye-scheta/scheta-s-neskolkimi-podpisyami-na-namada.md).

# Счета с несколькими подписями на Namada

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

* Повышенная безопасность
* Возможность совместного использования кошельков
* Лучшие возможности восстановления.

По этой причине все счета в Namada по умолчанию являются счетами с несколькими подписями.

### Инициализация мультиподписного счета

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

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

```rust
namadaw key gen \
--alias my-key1
```

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

```rust
namadaw key gen \
--alias my-key2
```

Также может быть сформирован implicit адрес:

```rust
namadaw address gen \
--alias my-address
```

Инициализация счетов на Namada осуществляется следующим способом:

**Счет без мультисигмы (с одной подписью)**

```rust
namadac init-account \
--alias my-multisig-alias \
--public-keys my-key1 \
--signing-keys my-key1
```

Мультисиг счет (не менее 2 подписывающих лиц)

```rust
namadac init-account \
--alias my-multisig-alias \
--public-keys my-key1,my-key2 \
--signing-keys my-key1,my-key2 \
--threshold 2
```

### Представление транзакции с несколькими подписями

Для того чтобы отправить транзакцию с несколькими подписями, необходимо сначала создать офлайн-транзакцию.

#### Построение автономной транзакции

<mark style="color:orange;">Для версии</mark> <mark style="color:orange;">`v0.23.0`</mark> <mark style="color:orange;">существуют определенные ограничения на построение автономных транзакций. Пожалуйста, будьте внимательны к возможным ошибкам.</mark>

Аргумент `--dump-tx` позволяет пользователю сделать это. Необходимо указать папку, в которую будет сбрасываться транзакция.

```rust
mkdir tx_dumps
```

Это можно сделать следующим образом:

```rust
namadac transfer \
--source my-multisig-alias \
--target some-established-account-alias \
--token NAM \
--amount 100 \
--signing-keys my-key1 \
--dump-tx \
--output-folder-path tx_dumps
```

Это означает, что транзакция построена и готова к подписанию.

В указанной папке будет создан файл `.tx`. Этот файл содержит шестнадцатеричное представление байтов транзакции. Этот файл может быть использован для подписания транзакции.

#### Подписание транзакции

Следующий шаг - подписание транзакции. `my-key1` может подписать транзакцию следующим способом:

```rust
namadac sign-tx \
--tx-path "<path-to-file>" \
--signing-keys my-key1 \
--owner my-multisig-alias
```

<mark style="color:orange;">Обратите внимание, что на этом этапе транзакцию может подписать любое количество ключей</mark> <mark style="color:orange;">`--signing-keys`</mark><mark style="color:orange;">. В результате будет получено несколько подписей, которые могут быть использованы для отправки транзакции.</mark>

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

Сохраним его в качестве псевдонима:

{% code overflow="wrap" %}

```rust
export SIGNATURE_ONE="offline_signature_FB7246E3FC43F59D8AEEC234EBFDB9DF1AC9BB7B14E536D05A7E2617CA41D4CD_0.tx"
```

{% endcode %}

Убедитесь, что транзакция подписана не менее чем k из n ключей, где k - минимальное количество подписей, необходимое для отправки транзакции, а n - общее количество ключей. В данном примере k=2 и n=2.

Затем допустим, что в результате подписания создается еще одна подпись, которую мы сохраняем в псевдониме `SIGNATURE_TWO`.

#### Отправка транзакции

Последним шагом является отправка транзакции. Это можно сделать с помощью следующего метода:

{% code overflow="wrap" %}

```rust
namadac tx \
--tx-path "tx_dumps/a45ef98a817290d6fc0efbd480bf66647ea8061aee1628ce09b4af4f4eeed1c2.tx" \
--signatures $SIGNATURE_ONE \
--signatures $SIGNATURE_TWO \
--owner my-multisig-alias \
--gas-payer my-key1
```

{% endcode %}

<mark style="color:orange;">Обратите внимание на отсутствие запятых в аргументе</mark> <mark style="color:orange;">`--signatures`</mark><mark style="color:orange;">. Это связано с тем, что аргумент представляет собой список файлов, а не список подписей. Также обратите внимание на папку</mark> <mark style="color:orange;">`tx_dumps`</mark><mark style="color:orange;">. Это папка, в которую была сброшена транзакция, как указано в параметре</mark> <mark style="color:orange;">`--output-folder-path`</mark> <mark style="color:orange;">на предыдущем шаге.</mark>

### Изменение порога мультисигмы

Существует возможность изменить порог мультиподписи счета. Это можно сделать следующим образом:

```rust
/namadac update-account \
--address my-multisig-address \
--threshold 1 \
--signing-keys my-key1,my-key2
```

Проверить правильность обновления порога можно, выполнив команду:

```rust
namadac query-account \
--owner my-multisig-address
```

В результате чего будет получен порог 1, а также два открытых ключа.

### Изменение открытых ключей учетной записи multisig

Существует возможность изменить открытые ключи учетной записи multisig. Это можно сделать следующим образом:

```rust
namadac update-account \
--address my-multisig-address \
--public-keys my-key3,my-key4,my-key5 \
--signing-keys my-key1,my-key2
```

Это приведет к изменению открытых ключей multisig-аккаунта с `my-key1` и `my-key2` на ключи `my-key3`, `my-key4` и `my-key5` (при условии, что они существуют в кошельке).

Публичные ключи, указанные в аргументе `--public-keys`, станут новыми подписантами мультисигмы. Список должен представлять собой список открытых ключей, разделенных запятыми и не содержащий пробелов. В списке должно быть не менее 1 открытого ключа, а длина списка должна быть не меньше порога счета multisig.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lofingv.gitbook.io/namada-docs-ru/rukovodstvo-polzovatelya/prozrachnye-scheta/scheta-s-neskolkimi-podpisyami-na-namada.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
