1

Regardless of the source of the transaction (externally owned address / smart contract) and the data included within the transaction, if the destination is an EOA and the transaction was included in a block, can I be sure that the funds were actually transferred without verifying the transaction receipt?

If I understand right, the criteria for intrinsic validity of a transaction (yellow paper, section 6 "Transaction Execution") enforce that enough gas for the transaction is provided if no smart contract is invoked, but I may have misinterpreted the meaning of g0 and v0.

I include the excerpt from the yellow paper I'm concerned about:

The execution of a transaction is the most complex part of the Ethereum protocol: it defines the state transition function Υ. It is assumed that any transactions executed first pass the initial tests of intrinsic validity. These include:

(1) The transaction is well-formed RLP, with no additional trailing bytes;

(2) the transaction signature is valid;

(3) the transaction nonce is valid (equivalent to the sender account’s current nonce);

(4) the gas limit is no smaller than the intrinsic gas, g0, used by the transaction; and

(5) the sender account balance contains at least thecost, v0, required in up-front payment.

1
  • 1
    A contract cannot be the source of a transaction, it always is an EOA. For a contract to make a transfer to an EOA it has to be EOA -> Contraact (internal transaction -> EOA) and an internal transaction can fail.
    – Ismael
    Jul 4, 2019 at 18:31

1 Answer 1

2

If the transaction first passes the intrinsic validation and is included in a block, then there is no code in an EOA that would cause it to fail.

Even if the transaction appears to be included in a block, there is some degree of uncertainty about transaction order and legitimacy at the head of the chain so it may be wise to wait for multiple confirmations to mitigate the risk, as with all PoW systems.

It may be helpful to others who come across this to point out that we are speaking exclusively of Eth transfers to an EOA and from an EOA. Token transfers informally described as "to user" are in fact "to token contract", so a different case. Eth Transfers from a contract always start out {from: EOA, to: contract}.

Hope it helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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