[go: up one dir, main page]

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 transfer into:
    • 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_address and address_from_contract: bridges MIR ↔️ Tezlink types.
  • Extended the Tezlink kernel test suite:
    • Added test for originated contracts emitting internal transfers.
  • Updated faucet.tz contract 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

Merge request reports

Loading