This verification process is performed by Bitcoin nodes. The following is described in the Bitcoin developer guide:
- Check the syntax and ensure that the syntax and data structure of the transaction conforms to the rules provided by the protocol.
- Verify that no transaction inputs and outputs are empty.
- Check whether the size in bytes is less than the maximum block size.
- The output value must be in the allowed money range (0 to 21 million BTC).
- All inputs must have a specified previous output, except for coinbase transactions, which should not be relayed.
- Verify that nLockTime must not exceed 31-bits. (nLockTime specifies the time before which transaction will not be included in the block.)
- For a transaction to be valid, ...