Can I withdraw the chain transaction only by paying 0.5 yuan? This brings endless trouble to DApp.

In life, fraud is hard to prevent.

The scammers firmly grasp the victim's psychological activities, pretending to be the identity of the public prosecution law to break through the victim's psychological defense line, and then arbitrarily arbitrarily arbitrarily let the victims hand over their own money. When the victims react, the scammers have already escaped. .

As a coping strategy, major banks have given the transfer the next day to the account, the solution that can be withdrawn during the period, giving users room for remorse. This kind of operation is not difficult for a centralized bank, but can it be done in a decentralized blockchain?

At first glance, reversing the transaction on the blockchain is like a fantasy, but the result is ok ! As Mr. Lu Xun said: There is no road in the world, and there are more people to go, and it will become a road.

It is the fact that many users have the need to revoke transactions on the blockchain , so there is a general retraction scheme slowly, but this convenience for the user has brought endless trouble to DApp and DApp developers. .

Did the DApp you developed show users incorrect information? Don't rush to deny it, because it is likely to happen, and it is under the premise that you are completely unaware of it.

Since the beginning of the year, there have been technical teams conducting more than 30 transaction usability audits of mainstream DApps, each of which involved more than 50 customized quantitative indicators and qualitative assessments. Unexpectedly, however, we have not yet encountered which DApp can handle the scenario where the transaction was cancelled. Trading is the top priority of every DApp, but why is this happening?

Before we delve into the impact of cancellations and why most DApps don't address this issue, you need to understand what is cancelled.

What is a cancelled transaction?

In Ethereum, the act of canceling a transaction is to cover the transaction that will be processed with a new transaction. It should be noted that this mechanism for canceling transactions is not an official standard of Ethereum, but a customary convention.

New transactions usually have the following characteristics compared to cancelled transactions:

  • Have an identical random number (nonce),
  • Initiated by the same wallet address,
  • Are sent to an external account (not a smart contract),
  • The fuel cost of the transaction ( Gas ) is at least 10% higher.
  • But the amount of the transaction is 0.
  • This new transaction is signed and submitted by the user before the original transaction is confirmed by the blockchain.

Why does this mechanism work? Since the miners prioritize transactions with higher fuel costs, the miners will deal with the transaction that will be cancelled after the new transaction is confirmed, even if the transaction enters the miners earlier to store unprocessed transactions. Information in the trading pool. In other words, the mechanism for canceling a transaction is a bit like a probabilistic game.

 

How can I cancel a transaction?

 

Most (but not all) Ethereum wallets can help you cancel your trade. For example, in the browser-based plug-in Ethereum light wallet MetaMask, you can cancel a transaction like this : first find the pending transaction, click to display the details of the transaction, and then click "Cancel transaction" " button. The whole operation is as follows:

640

How to cancel a transaction in MetaMask

PENDING (in progress) indicates that the transaction is being processed, click on the transaction details, and the Cancel button indicates cancellation of the transaction. The dialog box that pops up indicates that the cancellation of the transaction requires a fuel cost of $0.08 (approximately RMB 0.5). Clicking on the cancellation transaction here does not guarantee that your original submitted transaction will be 100% cancelled. But if the cancellation is successful, you need to pay the above fuel costs, do you want to try?

Although the function of canceling the transaction may seem a bit wasteful, it turns out to be a necessary tool for users to use Dogues with complex functions, because users in these DApps are used to carefully reviewing their transactions. Proactively manage fuel costs.

[Cancel transaction] Is it so simple and straightforward?

This is not the case!

There is a fatal problem when canceling a deal: your DApp. When a user participates in a DApp that you develop and trades, the user's cancel transaction only occurs between the user and his digital wallet, that is, your DApp is completely uninvolved in this session.

 

How to identify a cancelled transaction?

 

After knowing the characteristics of the cancelled trade, can you find something in the fourth and fifth trades in the chart below?

Cancelled transaction example

In the ideal case, the fifth trade will cover the fourth trade, which means that the fourth trade will be cancelled.

The random numbers for the fourth and fifth transactions are the same, and the fifth transaction:

  • More fuel costs were paid.
  • The amount of the transaction is 0.
  • Has a different timestamp than the previous transaction.
  • Has a different transaction hash than the previous transaction.

The first three are at the heart of the cancellation mechanism, and the fourth is a tricky issue for DApp and DApp developers.

 

How will the cancelled transaction affect the DApp user experience?

Since the original transaction (the cancelled transaction) and the new transaction that covers it later have different hash values, and the DApp you developed is not involved in the creation of this new transaction, your DApp has nothing to do. Ways to get in touch with this new deal.

Normally, your DApp will think that the original transaction is being processed and always show the user the status of the process. This is a bit blunt. Let's use an example to illustrate what this is all about. This is an example of what our team recently discovered when auditing DApp:

The first transaction in the picture has been cancelled

But the DApp doesn't know, or shows it as "in process"

In fact, when the first transaction had been added to the trading pool by the miners, the second transaction was first settled, covering and replacing it.

Since DApp does not have a way to establish contact with the second transaction, DApp will never know if the status of the first transaction was confirmed or failed. Instead, DApp will only show that the first transaction is being processed. in.

With the development of the Ethereum network, the cancellation of transactions has become more and more common. So here we strongly recommend that all DApp developers build front-end features that can handle this situation.

If you are using a DApp that can handle the cancellation of the transaction well, please let us know at the end of the article!

Source | hackernoon

Compilation | Guoxi

Editor | Carol

Produced | Blockchain Base Camp (blockchain_camp)

We will continue to update Blocking; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Blockchain

The exchange is frequently stolen, and where is the security of digital currency going?

In the food chain of digital currency, the exchange has always stood at the top. But if you want to wear a crown, you...

Market

Wu's Weekly Picks CoinEX attacked, FTX's coin selling rules, Binance US layoffs, and Top 10 news (September 9-15)

Author | Wu's Top 10 Blockchain News This Week. US August Unadjusted CPI Annual Rate 3.7% Core...

Blockchain

The compliance exchange is about to appear in Singapore?

On December 18, 2019, the official website of the Monetary Authority of Singapore (hereinafter referred to as "M...

Blockchain

Inside story How FTX stays up all night to prevent a $1 billion cryptocurrency theft case

On the same day FTX announced bankruptcy, someone began stealing hundreds of millions of dollars from its vault. An i...

Opinion

One year after the FTX crash, have the once badly affected market makers in the crypto world recovered?

Alameda Research is the core trading company of Sam Bankman-Fried's failed crypto empire, and after the company's col...

Policy

BlockFi Emerges from Bankruptcy, Ready to Pay Back Creditors and Recover Assets

In November, popular crypto lending platform BlockFi made headlines for their bankruptcy filing caused by the FTX con...