The Conflux team has finished the technical investigation for the “Transaction Congestion” on May 1st.
The “Transaction Congestion” is caused by a bug in the transaction pool logic. After thorough investigation, the congestion has nothing to do with the consensus protocol and the core code of Conflux Network.
Detailed Report:
When the balance of the transaction sponsorship account is insufficient, the user’s transaction fee cannot be paid by the sponsor account. However, if the contract sponsor account has sufficient balance to sponsor the transaction fees but insufficient sponsorship for the storage collateral, the transaction pool will still evaluate these transactions as packable. When implementing these transactions into a block, neither the contract sponsor account nor the user’s account has sufficient CFX to pay for the storage collateral, and these transactions will be rejected. Users with insufficient CFX amounts in their accounts conclude that their transactions have not been executed and raised their gas price, hoping that their transactions will be packaged in faster. Because these transactions include the highest gas price, these transactions have been packaged with precedence while not been executed. Due to the above-mentioned fact, certain transactions have fallen into an endless loop, causing the failure of other transactions with the default gas price (1 drip) to be packaged.
This bug was triggered because the balance of the contract sponsor account has not been checked timely when CFX has run out. At this point, the problem has been fixed. MoonSwap has supplied the contract sponsor account, and the bug in the transaction pool logic will be fixed soon.
Through this incident, the Conflux tech team has learned to:
Maintaining sufficient communication. DApp developers should check on the balance of the sponsor account timely.
Notify users to manually lift the gas price when they wish their transactions to be packaged sooner.
We apologize again for causing any inconvenience. The conflux tech team will try their best in improving our product’s performance and optimize the experience while ensuring the normal operation of the infrastructure.