Together with EOS Node Operators, the EOS Network Foundation has developed a plan to disable Deferred Transactions (also known as Scheduled Transactions) by Thursday, September 14th, 2023. This step is necessary to further strengthen the reliability and performance of the EOS Network in preparation for the release of Leap 5.0.0. Action is required by NODE OPERATORS and APPLICATION DEVELOPERS.

ACTION REQUIRED!

Every Node Operator MUST disable deferred transactions for all nodes according to the following schedule:

  • Jungle & Kylin Test Networks:
    • No earlier than Monday, August 28th, 2023
    • No later than Friday, September 1st, 2023
  • EOS Network:
    • No earlier than Friday, September 8th, 2023
    • No later than Thursday, September 14th, 2023

Every Application Developer MUST remove deferred transactions dependencies in their applications no later than Thursday, September 7th, 2023 to avoid service disruptions.

Instructions for Node Operators and Application developers are included at the end of this article.

Why the change?

Deferred transactions were officially deprecated in October 2019 (v2.0.0rc1). Since then, they have remained a troublemaker. Deferred transactions add undue complexity to running nodes, providing history, understanding smart contract behavior, and even recovering accounts.

How do deferred transactions complicate things?

  • Complicated Nodes: Their presence in the ecosystem introduced myriad ways they could fail, especially when contrasted against regular transactions.
  • History Complexities: From bearing one of five different statuses to the potential of being paired with an error-handling transaction, deferred transactions have consistently complicated the historical tracking.
  • Contract Assumptions: Developers have assumed that deferred transactions will execute as expected. However, the reality is that these transactions, along with their error handlers, lack guaranteed execution without compromising the chain’s safety.

Why remove deferred transactions now?

Leap v5.0.0 contains a protocol feature called Instant Finality. Once this protocol feature is activated, it will not be possible to revert. Nodes wishing to participate in a network that has activated Instant Finality will need to be running Leap v5.0.0. 

Leap v5.0.0 will also ignore the `max-scheduled-transaction-time-per-block-ms` config option, disabling deferred transactions in nodeos code. Together with the above, this means that once Leap v5.0.0 is deployed to BPs, deferred transactions cannot be reenabled.

By disabling deferred transactions prior to the Leap 5.0.0 release and protocol upgrade, the community can proactively address any unexpected issues.

Instructions

Node Operators: Disable Deferred Transactions 

To disable deferred transactions, set `max-scheduled-transaction-time-per-block-ms` to “0” in your config.ini file for ALL NODES (especially block producing nodes):

config.ini:

[code block: max-scheduled-transaction-time-per-block-ms = 0]

Developers: Check for Deferred Transactions usage

Developers can ascertain the use of deferred transactions in their applications by checking if a non-zero value is used for `delay_sec` in transactions generated by the app or if any of calls are made in the contracts of the app: 

  • `send` member function within `eosio::transaction`
  • `send_deferred`
  • `cancel_deferred`

Developers: Alternatives to Deferred Transactions

If your contract uses deferred transactions to automatically trigger an operation at a later time, the operation will need to be triggered through an alternative means. Possible alternative solutions may include:

  • Frontend detects on behalf of the user the need for the operation to execute and prompts the user to sign a transaction that triggers the operation.
  • Design the contract to establish a queue of pending operations that are designed to not fail and add an action that anyone can call to process that queue. Optionally, deploy a service to periodically call the action to process the queue.

History

If you would like to dig into the history of this change, here are a few links that you may find helpful:


EOS Network

The EOS Network is a 3rd generation blockchain platform powered by the EOS VM, a low-latency, highly performant, and extensible WebAssembly engine for deterministic execution of near feeless transactions; purpose-built for enabling optimal Web3 user and developer experiences. EOS is the flagship blockchain and financial center of the Antelope framework, serving as the driving force behind multi-chain collaboration and public goods funding for tools and infrastructure through the EOS Network Foundation (ENF).

EOS EVM

The EOS EVM is an emulation of the Ethereum EVM, housed within an EOS smart contract. It offers feature parity to other EVMs in the space but with unmatched speed, performance and compatibility. EOS EVM connects the EOS ecosystem to the Ethereum ecosystem by allowing developers to deploy a wide array of Solidity-based digital assets and innovative dApps on EOS. Developers can use EOS EVM to take advantage of Ethereum’s battle-tested open source code, tooling, libraries and SDKs, while leveraging the superior performance of EOS.

EOS Network Foundation

The EOS Network Foundation (ENF) was forged through a vision for a prosperous and decentralized future. Through our key stakeholder engagement, community programs, ecosystem funding, and support of an open technology ecosystem, the ENF is transforming Web3. Founded in 2021, the ENF is the hub for EOS Network, a leading open source platform with a suite of stable frameworks, tools, and libraries for blockchain deployments. Together, we are bringing innovations that our community builds and are committed to a stronger future for all.