Три счётчика и состояния после создания предложения
Поле или слойЧто меняетсяЧто не меняется
Safe nonceПосле execTransaction, который не откатился целиком; возможны ExecutionSuccess и ExecutionFailureОт подписи, delete или внешней транзакции с reverted receipt
EOA nonce исполнителяКогда внешний аккаунт отправляет Ethereum-транзакциюОт места предложения внутри очереди Safe
Transaction ServiceПредложения, подтверждения и видимость off-chainСостояние и nonce контракта без on-chain исполнения
Три счётчика и состояния после создания предложения
Поле или слой
Safe nonce
Что меняется
После execTransaction, который не откатился целиком; возможны ExecutionSuccess и ExecutionFailure
Что не меняется
От подписи, delete или внешней транзакции с reverted receipt
Поле или слой
EOA nonce исполнителя
Что меняется
Когда внешний аккаунт отправляет Ethereum-транзакцию
Что не меняется
От места предложения внутри очереди Safe
Поле или слой
Transaction Service
Что меняется
Предложения, подтверждения и видимость off-chain
Что не меняется
Состояние и nonce контракта без on-chain исполнения

Safe nonce принадлежит контракту, а не владельцу

В обычном multisig несколько владельцев подтверждают один Safe transaction hash. В этот hash входит Safe nonce — порядковое значение самого смарт-аккаунта. Два предложения с одним Safe nonce конфликтуют: после принятого сетью execTransaction без полного revert текущий nonce контракта увеличится, и второе уже не сможет пройти с прежним значением. Подпись владельца подтверждает конкретный набор полей, но сама по себе очередь не продвигает.

EOA nonce — счётчик внешнего аккаунта, который в итоге отправляет вызов execTransaction и платит network fee. Один владелец может собрать подписи, а другой — отправить on-chain вызов; его EOA nonce не обязан совпадать с Safe nonce. Поэтому ошибка pending или replacement у внешней Ethereum-транзакции диагностируется отдельно как проблема EOA nonce, а не как перестановка очереди Safe.

Удалить предложение и отклонить транзакцию — разные операции

Transaction Service хранит предложенные транзакции и собирает подтверждения off-chain, чтобы владельцы видели общий объект до отправки в сеть. Его delete endpoint удаляет неисполненное предложение при допустимой авторизации proposer или delegate. Это может убрать строку из интерфейса сервиса, но не создаёт Ethereum-транзакцию, не вызывает контракт и не расходует Safe nonce. Копия подписанных данных, сохранённая у другого участника, от этого не становится on-chain недействительной.

On-chain rejection — новая Safe-транзакция для того же nonce. Она проходит обычный порог подписи владельцев и должна быть исполнена в сети. После её исполнения контракт расходует этот nonce, поэтому прежнее предложение с тем же значением больше не соответствует текущей последовательности. Safe SDK называет такой объект rejection transaction; это не мгновенная кнопка и не бесплатное редактирование старой подписи.

Решение зависит от того, где нужно изменить состояние

Decision tool после проверки предложения
НаблюдениеДействиеОжидаемый результат
Предложение ошибочно, подписей нет, нужно убрать только из общей лентыАвторизованному proposer удалить его из Transaction ServiceЗапись исчезает off-chain; Safe nonce не меняется
Подписанное предложение нельзя оставлять исполнимымСогласовать и исполнить rejection transaction с тем же Safe nonceNonce расходуется on-chain; конфликтующее предложение инвалидируется
Есть две полезные транзакции с одним nonceОстановить исполнение и решить, какая должна победить; вторую пересоздать с актуальным nonceОдна операция исполняется, другая получает новый hash и новые подписи
Внешняя транзакция execTransaction pendingПроверить sender EOA, его nonce и replacement-механику сетиПосле receipt проверить Safe event и перечитать nonce; не судить по внутреннему действию
Decision tool после проверки предложения
Наблюдение
Предложение ошибочно, подписей нет, нужно убрать только из общей ленты
Действие
Авторизованному proposer удалить его из Transaction Service
Ожидаемый результат
Запись исчезает off-chain; Safe nonce не меняется
Наблюдение
Подписанное предложение нельзя оставлять исполнимым
Действие
Согласовать и исполнить rejection transaction с тем же Safe nonce
Ожидаемый результат
Nonce расходуется on-chain; конфликтующее предложение инвалидируется
Наблюдение
Есть две полезные транзакции с одним nonce
Действие
Остановить исполнение и решить, какая должна победить; вторую пересоздать с актуальным nonce
Ожидаемый результат
Одна операция исполняется, другая получает новый hash и новые подписи
Наблюдение
Внешняя транзакция execTransaction pending
Действие
Проверить sender EOA, его nonce и replacement-механику сети
Ожидаемый результат
После receipt проверить Safe event и перечитать nonce; не судить по внутреннему действию

Stop-сигналы

  • chain ID, Safe address или Safe nonce не совпадают с согласованным предложением;
  • интерфейс показывает delete, но не объясняет, off-chain это действие или on-chain transaction;
  • receipt показан как successful, но интерфейс скрывает событие ExecutionFailure и актуальный Safe nonce;
  • владельцам предлагают подписать новый hash без показа to, value, data, operation и nonce;
  • в очереди есть несколько конфликтующих объектов, а команда не выбрала единственный результат;
  • кто-то просит seed-фразу или private key якобы для отмены.

Для восстановления сохраните Safe address, network, текущий nonce из контракта, Safe transaction hash, полный payload, список подтверждений и hash внешней транзакции исполнения. После rejection или обычного execTransaction дождитесь receipt, найдите ExecutionSuccess либо ExecutionFailure и перечитайте on-chain nonce через независимый RPC. Только затем пересоздавайте следующие операции как новые предложения для смарт-аккаунта; старые подписи к другому nonce не переносятся автоматически.

Источники

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

  1. Safe Help — Reject and Delete Transactions Safe · Проверено 20 августа 2026 г. в 09:24 GMT+5
  2. Safe Docs — createRejectionTransaction Safe · Проверено 20 августа 2026 г. в 09:24 GMT+5
  3. Safe Docs — Transaction Service API Safe · Проверено 20 августа 2026 г. в 09:24 GMT+5
  4. Safe Docs — Delete Queued Multisig Transaction Safe · Проверено 20 августа 2026 г. в 09:24 GMT+5
  5. Safe Docs — getNonce Safe · Проверено 20 августа 2026 г. в 09:24 GMT+5
  6. ethereum.org — Transactions ethereum.org · Проверено 20 августа 2026 г. в 09:24 GMT+5
  7. Safe.sol — execTransaction source Safe · Проверено 20 августа 2026 г. в 10:00 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.