Angenommen, ich habe zwei Solidity-Funktionen:
function funcA()public{}
Und
function funcB()public payable{}
Was ist der Unterschied zwischen ihrem Bytecode? Wenn ich die funcA mit etwas Ether in der Transaktion aufrufe, wird sie zurückgesetzt, und was passiert im Bytecode?
Zu Beginn wird eine nicht zahlbare Funktion ausgeführt CALLVALUE
und zurückgesetzt, wenn sie einen Wert ungleich Null zurückgibt.
Zum Beispiel:
Assembly | Pseudocode
---------------------------------------------
CALLVALUE |
DUP1 |
ISZERO | if (msg.value == 0)
PUSH2 label |
JUMPI | goto label
PUSH1 00 |
DUP1 |
REVERT | revert("")
Masoud jt
Jonny Martin