3

As the questions says, what will happen with the database and inline transaction when a transaction doesn't get the 2/3+1 "Votes" from the block producer that a transaction is legit?

Will all changes be reverted back? Also the database and all the inline transaction which were executed with this transaction, as to say this transaction and all changes never happened?

Because EOSBet as far as I can tell does not wait 2-3min till the transaction is irreversible. And I think all the other games do the same. I think they would not take such a risk.

1 Answer 1

2

Overview

If a transaction is introduced in a block that never achieves 2/3+1 confirmations, it means there's likely a fork where at least 1/3 of the BPs are building blocks on. In this case, the blockchain is forked, and the fork with more BPs will be faster and thus will become the longest chain, where honest BPs will build on. Neither of the forks will advance their last irreversible block (LIB) until 2/3+1 of BPs decide to converge on one of them. Once that happens, the fork that has 2/3+1 BPs building on it will have a new LIB and that fork shall be considered to contain valid irreversible transactions. If the 2/3+1 convergence doesn't happen, then there is probably a governance issue rather than a technical issue, and some BPs are using a modified client where they refuse to build on the longest fork, so the blockchain will not have a LIB until that's solved.

Having said that, besides exceptional cases, there are often ways to detect whether a fork may be happening: if your chain is missing blocks from e.g. two consecutive producers, then the risk of being on a minority fork increases, and you may want to increase your confirmation time (potentially dynamically to improve latency). If 2/3+1 BPs already built on top of your block, then it's very likely that you are on the super-majority fork and the block where your transaction lies shall be deemed irreversible. However, because there is a case where at least 1/3 of BPs are malicious, and they may sign both forks simultaneously, there is a possibility that the advanced LIB may not include your block, so your safest option is to wait for having your block marked as irreversible.

Perhaps one thing to keep in mind here is that if there aren't 2/3+1 BPs on a fork, finality is not achieved, and interblockchain communication would not be safe to execute. And another thing worth pointing out is that LIB is 100% finalised/irreversible only if 2/3+1 BPs are honest. If at least 1/3 BPs are byzantine, it is theoretically possible to have conflicting irreversible blocks.

Your questions

what will happen with the database and inline transaction when a transaction doesn't get the 2/3+1 "Votes" from the Blockproducer that a transaction is legit?

If a different fork ends up getting 2/3+1 BFT commitments from BPs, then everything on this fork is discarded by the client and considered invalid.

Will all changes be reverted back, also the database and all the inline transaction which were execute with this transaction, as to say this transaction and all changes never happend?

They will only exist on an invalid fork that is no longer accepted by the consensus, so yes, it's akin to those changes never having happened unless they were confirmed on the consensus fork as well.

Because EOSBet as far as i can tell does not wait 2-3min till the transaction is irreversible. And i think all the other games do the same. I think they will not take such a risk.

I assume the projects you mention may either accept the risk of a fork to provide better latency/UX for the users, or they may have a dynamically adjusted mechanism that changes based on the observable behavior of active BPs (still non-zero risk, but potentially less risky.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.