Caveats

  • Dust Transactions

    It has become common for some users of a blockchain-based system to send very low quantities of blockchain tokens (often called “dust”) to addresses for a variety of reasons. Depending on how your information system is designed, large quantities of these very small transactions could cause a Denial of Service attack if your system performs significant amounts of processing on all incoming transactions. Alternatively, accounting inconsistencies can result from ignoring these small transactions. Those who design or implement blockchain-based systems should keep these two competing tradeoffs in mind when deciding how the system should carry out the business rules it was designed to perform.

  • Blockchain Forks

    When a blockchain ends up with two persistent tips - with neither being orphaned - the single chain becomes split into two independent blockchains with a shared common history. Forks can occur through intentional changes to consensus rules, or as a result of an accidental divergence of consensus. In either case, there may not be any “replay protection” for transactions intended for one side of the fork. This can cause a transaction to accidentally transfer more funds than intended. All information systems that deal with blockchains should be able to handle forks in a way that is consistent with the business requirements that govern it.

  • Blockchain Reorgs

    When multiple blocks are found at approximately the same time, it is possible for the blockchain to have multiple tips/heads. Since this is not common with flat files and databases, most programmers that are new to blockchains will write applications that only look at one tip/head of the blockchain and ignore the others. It is possible for these applications to become “confused” when the tip of a blockchain is “orphaned” or removed during a reorganization (“Reorg”) of the blockchain. This can cause transactions that were previously confirmed to become unconfirmed which can lead to unexpected behaviour unless your information system has been built to explicitly handle blockchain reorgs. This behaviour can lead to a loss of funds if not handled appropriately. All information systems that deal with blockchains should be able to handle reorgs in a way that is consistent with the business requirements that govern it.