Инвентаризация начинается со всех ключей аккаунта

NEAR account может одновременно иметь несколько публичных ключей с разными permissions. Подключение dApp в интерфейсе не доказывает, что соответствующий FunctionCall key удалён, а выход с сайта не меняет on-chain state. Запросите список через RPC `query` с `request_type: view_access_key_list`, нужным `account_id` и `finality: final`; сохраните block hash/height ответа и полный массив keys.

Как читать каждый access key в final state
ПолеТочная трактовкаСтоп-сигнал
public_keyИдентификатор конкретного on-chain праваСокращённый ключ или только название dApp
permission: FullAccessМожет подписывать любые действия аккаунта, включая AddKey/DeleteKeyНеизвестный FullAccess нельзя считать обычной dApp-сессией
FunctionCall.receiver_idЕдинственный receiver transaction для этого ключаПохожее имя контракта или другая сеть
method_namesПустой массив разрешает любой method указанного receiver; непустой — только перечисленныеUI говорит read-only, а массив пуст
обычный FunctionCall, allowance: nullProtocol `None`: нет лимита обычного allowanceИнтерфейс показывает небольшой лимит, RPC — null
allowance: числовая строкаОставшийся budget в yoctoNEAR; `"0"` остаётся числом, а не доказанным NoneКлиент называет numeric zero unlimited без сериализационного доказательства
GasKeyFunctionCallОтдельные balance и num_nonces; allowance не является gas-key бюджетомКлиент показывает gas key как обычный FunctionCall
nonceПоследний использованный nonce этого ключаСтарый экспорт не описывает final state
Как читать каждый access key в final state
Поле
public_key
Точная трактовка
Идентификатор конкретного on-chain права
Стоп-сигнал
Сокращённый ключ или только название dApp
Поле
permission: FullAccess
Точная трактовка
Может подписывать любые действия аккаунта, включая AddKey/DeleteKey
Стоп-сигнал
Неизвестный FullAccess нельзя считать обычной dApp-сессией
Поле
FunctionCall.receiver_id
Точная трактовка
Единственный receiver transaction для этого ключа
Стоп-сигнал
Похожее имя контракта или другая сеть
Поле
method_names
Точная трактовка
Пустой массив разрешает любой method указанного receiver; непустой — только перечисленные
Стоп-сигнал
UI говорит read-only, а массив пуст
Поле
обычный FunctionCall, allowance: null
Точная трактовка
Protocol `None`: нет лимита обычного allowance
Стоп-сигнал
Интерфейс показывает небольшой лимит, RPC — null
Поле
allowance: числовая строка
Точная трактовка
Оставшийся budget в yoctoNEAR; `"0"` остаётся числом, а не доказанным None
Стоп-сигнал
Клиент называет numeric zero unlimited без сериализационного доказательства
Поле
GasKeyFunctionCall
Точная трактовка
Отдельные balance и num_nonces; allowance не является gas-key бюджетом
Стоп-сигнал
Клиент показывает gas key как обычный FunctionCall
Поле
nonce
Точная трактовка
Последний использованный nonce этого ключа
Стоп-сигнал
Старый экспорт не описывает final state

Проверяйте высоту и источник RPC так же, как при любой блокчейн-диагностике. Материал о том, как работает RPC, помогает отделить final state от lagging или ошибочно выбранной сети.

Receiver и methods ограничивают действие, allowance — расходы

Обычный FunctionCall key подписывает transaction с ровно одним FunctionCall, нулевым attached deposit, receiver, совпадающим с permission, и допустимым method name. Он не может напрямую выполнить Transfer, DeleteKey или добавить новый ключ. Но разрешённый method способен менять состояние и вызывать другие contracts из кода receiver, поэтому название метода и поведение точной версии контракта остаются частью риска.

Удаление подписывает FullAccess, а результат доказывает новый RPC state

Runbook точечного DeleteKey

  1. 1
    Зафиксировать исходный final state

    Сохраните account ID, network, RPC, final block, удаляемый public key и полный список остальных keys. Не работайте по одной строке из кошелька.

  2. 2
    Доказать surviving recovery path

    Проверьте, что вы контролируете другой FullAccess key либо документированный contract-based путь, который действительно может добавить ключ. Другой FunctionCall key сам по себе не подписывает DeleteKey и AddKey.

  3. 3
    Для gas key вывести предоплаченный остаток

    Зафиксируйте balance и num_nonces, затем авторизованным путём выполните `WithdrawFromGasKey` и дождитесь final state. DeleteKey сожжёт оставшийся balance и завершится ошибкой, если он больше 1 NEAR.

  4. 4
    Сформировать один exact DeleteKey

    Receiver transaction должен быть сам account, а payload — удаляемый полный public key. Подписывайте доверенным FullAccess через официальный wallet/CLI; не вставляйте private key или seed в сайт.

  5. 5
    Дождаться final результата

    Сохраните transaction hash и итог исполнения с финализированными receipts. Успешная подпись или optimistic UI ещё не доказывают удаление.

  6. 6
    Повторить полный inventory

    Новый `view_access_key_list` на `final` должен не содержать удалённый ключ и по-прежнему показывать ожидаемый recovery key. Отдельно проверьте, не осталось ли других ключей того же dApp.

Перед подписью DeleteKey прочитайте, что именно подписывает кошелёк. Если интерфейс предлагает несколько actions, другой receiver или добавление нового ключа в том же bundle, остановитесь и разберите exact transaction.

Последний ключ — граница между отзывом и блокировкой

Stop и recovery перед удалением
СостояниеРискБезопасное действие
Есть неизвестный FullAccessПолный контроль остаётся у другого ключаНе ограничиваться удалением dApp key; инвентаризировать происхождение и срочно ротировать контроль
Остаются только FunctionCall keysАккаунт не сможет обычным способом управлять keys или переводить NEARНе удалять текущий recovery key; сначала восстановить доказанный FullAccess path
Обычный allowance = nullКлюч не имеет обычного allowance ceilingОценить receiver/methods и необходимость DeleteKey
allowance = "0"Нельзя автоматически назвать unlimited; ключ может быть исчерпанПривязать к raw RPC и текущему nearcore, не к UI-ярлыку
Gas key хранит balanceDeleteKey сжигает остаток; свыше 1 NEAR удаление отклоняетсяСначала WithdrawFromGasKey и final-проверка balance
DeleteKey success, ключ всё ещё виденRPC lag, другая сеть или не тот public keyСверить final block и независимый endpoint; не повторять вслепую
Удалены все keys у contract accountВнешняя подпись больше невозможнаСчитать account locked; recovery существует только если его реально реализует contract
Stop и recovery перед удалением
Состояние
Есть неизвестный FullAccess
Риск
Полный контроль остаётся у другого ключа
Безопасное действие
Не ограничиваться удалением dApp key; инвентаризировать происхождение и срочно ротировать контроль
Состояние
Остаются только FunctionCall keys
Риск
Аккаунт не сможет обычным способом управлять keys или переводить NEAR
Безопасное действие
Не удалять текущий recovery key; сначала восстановить доказанный FullAccess path
Состояние
Обычный allowance = null
Риск
Ключ не имеет обычного allowance ceiling
Безопасное действие
Оценить receiver/methods и необходимость DeleteKey
Состояние
allowance = "0"
Риск
Нельзя автоматически назвать unlimited; ключ может быть исчерпан
Безопасное действие
Привязать к raw RPC и текущему nearcore, не к UI-ярлыку
Состояние
Gas key хранит balance
Риск
DeleteKey сжигает остаток; свыше 1 NEAR удаление отклоняется
Безопасное действие
Сначала WithdrawFromGasKey и final-проверка balance
Состояние
DeleteKey success, ключ всё ещё виден
Риск
RPC lag, другая сеть или не тот public key
Безопасное действие
Сверить final block и независимый endpoint; не повторять вслепую
Состояние
Удалены все keys у contract account
Риск
Внешняя подпись больше невозможна
Безопасное действие
Считать account locked; recovery существует только если его реально реализует contract

Программируемое восстановление не появляется автоматически. Как и у smart account, оно существует только в точной реализации: наличие contract code не доказывает, что контракт умеет добавить ключ после блокировки.

Источники

Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.

  1. NEAR Docs — Access Keys NEAR · Проверено 24 августа 2026 г. в 09:36 GMT+5
  2. NEAR Docs — API Libraries / Keys NEAR · Проверено 24 августа 2026 г. в 09:36 GMT+5
  3. nearcore 2.13.3 — AccessKey and FunctionCallPermission NEAR nearcore · Проверено 24 августа 2026 г. в 09:36 GMT+5
  4. nearcore 2.13.3 — FunctionCall allowance verifier NEAR nearcore · Проверено 24 августа 2026 г. в 09:36 GMT+5
  5. NEAR Nomicon — Function access keys in meta transactions NEAR · Проверено 24 августа 2026 г. в 09:36 GMT+5
  6. NEP-611 — Pending Transaction Queue and Gas Keys NEAR Protocol Specifications · Проверено 24 августа 2026 г. в 09:36 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.