Один адрес, несколько записей в истории
Представьте архивную карточку аккаунта A. Публичный адрес остаётся тем же, а баланс и история продолжаются в одной записи; их значения могут меняться от раунда к раунду. После подтверждённого rekey меняется строка `auth-addr`. Каждый снимок связывайте с его фактическим подтверждённым раундом. Перед операцией стоит отдельно проверить, что именно подписывает кошелёк.
Не смешивайте два поля. `auth-addr` находится в состоянии аккаунта и показывает текущий адрес авторизации. У подписанной транзакции есть отдельное поле `AuthAddr`, закодированное как `sgnr`. Отправителем транзакции остаётся A. Если A назначил B, подписанная транзакция A заполняет `sgnr` адресом B. Когда A снова авторизует себя сам, `sgnr` надо опустить. Начиная с версии консенсуса v42 сеть отклоняет транзакцию, где `sgnr` присутствует и равен отправителю.
| Момент | Что записано у A | Кто подписывает следующую транзакцию |
|---|---|---|
| До rekey | `auth-addr` отсутствует | Исходный адрес A |
| После транзакции с `RekeyTo: B` | `auth-addr` равен B | Ключ, multisig или LogicSig адреса B |
| После следующего назначения C для A | `auth-addr` равен C | Адрес C; прежняя подпись B уже не подходит |
| После возврата A к исходному адресу | `auth-addr` снова отсутствует | Исходный адрес A |
- Момент
- До rekey
- Что записано у A
- `auth-addr` отсутствует
- Кто подписывает следующую транзакцию
- Исходный адрес A
- Момент
- После транзакции с `RekeyTo: B`
- Что записано у A
- `auth-addr` равен B
- Кто подписывает следующую транзакцию
- Ключ, multisig или LogicSig адреса B
- Момент
- После следующего назначения C для A
- Что записано у A
- `auth-addr` равен C
- Кто подписывает следующую транзакцию
- Адрес C; прежняя подпись B уже не подходит
- Момент
- После возврата A к исходному адресу
- Что записано у A
- `auth-addr` снова отсутствует
- Кто подписывает следующую транзакцию
- Исходный адрес A
Короткая проверка перед подписью
От адреса к нужному ключу
- 1Запишите сеть и полный адрес
MainNet, TestNet и LocalNet не взаимозаменяемы. Не берите сокращённый адрес из уведомления.
- 2Получите сведения об аккаунте
Запросите аккаунт у algod на свежем подтверждённом раунде. Indexer удобен для поиска истории, но состояние перед подписью перепроверьте через узел.
- 3Прочитайте `auth-addr`
Если поля нет, подписывает сам отправитель. Если оно заполнено, нужен указанный там способ подписи.
- 4Найдите запись об изменении
Отыщите последнюю подтверждённую транзакцию с `RekeyTo`, которая дала текущее значение. Сохраните её txID и раунд.
- 5Проверьте и подпишите
Сверьте отправителя A, получателя, сумму, комиссию, допустимые раунды, группу, `RekeyTo` и `CloseRemainderTo`. Кошелёк должен подписать транзакцию A текущим ключом авторизации, а не заменить её отправителя адресом B.
Если два RPC-адреса дают разные ответы, сравните раунды и дождитесь одного подтверждённого состояния. Такой разбор узлов и RPC помогает отличить задержку одного источника данных от настоящего изменения аккаунта.
Rekey не идёт по цепочке A → B → C
Допустим, A назначил B. Позже аккаунт B назначил C для собственных операций. Для A ничего не изменилось: валидатор по-прежнему ждёт подпись адреса B. Чтобы A начал принимать C, текущий ключ B должен отдельно подтвердить транзакцию A с `RekeyTo: C`. Смотрите запись самого A, а не запись аккаунта B.
Закрытие может вернуть полномочие исходному адресу
Для аккаунта после rekey поле `CloseRemainderTo` означает не только перевод остатка. Закрытие удаляет `auth-addr`, и право подписи возвращается исходному адресу. Если исходный ключ утрачен, команда может остаться без рабочего способа продолжить операции. Проверяйте это поле так же внимательно, как `RekeyTo`.
| Наблюдение | Вероятная причина | Что делать |
|---|---|---|
| Подпись старого ключа отклонена | `auth-addr` указывает на другой адрес | Не повторять подпись; заново прочитать аккаунт и выбрать текущий ключ |
| Кошелёк не принимает `authAddr` | Он не поддерживает подпись после rekey по ARC-1 | Использовать совместимый кошелёк; не импортировать seed-фразу на сайт |
| В истории есть rekey, но поле пусто | Поздний rekey назад, `CloseRemainderTo` или закрытие аккаунта | Найти последнее изменение и сверить его раунд |
| A → B, B → C | Ожидалась рекурсивная авторизация | Для A по-прежнему использовать B; при необходимости отдельно назначить C для A |
| Нет доступа к текущему `auth-addr` | Адрес указан ошибочно или ключ утрачен | Остановить новые операции: вернуть управление можно только через доступную текущую авторизацию |
- Наблюдение
- Подпись старого ключа отклонена
- Вероятная причина
- `auth-addr` указывает на другой адрес
- Что делать
- Не повторять подпись; заново прочитать аккаунт и выбрать текущий ключ
- Наблюдение
- Кошелёк не принимает `authAddr`
- Вероятная причина
- Он не поддерживает подпись после rekey по ARC-1
- Что делать
- Использовать совместимый кошелёк; не импортировать seed-фразу на сайт
- Наблюдение
- В истории есть rekey, но поле пусто
- Вероятная причина
- Поздний rekey назад, `CloseRemainderTo` или закрытие аккаунта
- Что делать
- Найти последнее изменение и сверить его раунд
- Наблюдение
- A → B, B → C
- Вероятная причина
- Ожидалась рекурсивная авторизация
- Что делать
- Для A по-прежнему использовать B; при необходимости отдельно назначить C для A
- Наблюдение
- Нет доступа к текущему `auth-addr`
- Вероятная причина
- Адрес указан ошибочно или ключ утрачен
- Что делать
- Остановить новые операции: вернуть управление можно только через доступную текущую авторизацию
Если аккаунт управляется несколькими людьми, заранее запишите порог подписей и запасной порядок действий. Само слово multisig не заменяет проверку текущего `auth-addr` и состава подписей.
После подтверждения сделайте последнюю запись в хронологии: сеть, адрес A, новый раунд, значение `auth-addr`, txID и нужное изменение баланса или приложения. Если результат надо передать другому человеку, оформите его как проверяемое доказательство перевода.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Algorand Developer Portal — Rekeying accounts Algorand Foundation · Проверено 25 августа 2026 г. в 00:12 GMT+5
- Algorand REST API — Account information Algorand Foundation · Проверено 25 августа 2026 г. в 00:12 GMT+5
- Algorand transaction reference — RekeyTo and signed AuthAddr Algorand Foundation · Проверено 25 августа 2026 г. в 00:12 GMT+5
- ARC-1 — Wallet Transaction Signing API Algorand Foundation · Проверено 25 августа 2026 г. в 00:12 GMT+5
