Skip to content

docs: update interop intro doc.#4603

Open
0xValera wants to merge 6 commits intokl/interop-docsfrom
vg/interop-intro-update
Open

docs: update interop intro doc.#4603
0xValera wants to merge 6 commits intokl/interop-docsfrom
vg/interop-intro-update

Conversation

@0xValera
Copy link
Contributor

@0xValera 0xValera commented Jan 8, 2026

What ❔

The overview of interop functionality was heavily outdated, this PR brings it more up to date. It's more of a high level overview, than a deep technical detailed doc.

Why ❔

Is this a breaking change?

  • Yes
  • No

Operational changes

Checklist

  • PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.
  • Code has been formatted via zkstack dev fmt and zkstack dev lint.


With interop, you automatically get an account (a.k.a. aliasedAccount) on each chain, which you can control from the
source chain.
## How to Use Interop
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the part I've missed here is maybe an example on how can I do 2 most popular things: like ERC20 transfer or single remote call.

single remote call is already below, so ERC20 transfer example is missing.

Copy link
Contributor Author

@0xValera 0xValera Jan 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expanded on token transfer 6c428ad, also mentioned Interop Library that we have, as well as places where it might be used to potentially simplify the workflows for devs/users.

proof
);
```

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and here the natural question is -- where do I get all these params.

(we should probably have a helper tool like:

./interop-helper get_message_broadcast_proof --rpc XX --tx-hash YY

)
// Send a single cross-chain call to another L2 (ERC-7786 sendMessage)
bytes32 sendId = InteropCenter.sendMessage{value: 0.1 ether}(
recipient, // ERC-7930 address (chain ID + address)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit, but I'd show what's the example value for ERC-7930

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added example, also links to eips 614560e

```solidity
contract MyContract is IERC7786Recipient {
function receiveMessage(
bytes32 receiveId,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

receiveId == sendId from the call above?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessarily, it's up to gateways (entrypoint of sending/receiving msgs to define what they assume sendId/receiveId to be, according to standard.
Do you think we should expand on that here, given it's explained in standard itself?

### Bundles and Call Starters

#### 1. Who pays for gas
#### Understanding Call Starters
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd mention that this only needed if you want to combine multiple calls together.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return IERC7786Recipient.receiveMessage.selector;
}
}
```
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and here we're missing a 'tool' that would 'push' this message on the destination chain, right?

./interop-helper push_message --messageId XX --rpc YY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants