waves_logo Docs
  • Будьте в курсе
    Будьте в курсе
  • Release notes
    Release notes
  • Release notes (Node Go)
    Release notes (Node Go)
  • MetaMask
    MetaMask
  • Сохранение транзакций с неудачным результатом выполнения скрипта
    Сохранение транзакций с неудачным результатом выполнения скрипта
  • Обновления в документации
    Обновления в документации
      • English
      • Русский
      On this page
        • Node API
        • Библиотеки
        • waves-transactions
        • node-api JS
        • Waves Explorer
        • Waves IDE
        • Surfboard
        • Dapp Ui (waves-dapp.com)
      waves_logo Docs

          # Сохранение транзакций с неудачным результатом выполнения скрипта (апрель 2020)

          Начиная с версии ноды 1.2.4, после активации фичи № 15 “Ride V4, VRF, Protobuf, Failed transactions” меняется порядок валидации транзакций:

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

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

          • Становится невозможной оплата комиссии за транзакцию вызова скрипта за счет средств, переведенных dApp-скриптом отправителю. Если баланс отправителя недостаточен для оплаты комиссии, dApp-скрипт не выполняется.

          Подробнее о валидации транзакций

          В JSON-представление транзакции добавлено поле applicationStatus, которое содержит результат валидации:

          • succeeded — транзакция успешна.
          • script_execution_failed — результат выполнения dApp-скрипта или скрипта ассета был неудачным. Такая транзакция не приводит к изменениям в балансах (кроме взимания комиссии с отправителя) и в хранилищах данных аккаунтов.

          Транзакции с неудачным результатом выполнения скрипта реализованы в протоколе Waves и поддержаны как в Node Scala , так и в Node Go , а также в следующих инструментах Waves.

          # Node API

          В следующие методы добавлено поле applicationStatus:

          • /blocks/{id}
          • /blocks/address/{address}/{from}/{to}
          • /blocks/at/{height}
          • /blocks/last
          • /blocks/seq/{from}/{to}
          • /transactions/address/{address}/limit/{limit}
          • /transactions/info/{id}
          • /transactions/status

          Как воспользоваться: пул нод Waves с публичным API доступны по адресу:

          • Mainnet: https://nodes.wavesnodes.com/
          • Testnet: https://nodes-testnet.wavesnodes.com/
          • Stagenet: https://nodes-stagenet.wavesnodes.com/

          См. также список изменений Node API в релизе 1.2

          # Библиотеки

          # waves-transactions

          Функции waitForTx и waitForTxWithNConfirmations возвращают Promise транзакции, который разрешается после ее попадания в блок. Теперь для транзакции добавлено поле applicationStatus.

          Как воспользоваться: установите последнюю версию библиотеки с помощью команды

          npm i @waves/waves-transactions@latest
          

          Документация waves-transactions

          # node-api JS

          Функции fetchInfo и fetchStatus поддерживают поле applicationStatus.

          Как воспользоваться: установите последнюю версию библиотеки с помощью команды

          npm i @waves/node-api-js@latest
          

          node-api JS на Github

          # Waves Explorer

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

          • Для транзакции вызова скрипта результат выполнения скрипта отображается в виде таблицы.

          Как воспользоваться: Waves Explorer доступен по адресу https://wavesexplorer.com/ .

          Все изменения Waves Explorer

          # Waves IDE

          Поле applicationStatus поддерживается для транзакций, добавленных на блокчейн, в JavaScript-консоли и в тестах.

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

          Как воспользоваться: Waves IDE доступна по адресу https://waves-ide.com/ .

          # Surfboard

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

          Как воспользоваться: установите последнюю версию с помощью команды

          npm i @waves/surfboard@latest
          

          Surfboard на Github

          # Dapp Ui (waves-dapp.com)

          Для отправленной транзакции вызова скрипта в дополнение к статусу попадания в блокчейн выводится успешность выполнения скрипта.

          Как воспользоваться: https://waves-dapp.com/ .

          MetaMask
          Обновления в документации
          MetaMask
          Обновления в документации