Tezlink: internal operations
Depends on !18777 (merged), !18781 (merged), !18739 (merged) and !18879 (merged)
This MR starts at : Tezlink/Kernel/Transfer : Init MIR Context at transfer
Next
- Internal Operation Receipts #8028 (closed)
- Intensive Testing to Ensure Quality and Full Tezos Compatibility
What
Implements support for internal operations in Tezlink kernel, including smart contract-to-contract calls execution.
Why
To support complex Michelson smart contract interactions that require emitting and processing internal operations (e.g., a faucet contract transferring funds to the sender).
How
- Refactored
transferinto:-
transfer_external: for manager operations from implicit accounts. -
transfer_internal: for internal transfers triggered by smart contracts.
-
- Propagate internal operations from smart contract execution.
- Introduced helper functions:
-
contract_from_addressandaddress_from_contract: bridges MIR↔️ Tezlink types.
-
- Extended the Tezlink kernel test suite:
- Added test for originated contracts emitting internal transfers.
- Updated
faucet.tzcontract scenario and integrated it into Tezt tests to validate internal transfer behavior end-to-end.
Manually testing the MR
Run kernel unit tests:
cd etherlink/kernel_latest/tezos_execution
cargo test
Run the new internal operation scenario:
make -f etherlink.mk EVM_KERNEL_FEATURES=debug build && make octez-evm-node && dune exec etherlink/tezt/tests/main.exe -- /dal latest tezlink internal
You should see a test passing where a contract with a fund entrypoint sends funds back to the sender.
Edited by Brahima Dibassi