¿Cuál es la diferencia entre la función pagadera y la función no pagadera en bytecode para solidez?

Supongamos que tengo dos funciones de solidez:

function funcA()public{}

Y

function funcB()public payable{}

¿Cuál es la diferencia entre su código de bytes? si llamo a la funcA con algo de éter en la transacción, se revertirá, ¿y qué sucede en el código de bytes?

¿Puedes aclarar tu pregunta por favor? ¿Está tratando de reconocer la función pagable y no pagable mirando el código de bytes?
sí, eso es lo que quiero。

Respuestas (1)

Al principio, se ejecutará una función no paga CALLVALUEy se revertirá si devuelve un valor distinto de cero.

Por ejemplo:

Assembly                 | Pseudocode
---------------------------------------------
  CALLVALUE              |
  DUP1                   |
  ISZERO                 |  if (msg.value == 0)
  PUSH2 label            |
  JUMPI                  |    goto label
  PUSH1 00               |
  DUP1                   |
  REVERT                 |  revert("")