Greeting Contract with Cross-chain Interaction
Scroll Alpha Testnet is now deprecated.
Please visit our new documentation for the Scroll Sepolia Testnet at https://docs.scroll.io/
In this example, we will launch a dummy smart contract on either Goerli or Scroll Alpha and interact with it from the opposite chain. We will be using the ScrollMessenger
that is deployed on both Goerli and Scroll Alpha.
Target Smart Contract
Let’s start by deploying the target smart contract. We will use the Greeter smart contract for this example, but you can use any other contract. Deploy it to either Goerli or Scroll Alpha — L1 and L2 use the same API, so it’s up to you.
We will now execute the setGreeting
in a cross-chain way.
Operator Smart Contract
Now switch to the other chain and deploy the GreeterOperator
. If you deployed the Greeter
contract on L1, deploy the GreeterOperator
from L2 or vice versa.
We pass the message by executing the executeFunctionCrosschain
by passing the following parameters.
scrollMessengerAddress
: This will depend on where you deployed theGreeterOperator
contract. If you deployed it on L1 use0x5260e38080BFe97e6C4925d9209eCc5f964373b6
. If you deployed on L2 use0xb75d7e84517e1504C151B270255B087Fd746D34C
.targetAddress
: The address of theGreeter
contract on the opposite chain.value
: In this case, it is0
because thesetGreeting
is not payable.greeting
: This is the parameter that will be sent through the message. Try passing“This message was crosschain!”
gasLimit
: If you are sending the message from L1 to L2, around5000
gas limit should be more than enough. If you are sending this from L2 to L1, you can pass0
because this is an optional parameter.
After executing and confirming the transaction on both L1 and L2, the new state of greeting
on the Greeter
contract should be “This message was crosschain!”
. Sending a message from one chain to the other should take around 20mins after the transactions are confirmed on the origin chain.
Congratulations, you now executed a transaction from one chain to the other!
Last updated
Was this helpful?