2

I am going to send out products to user when they pay me EOS. I have a service monitor the blockchain transaction. Should I send the product to the user once I see the transaction in the blockchain? Or should I only send the product if the transaction in the block becomes irreversible (with ~2.5 minute delay)?

0

2 Answers 2

2

According to the whitepaper:

Transaction Confirmation

Typical DPOS blockchains have 100% block producer participation. A transaction can be considered confirmed with 99.9% certainty after an average of 0.25 seconds from time of broadcast.

In addition to DPOS, EOS.IO adds asynchronous Byzantine Fault Tolerance (aBFT) for faster achievement of irreversibility. The aBFT algorithm provides 100% confirmation of irreversibility within 1 second.

However, you are right that these numbers don't apply in practice on the EOS mainnet, as the BFT commitments communication is not yet implemented. Thus, similar to other blockchains, it becomes a balance between UX and safety.

You can consider it confirmed before being irreversible, but you incur the risk of having the transaction ending up on an orphaned chain. I wish I could quantify that risk in some way, but few months of empirical data is too limited to really draw any reliable results from. For some reference, you could check what exchanges expect for deposits.

Theoretically, DPoS BFT is designed to offer guaranteed finality for irreversible blocks if 2/3+1 BPs are honest. If at least 1/3 BPs are byzantine, then there is no way to obtain 100% guaranteed confirmation of irreversibility under all network conditions.


Edit: Found this relevant quote from Dan:

the LIB algorithm was an optional addition designed to identify the number of confirmations required before an exchange has sufficient guarantees that a block will not get orphaned.

Note, however, that the quote refers to an older version of DPoS. In the current version, a LIB should provide 100% finality if 2/3+1 of the BPs are honest, not only sufficient guarantees.

8
  • Is asynchronous Byzantine Fault Tolerance (aBFT) in effective now?
    – Anson Wong
    Sep 19, 2018 at 6:25
  • I used Newdex and I find that they deposit my money and exchange immediately when I send them money. Is that imply they don't expect any irreversible later?
    – Anson Wong
    Sep 19, 2018 at 6:27
  • Newdex is not a decentralised exchange, use it at your own risk because their application got exploited recently and lost quite a huge number of tokens in their exchange
    – Jeff Zheng
    Sep 19, 2018 at 8:03
  • Yes. Newdex is not decentrallised and that's why they must only exchange tokens when they confirm they receive it. But it seems that they can do it instantly and do not need to wait. Anyway, as you said, they are risky and don't know if it have any value to reference.
    – Anson Wong
    Sep 19, 2018 at 9:42
  • @AnsonWong no, aBFT is not implemented yet. also, edited my post to add a quote from Dan about recommended practices for exchanges
    – confused00
    Oct 7, 2018 at 0:37
0

As soon as you see the transaction included in a block, it is considered safe.

You don't really need to wait for the block to become irreversible.

4
  • As long as I see the transaction in the blockchain, it is consider as safe and I can give the product?
    – Anson Wong
    Sep 19, 2018 at 6:26
  • I'm just using EOSBet as an example since it is the hottest game now. Players play the game by sending their EOS and less than 2 seconds later, the bet is resolved which means that the platform accepted players' bet without considering if the blocks are irreversible.
    – Jeff Zheng
    Sep 19, 2018 at 8:06
  • 1
    I think EOSBet is a different case as it really use a contract. If a transaction is reversed, they won't got any lost as bet is resolved through the contract too.
    – Anson Wong
    Sep 19, 2018 at 9:40
  • Not exactly because the way how they resolve bets are triggered outside of the blockchain and not done through smart contract
    – Jeff Zheng
    Sep 19, 2018 at 9:43

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.