Skip to content
  • Ethan Reesor's avatar
    Limit transaction validation to stateless checks [#3208] · 295c0428
    Ethan Reesor authored
    Closes #3208. Updates validation of transactions to only include stateless checks to verify the transaction is well-formed and exclude stateful checks of the accounts involved.
    
    As long as the transaction is well-formed, it should be let into the block. There are many cases where we cannot safely evaluate the transaction during validation. If we are evaluating a synthetic transaction, we _must not_ reject it as long as it is properly formed and has a proof, since rejecting it otherwise would cause problems for sequencing. If Alice initiates a transaction for Bob, Bob may not be on this partition so we cannot evaluate the transaction. And even in cases where we could safely evaluate the transaction, doing so would cause inconsistencies: the authority a user uses to initiate a transaction and which partitions the accounts are on would become a factor in whether or not a transaction makes it into the block. Besides that, there's the argument FairyProof made that the previous approach (rejecting the transaction due to things like an insufficient balance) could be considered a replay attack vector. Thus, as long as the transaction is well-formed, signed, and the signer can be charged _something_, we will let the transaction into the block.
    
    Changelog: fix
    295c0428