curl -L https://foundry.paradigm.xyz | bash
foundryup
forge install
git clone --recursive https://github.com/ringecosystem/msgport-examples.git
Before proceeding with the tutorial, you need an account with sufficient balance. This is required to perform contract operations in both the Koi and Sepolia testnets. If you don't have an account with sufficient balance, you may encounter difficulties when interacting with these contracts. Once you have the account, copy and create a .env
file based on the .env.example
file in the root of the repository. This will allow you to continue with the tutorial.
This examples is designed very simple and straightforward, aims to illustrate how to integrate the Msgport protocol for a dapp.
Our target is to invoke the increaseNumber()
function of the Sepolia Counter from the Koi testnet CounterSender.
Running the script to deploy the Counter
contract in the Sepolia testnet:
forge script src/counter/script/Deploy.s.sol:DCounter --broadcast --rpc-url https://ethereum-sepolia.publicnode.com
The output:
Script ran successfully.
== Logs ==
Counter has been deployed at chain: 11155111, contract: 0xc2fEFb4FDC7E6CaB6FaC7cb3A83902Aea0cB0348
## Setting up 1 EVM.
==========================
Chain 11155111
Estimated gas price: 0.055286148 gwei
Estimated total gas used for script: 214358
Estimated amount required: 0.000011851028112984 ETH
==========================
##### sepolia
✅ [Success]Hash: 0xe866afcca912979c531b5100876c3e86315d9a641dcf232c5c95b702e220fe51
Contract Address: 0xc2fEFb4FDC7E6CaB6FaC7cb3A83902Aea0cB0348
Block: 6138758
Paid: 0.00000868981192167 ETH (164935 gas * 0.052686282 gwei)
✅ Sequence #1 on sepolia | Total Paid: 0.00000868981192167 ETH (164935 gas * avg 0.052686282 gwei)
Once the Counter has been deployed, we can check the current number stored in the Counter.
forge script src/counter/script/GetNumber.s.sol:GetNumber --rpc-url https://ethereum-sepolia.publicnode.com
The output:
The current number stored in the Counter is: 0
Running the script to deploy the CounterSender
contract in the Koi testnet:
forge script src/counter/script/Deploy.s.sol:DCounterSender --broadcast --rpc-url https://koi-rpc.darwinia.network
The output:
[⠊] Compiling...
[⠔] Compiling 28 files with Solc 0.8.21
[⠒] Solc 0.8.21 finished in 3.40s
Compiler run successful with
Script ran successfully.
== Logs ==
Sender has been deployed at chain: 701, contract: 0x36d95D59391e202b44B37d5599a119C1b718efB1
## Setting up 1 EVM.
==========================
Chain 701
Estimated gas price: 150.706512128 gwei
Estimated total gas used for script: 272867
Estimated amount required: 0.041122833844830976 ETH
==========================
##### 701
✅ [Success]Hash: 0xb3985ea1d6b8d9795d829684ef3a0f098e8eab8a45f2d5f65e1256d2e3818e1e
Contract Address: 0x36d95D59391e202b44B37d5599a119C1b718efB1
Block: 97100
Paid: 0.015820717523661056 ETH (209954 gas * 75.353256064 gwei)
forge script src/counter/script/IncreaseNumber.s.sol:IncreaseNumber -vv --broadcast --rpc-url https://koi-rpc.darwinia.network --gas-estimate-multiplier 200
The output:
Script ran successfully.
== Logs ==
the body is: {"fromAddress":"0x36d95D59391e202b44B37d5599a119C1b718efB1","fromChainId":701,"message":"0x5b4ef819","ormp":{"refundAddress":"0x0000000000000000000000000000000000000000"},"toAddress":"0xea02E187B97622Ca74c58107236b0182CE727b70","toChainId":11155111}
The message has been sent to chain: 11155111, msgId: 0xec7358b1570f5b23dee8a732ece84970e8ab9c349f610440a38c07a5fcd3a772
## Setting up 1 EVM.
==========================
Chain 701
Estimated gas price: 150.706512128 wei
Estimated total gas used for script: 264208
Estimated amount required: 0.039817866156314624 ETH
==========================
##### 701
✅ [Success]Hash: 0x5a9c8e8150391fd0eee27b8f78128d07fb6c806cc12ff60c220c586daef20a1e
Block: 97272
Paid: 0.013607441686549248 ETH (180582 gas * 75.353256064 gwei)
✅ Sequence #1 on 701 | Total Paid: 0.013607441686549248 ETH (180582 gas * avg 75.353256064 gwei)
After submitting the transaction, you have successfully sent a message from the Koi testnet to the Sepolia testnet. Please wait for the message to be delivered and dispatched in the Sepolia testnet. It usually takes less than 5 minutes. Then you can check the number value again in the Sepolia testnet.
forge script src/counter/script/GetNumber.s.sol:GetNumber --rpc-url https://ethereum-sepolia.publicnode.com
The output:
The current number stored in the Counter is: 1