Skip to main content

One post tagged with "Transaction Ordering"

Transaction propagation, block execution order, and dependencies across transactions

View All Tags

Transaction Ordering in TRON and Ethereum: Why Energy Delegation Can Arrive Too Late

· 20 min read
Chris Gayle
Chris Gayle
Backend Engineer @CatFee

You purchase Energy before sending USDT. Why does the transfer still burn TRX—or fail because it runs out of Energy?

In a wallet, exchange, or payment backend, the implementation often looks straightforward: broadcast the resource delegation transaction, then broadcast the user's transfer. The requests are sequential, and the first one returns a successful response. What could go wrong?

The order in which an application submits transactions is not necessarily the order in which a block producer executes them.

A common explanation is that TRON has no transaction nonce, while Ethereum does. That identifies an important difference, but leaves out its scope. TRON executes transactions in block order; it simply lacks Ethereum's per-sender nonce constraint. Ethereum's nonce, in turn, constrains transactions from the same account. It does not automatically establish dependencies between different accounts.

For Energy services, the requirement is more specific: when the user's transaction starts executing, the resources it needs must already be available—and still sufficient.