EIP-3074: AUTH and AUTHCALL opcodes

Yes, fixed! More words to satisfy spam bot.

1 Like

I was always too skeptical about this EIP due it is introducing ability to steal all user tokens with 1 transaction, not only ETH as previously.

But today I realized that this EIP is effectively generalizing signature based calls as EIP-2612 (aka Permit) and others.

This EIP is also almost resolving EOA non-programmability.

1 Like

It could even effectively deprecate ERC20 approves/allowances usage especially if AuthContract will be additionally introduced compatible with EIP-1271.

Wish we had unification among EOA and smart contract based authentications (aka signatures)

1 Like

What do you think about introducing transaction format change allowing specifying DELEGATECALL for the top transaction trace?

There are a few proposals that attempt to add bytecode execution to EOAs (eg. EIP-2803.) Not exactly the same, but similar idea.

Found exactly the same: EIP-5806: Delegate transaction
Discussion: EIP-5806 Delegate transaction - #2 by Amxx

I have a question about calculating the dynamic gas portion (dynamic_gas ), and the gas available for execution in the sub call (subcall_gas ) for AUTHCALL.

According to the provided pseudo-codes, if the value is not zero, the cost of gas should add 6700, it is not 9000 because no gas stipend even if the value is not zero. The value added to gas is CallValueTransferGas - CallStipend, which means stipend gas is included in 9000 value transfer gas.

if value > 0:
    dynamic_gas += 6700         # NB: Not 9000, like in `CALL`

But in go-ethereum, the stipend gas is not included in 9000.

When executing the opcode CALL, if value is not 0, firstly add 9000 gas in function gasCall() :

Then value will be checked in function opCall(), if it is not 0, 2300 stipend gas will be added :

Therefore, I think the dynamic_gas should add 9000 not 6700 in provided pseudo-codes.

It’s been a long while and I’m not extremely familiar with geth, but I think the first link (core/vm/gas_table.go) is where the gas is deducted from the parent, and the second link (core/vm/instructions.go) calculates how much is available to the child.