Skip to content

Commit ccd067b

Browse files
committed
Merge branch 'develop' into feature/add-tests
2 parents e900b20 + 3c545c6 commit ccd067b

16 files changed

+160
-205
lines changed

.env.template

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
# Ethereum Sepolia Configuration
22
SEPOLIA_RPC_URL="https://gateway.tenderly.co/public/sepolia"
3-
SEPOLIA_ENDPOINT_ADDRESS=0x<layerzero-endpoint-address-on-sepolia>
4-
SEPOLIA_CHAIN_ID=SEPOLIA_CHAIN_ID=40161 # LayerZero chain ID for Ethereum Sepolia
5-
SEPOLIA_ADAPTER_ADDRESS=0x<deployed-rlc-adapter-address-on-sepolia>
3+
LAYER_ZERO_SEPOLIA_ENDPOINT_ADDRESS=0x6EDCE65403992e310A62460808c4b910D972f10f
4+
LAYER_ZERO_SEPOLIA_CHAIN_ID=40161 # LayerZero chain ID for Ethereum Sepolia
5+
RLC_SEPOLIA_ADAPTER_ADDRESS=0x<deployed-rlc-adapter-address-on-sepolia>
66
RLC_SEPOLIA_ADDRESS=0x<rlc-token-address-on-sepolia>
77

88
# Arbitrum Sepolia Configuration
9-
ARBITRUM_SEPOLIA_RPC_URL="https://arbitrum-sepolia-rpc.publicnode.com"
10-
ARBITRUM_SEPOLIA_ENDPOINT_ADDRESS=0x<layerzero-endpoint-address-on-arbitrum-sepolia>
11-
ARBITRUM_SEPOLIA_CHAIN_ID=40231 # LayerZero chain ID for Arbitrum Sepolia
12-
ARBITRUM_SEPOLIA_OFT_ADDRESS=0x<deployed-rlcoft-address-on-arbitrum-sepolia>
9+
ARBITRUM_SEPOLIA_RPC_URL="https://arbitrum-sepolia.gateway.tenderly.co"
10+
LAYER_ZERO_ARBITRUM_SEPOLIA_ENDPOINT_ADDRESS=0x6EDCE65403992e310A62460808c4b910D972f10f
11+
LAYER_ZERO_ARBITRUM_SEPOLIA_CHAIN_ID=40231 # LayerZero chain ID for Arbitrum Sepolia
12+
RLC_ARBITRUM_SEPOLIA_OFT_ADDRESS=0x<deployed-rlcoft-address-on-arbitrum-sepolia>
1313

1414
# Token Configuration for OFT
15-
TOKEN_NAME="RLC OFT"
16-
TOKEN_SYMBOL="RLC"
15+
RLC_OFT_TOKEN_NAME="RLC OFT"
16+
RLC_TOKEN_SYMBOL="RLC"
1717

1818
# Transaction Settings
19-
DELEGATE_ADDRESS=0x<delegate-wallet-address>
20-
RECEIVER_ADDRESS=0x<receiver-wallet-address>
19+
SENDER_ADDRESS=0x<delegate-wallet-address>
2120

2221
# API Keys
2322
ETHERSCAN_API_KEY=<your-etherscan-api-key>

.github/workflows/test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ jobs:
3636
run: |
3737
forge build --sizes
3838
id: build
39-
40-
- name: Run Forge tests
41-
run: |
42-
forge test -vvv
43-
id: test
39+
#TDO: Uncomment when tests are available
40+
# - name: Run Forge tests
41+
# run: |
42+
# forge test -vvv
43+
# id: test

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ docs/
1616

1717
# Dotenv file
1818
.env
19-
.last_deploy.json
19+
.last_deploy.json

Makefile

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,58 @@
11
# Makefile for RLC OFT Project
22
-include .env
3+
4+
# Test and utility targets
5+
test:
6+
@echo "Running tests..."
7+
forge test -vvv
8+
9+
clean:
10+
@echo "Cleaning artifacts..."
11+
forge clean
12+
313
# Deployment targets
414
deploy-adapter:
515
@echo "Deploying RLCAdapter on SEPOLIA..."
6-
forge script script/RLCAdapter.s.sol:DeployRLCAdapter \
16+
forge script script/RLCAdapter.s.sol:Deploy \
717
--rpc-url $(SEPOLIA_RPC_URL) \
818
--account $(ACCOUNT) \
919
--broadcast \
1020
-vvv
1121

1222
deploy-oft:
1323
@echo "Deploying RLCOFT on Arbitrum SEPOLIA..."
14-
forge script script/RLCOFT.s.sol:DeployRLCOFT \
24+
forge script script/RLCOFT.s.sol:Deploy \
1525
--rpc-url $(ARBITRUM_SEPOLIA_RPC_URL) \
1626
--account $(ACCOUNT) \
1727
--broadcast \
1828
-vvv \
1929

20-
conf-adapter:
30+
configure-adapter:
2131
@echo "Configuring RLCAdapter on SEPOLIA..."
22-
forge script script/ConfigureRLCAdapter.s.sol:ConfigureRLCAdapter \
32+
forge script script/ConfigureRLCAdapter.s.sol:Configure \
2333
--rpc-url $(SEPOLIA_RPC_URL) \
2434
--account $(ACCOUNT) \
2535
--broadcast \
2636
-vvv
27-
conf-oft:
37+
configure-oft:
2838
@echo "Configuring RLCOFT on Arbitrum SEPOLIA..."
29-
forge script script/ConfigureRLCOFT.s.sol:ConfigureRLCOFT \
39+
forge script script/ConfigureRLCOFT.s.sol:Configure \
3040
--rpc-url $(ARBITRUM_SEPOLIA_RPC_URL) \
3141
--account $(ACCOUNT) \
3242
--broadcast \
3343
-vvv
3444

35-
send-tokens:
45+
send-tokens-to-arbitrum-sepolia:
3646
@echo "Sending tokens cross-chain... from SEPOLIA to Arbitrum SEPOLIA"
37-
forge script script/SendEthereumToArbitrum.s.sol:SendEthereumToArbitrum \
47+
forge script script/SendEthereumToArbitrum.s.sol:SendTokensToArbitrumSepolia \
3848
--rpc-url $(SEPOLIA_RPC_URL) \
3949
--account $(ACCOUNT) \
4050
--broadcast \
4151
-vvv
4252

43-
.PHONY: send-tokens-arbitrum-sepolia
44-
send-tokens-arbitrum-sepolia:
53+
send-tokens-to-sepolia:
4554
@echo "Sending tokens cross-chain... from Arbitrum SEPOLIA to SEPOLIA"
46-
@source .env && forge script script/SendArbitrumToEthereum.s.sol:SendArbitrumToEthereum \
55+
forge script script/SendArbitrumToEthereum.s.sol:SendTokensToSepolia \
4756
--rpc-url $(ARBITRUM_SEPOLIA_RPC_URL) \
4857
--account $(ACCOUNT) \
4958
--broadcast \
@@ -55,33 +64,21 @@ verify-adapter:
5564
forge verify-contract \
5665
--chain-id 11155111 \
5766
--watch \
58-
--constructor-args $(shell cast abi-encode "constructor(address,address,address)" $(RLC_SEPOLIA_ADDRESS) $(SEPOLIA_ENDPOINT_ADDRESS) $(DELEGATE_ADDRESS)) \
67+
--constructor-args $(shell cast abi-encode "constructor(address,address,address)" $(RLC_SEPOLIA_ADDRESS) $(LAYER_ZERO_SEPOLIA_ENDPOINT_ADDRESS) $(SENDER_ADDRESS)) \
5968
--etherscan-api-key $(ETHERSCAN_API_KEY) \
60-
$(SEPOLIA_ADAPTER_ADDRESS) \
69+
$(RLC_SEPOLIA_ADAPTER_ADDRESS) \
6170
src/RLCAdapter.sol:RLCAdapter
6271

6372
verify-oft:
6473
@echo "Verifying RLCOFT on Arbitrum Sepolia Etherscan..."
6574
forge verify-contract \
6675
--chain-id 421614 \
6776
--watch \
68-
--constructor-args $(shell cast abi-encode "constructor(string,string,address,address)" $(TOKEN_NAME) $(TOKEN_SYMBOL) $(ARBITRUM_SEPOLIA_ENDPOINT_ADDRESS) $(DELEGATE_ADDRESS)) \
77+
--constructor-args $(shell cast abi-encode "constructor(string,string,address,address)" $(RLC_OFT_TOKEN_NAME) $(RLC_TOKEN_SYMBOL) $(LAYER_ZERO_ARBITRUM_SEPOLIA_ENDPOINT_ADDRESS) $(SENDER_ADDRESS)) \
6978
--etherscan-api-key $(ARBISCAN_API_KEY) \
70-
$(ARBITRUM_SEPOLIA_OFT_ADDRESS) \
79+
$(RLC_ARBITRUM_SEPOLIA_OFT_ADDRESS) \
7180
src/RLCOFT.sol:RLCOFT
7281

7382
# Combined verification target
7483
verify-all: verify-adapter verify-oft
7584

76-
test-rlcoft:
77-
@echo "Running RLC OFT tests..."
78-
forge test --match-contract RLCOFTTest -vvv
79-
80-
# Test and utility targets
81-
test:
82-
@echo "Running tests..."
83-
forge test -vvv
84-
85-
clean:
86-
@echo "Cleaning artifacts..."
87-
forge clean

README.md

Lines changed: 25 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,23 @@ This project implements a cross-chain token bridge for the RLC token between Eth
66

77
The system consists of two main components:
88

9-
1. **RLCAdapter (on Ethereum **Sepolia**)**: Wraps the existing RLC ERC-20 token to make it compatible with LayerZero's cross-chain messaging.
9+
1. **RLCAdapter (on Ethereum Sepolia)**: Wraps the existing RLC ERC-20 token to make it compatible with LayerZero's cross-chain messaging.
1010
2. **RLCOFT (on Arbitrum Sepolia)**: A new token that's minted when RLC tokens are locked in the adapter on Ethereum, and burned when tokens are sent back.
1111

12-
[![Architecture Diagram](https://mermaid.ink/img/pako:eNqNVNtO4zAQ_RXLvAY2F3JpQEhpLrsPRUhQXqBoZRKXRjh2ZCdouf372nHSEhrYddV2MjnHZ-ZM4leYswLDED5wVG_AMllRIJdo73ViBdNmgzluK3CFa0ZKtIIaotblIr6VX7Bkj5ju0qflWXoZ2-bpj_LsbpeOClQ3mCtGH44oF9myT3_iLW5-p8tftwv0jPkN5gyktKhZSZseg2mhg73aI35fNny6dimnKpF_E-XL7H4R0eX8v4u4Fph3VasAMAoGG-_A4eHZmwWiuubsCQvQKHHxBkaWDPQObIMYESKAkBqfcP1FB3PAguWPuw1lc_ugY2kFLQSosBDoAb_15mqgjjucC2LOhDjMN6ikI7R0YYuWcYf2QIJJ-YT5h42lhRqnHFYgH5xLu3b1dT0qTweLhmnd7Rk56EQjJ_YU5mDecrpT2APEE91P9ZN82f2UV-lE919OKQPXlPx7Tj_BkiMq1mrTkWHbAvRvTpAQCV4DPLym65KQ8CD24izzDdFwSQ4PnMQ1576RM8J4eE9Q_njyiY-GV0Xz51bqZNmWb0eBnQXf8Vs1RM3NssSOzC03y4LANL_jkpeembjqs6u6WxPMD3xlnzE4N5jwUaAb_tDd6Mbgp7F9xlQTI4iestE_GuTlBBqwwrxCZSHPzFcFXUEpWuEVDGVY4DVqSaPOmXcJRW3Drp5pDkMpjg3Y1gVqcFIieUBVMFwjImS2RvSGsWoAyUsYvsI_MAysI8_yfNuZeY7tuUFgwGcYWjP3yLdN1_Jl5PiBab8b8KXbwDyaufbMOnYs27OsIPA8A3LWPmy2WrgoG8bP9ZnfHf2GPPpVN1qcy_cD85i1tJFKlj3UnHY8jXr_C5RA8AI?type=png)](https://mermaid.live/edit#pako:eNqNVNtO4zAQ_RXLvAY2F3JpQEhpLrsPRUhQXqBoZRKXRjh2ZCdouf372nHSEhrYddV2MjnHZ-ZM4leYswLDED5wVG_AMllRIJdo73ViBdNmgzluK3CFa0ZKtIIaotblIr6VX7Bkj5ju0qflWXoZ2-bpj_LsbpeOClQ3mCtGH44oF9myT3_iLW5-p8tftwv0jPkN5gyktKhZSZseg2mhg73aI35fNny6dimnKpF_E-XL7H4R0eX8v4u4Fph3VasAMAoGG-_A4eHZmwWiuubsCQvQKHHxBkaWDPQObIMYESKAkBqfcP1FB3PAguWPuw1lc_ugY2kFLQSosBDoAb_15mqgjjucC2LOhDjMN6ikI7R0YYuWcYf2QIJJ-YT5h42lhRqnHFYgH5xLu3b1dT0qTweLhmnd7Rk56EQjJ_YU5mDecrpT2APEE91P9ZN82f2UV-lE919OKQPXlPx7Tj_BkiMq1mrTkWHbAvRvTpAQCV4DPLym65KQ8CD24izzDdFwSQ4PnMQ1576RM8J4eE9Q_njyiY-GV0Xz51bqZNmWb0eBnQXf8Vs1RM3NssSOzC03y4LANL_jkpeembjqs6u6WxPMD3xlnzE4N5jwUaAb_tDd6Mbgp7F9xlQTI4iestE_GuTlBBqwwrxCZSHPzFcFXUEpWuEVDGVY4DVqSaPOmXcJRW3Drp5pDkMpjg3Y1gVqcFIieUBVMFwjImS2RvSGsWoAyUsYvsI_MAysI8_yfNuZeY7tuUFgwGcYWjP3yLdN1_Jl5PiBab8b8KXbwDyaufbMOnYs27OsIPA8A3LWPmy2WrgoG8bP9ZnfHf2GPPpVN1qcy_cD85i1tJFKlj3UnHY8jXr_C5RA8AI)
12+
[![Architecture Diagram](https://mermaid.ink/img/pako:eNqNVNtO4zAQ_RXLvAY2F3JpQEhpLrsPRUhQXqBoZRKXRjh2ZCdouf372nHSEhrYddV2MjnHZ-ZM4leYswLDED5wVG_AMllRIJdo73ViBdNmgzluK3CFa0ZKtIIaotblIr6VX7Bkj5ju0qflWXoZ2-bpj_LsbpeOClQ3mCtGH44oF9myT3_iLW5-p8tftwv0jPkN5gyktKhZSZseg2mhg73aI35fNny6dimnKpF_E-XL7H4R0eX8v4u4Fph3VasAMAoGG-_A4eHZmwWiuubsCQvQKHHxBkaWDPQObIMYESKAkBqfcP1FB3PAguWPuw1lc_ugY2kFLQSosBDoAb_15mqgjjucC2LOhDjMN6ikI7R0YYuWcYf2QIJJ-YT5h42lhRqnHFYgH5xLu3b1dT0qTweLhmnd7Rk56EQjJ_YU5mDecrpT2APEE91P9ZN82f2UV-lE919OKQPXlPx7Tj_BkiMq1mrTkWHbAvRvTpAQCV4DPLym65KQ8CD24izzDdFwSQ4PnMQ1576RM8J4eE9Q_njyiY-GV0Xz51bqZNmWb0eBnQXf8Vs1RM3NssSOzC03y4LANL_jkpeembjqs6u6WxPMD3xlnzE4N5jwUaAb_tDd6Mbgp7F9xlQTI4iestE_GuTlBBqwwrxCZSHPzFcFXUEpWuEVDGVY4DVqSaPOmXcJRW3Drp5pDkMpjg3Y1gVqcFIieUBVMFwjImS2RvSGsWoAyUsYvsI_MAysI8_yfNuZeY7tuUFgwGcYWjP3yLdN1_Jl5PiBab8b8KXbwDyaufbMOnYs27OsIPA8A3LWPmy2WrgoG8bP9ZnfHf2GPPpVN1qcy_cD85i1tJFKlj3UnHY8jXr_C5RA8AI)](https://mermaid.live/edit#pako:eNqNVNtO4zAQ_RXLvAY2F3JpQEhpLrsPRUhQXqBoZRKXRjh2ZCdouf372nHSEhrYddV2MjnHZ-ZM4leYswLDED5wVG_AMllRIJdo73ViBdNmgzluK3CFa0ZKtIIaotblIr6VX7Bkj5ju0qflWXoZ2-bpj_LsbpeOClQ3mCtGH44oF9myT3_iLW5-p8tftwv0jPkN5gyktKhZSZseg2mhg73aI35fNny6dimnKpF_E-XL7H4R0eX8v4u4Fph3VasAMAoGG-_A4eHZmwWiuubsCQvQKHHxBkaWDPQObIMYESKAkBqfcP1FB3PAguWPuw1lc_ugY2kFLQSosBDoAb_15mqgjjucC2LOhDjMN6ikI7R0YYuWcYf2QIJJ-YT5h42lhRqnHFYgH5xLu3b1dT0qTweLhmnd7Rk56EQjJ_YU5mDecrpT2APEE91P9ZN82f2UV-lE919OKQPXlPx7Tj_BkiMq1mrTkWHbAvRvTpAQCV4DPLym65KQ8CD24iyyDdFwSQ4PnMQ1576RM8J4eE9Q_njyiY-GV0Xz51bqZNmWb0eBnQXf8Vs1RM3NssSOzC03y4LANL_jkpeembjqs6u6WxPMD3xlnzE4N5jwUaAb_tDd6Mbgp7F9xlQTI4iestE_GuTlBBqwwrxCZSHPzFcFXUEpWuEVDGVY4DVqSaPOmXcJRW3Drp5pDkMpjg3Y1gVqcFIieUBVMFwjImS2RvSGsWoAyUsYvsI_MAysI8_yfNuZeY7tuUFgwGcYWjP3yLdN1_Jl5PiBab8b8KXbwDyaufbMOnYs27OsIPA8A3LWPmy2WrgoG8bP9ZnfHf2GPPpVN1qcy_cD85i1tJFKlj3UnHY8jXr_C5RA8AI)
1313

1414
## Prerequisites
1515

1616
- [Foundry](https://book.getfoundry.sh/getting-started/installation.html) for contract compilation and deployment
1717
- Ethereum wallet with Sepolia ETH and Arbitrum Sepolia ETH for gas
1818
- RLC tokens on Sepolia testnet for bridge testing
1919

20-
## Setup
20+
## Installation
2121

2222
1. Clone the repository
2323
```bash
24-
git clone https://github.com/yourusername/rlc-layerzero-bridge.git
25-
cd rlc-layerzero-bridge
24+
git clone https://github.com/iExecBlockchainComputing/rlc-multichain.git
25+
cd rlc-multichain
2626
```
2727

2828
2. Install dependencies
@@ -31,6 +31,16 @@ The system consists of two main components:
3131
```
3232

3333
3. Create a `.env` file
34+
```sh
35+
cp .env.template .env # and edit .env content
36+
```
37+
38+
## Contract Overview
39+
40+
Instead of duplicating code that may become outdated, here are links to the key contracts in the repository:
41+
42+
- [RLCAdapter.sol](https://github.com/iExecBlockchainComputing/rlc-multichain/blob/main/src/RLCAdapter.sol) - Ethereum-side adapter that wraps the existing RLC token
43+
- [RLCOFT.sol](https://github.com/iExecBlockchainComputing/rlc-multichain/blob/main/src/RLCOFT.sol) - Arbitrum-side token that implements the OFT standard
3444

3545
## Deployment
3646

@@ -48,90 +58,42 @@ The deployment process involves four steps:
4858

4959
3. Configure the RLCAdapter to trust the RLCOFT contract:
5060
```bash
51-
make conf-adapter
61+
make configure-adapter
5262
```
5363

5464
4. Configure the RLCOFT to trust the RLCAdapter contract:
5565
```bash
56-
make conf-oft
66+
make configure-oft
5767
```
5868

5969
After deployment, update your `.env` file with the deployed contract addresses.
6070

6171
## Usage
6272

63-
### Bridge RLC from Ethereum to Arbitrum
73+
### Bridge RLC
6474

65-
To send RLC tokens from Ethereum Sepolia to Arbitrum Sepolia:
75+
A. To send RLC tokens from Ethereum Sepolia to Arbitrum Sepolia:
6676

6777
```bash
68-
make send-tokens
78+
make send-tokens-to-arbitrum-sepolia
6979
```
7080

7181
This will:
7282
1. Approve the RLCAdapter to spend your RLC tokens
7383
2. Initiate the cross-chain transfer through LayerZero
7484
3. Lock tokens in the adapter and mint equivalent tokens on Arbitrum
7585

76-
### Bridge RLC from Arbitrum to Ethereum
77-
78-
To send RLC tokens from Arbitrum Sepolia back to Ethereum Sepolia:
86+
B. To send RLC tokens from Arbitrum Sepolia back to Ethereum Sepolia:
7987

8088
```bash
81-
make send-tokens-arbitrum-sepolia
89+
make send-tokens-to-sepolia
8290
```
8391

8492
This will:
8593
1. Burn RLCOFT tokens on Arbitrum
8694
2. Send a cross-chain message to the adapter
8795
3. Release the original RLC tokens on Ethereum
8896

89-
## Contract Architecture
90-
91-
### RLCAdapter.sol
92-
93-
An adapter that wraps the existing RLC token to make it compatible with LayerZero's OFT protocol. It extends:
94-
- `OFTAdapter`: Handles the OFT cross-chain logic
95-
- `Ownable`: Provides ownership control for administrative functions
96-
97-
```solidity
98-
contract RLCAdapter is Ownable, OFTAdapter {
99-
constructor(address _token, address _lzEndpoint, address _owner)
100-
OFTAdapter(_token, _lzEndpoint, _owner)
101-
Ownable(_owner)
102-
{}
103-
}
104-
```
105-
106-
### RLCOFT.sol
107-
108-
A new token on the destination chain (Arbitrum) that's minted when RLC tokens are locked in the adapter. It extends:
109-
- `OFT`: Implements the OFT cross-chain logic
110-
- `Ownable`: Provides ownership control for administrative functions
111-
112-
```solidity
113-
contract RLCOFT is Ownable, OFT {
114-
constructor(string memory _name, string memory _symbol, address _lzEndpoint, address _delegate)
115-
OFT(_name, _symbol, _lzEndpoint, _delegate)
116-
Ownable(_delegate)
117-
{}
118-
119-
function burn(uint256 _value) external returns (bool) {
120-
_burn(msg.sender, _value);
121-
return true;
122-
}
123-
124-
function approveAndCall(address _spender, uint256 _value, bytes calldata _extraData) public returns (bool) {
125-
TokenSpender spender = TokenSpender(_spender);
126-
if (approve(_spender, _value)) {
127-
spender.receiveApproval(msg.sender, _value, address(this), _extraData);
128-
return true;
129-
}
130-
return false;
131-
}
132-
}
133-
```
134-
13597
## How It Works
13698

13799
1. **Ethereum → Arbitrum:**
@@ -151,6 +113,7 @@ contract RLCOFT is Ownable, OFT {
151113
- The bridge security relies on LayerZero's security model
152114
- Administrative functions are protected by the Ownable pattern
153115
- Use caution when setting trusted remotes to prevent unauthorized cross-chain interactions
116+
- Always test thoroughly on testnets before deploying to mainnet
154117
155118
## Gas Costs and Fees
156119
@@ -161,22 +124,11 @@ LayerZero transactions require fees to cover:
161124
162125
The scripts automatically calculate these fees and include them in the transaction.
163126
164-
## Testing
165-
166-
Testing with Foundry tests is recommended before mainnet deployments.
167-
168-
```bash
169-
forge test
170-
```
171-
172127
## Troubleshooting
173128
174-
Common issues:
175-
- Insufficient gas: Ensure you have enough ETH on both networks
176-
- Missing environment variables: Check your .env file is properly loaded
177-
- Chain ID mismatch: Verify LayerZero chain IDs are correct
178129
179130
## References
180131
181132
- [LayerZero Documentation](https://layerzero.gitbook.io/docs/)
182-
- [OFT Contracts](https://github.com/LayerZero-Labs/solidity-examples/tree/main/contracts/token/oft)
133+
- [OFT Contracts](https://github.com/LayerZero-Labs/solidity-examples/tree/main/contracts/token/oft)
134+
- [iExec Platform Documentation](https://docs.iex.ec/)

script/ConfigureRLCAdapter.s.sol

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
// script/ConfigureRLCAdapter.s.sol
2-
// SPDX-License-Identifier: UNLICENSED
1+
// SPDX-FileCopyrightText: 2025 IEXEC BLOCKCHAIN TECH <[email protected]>
2+
// SPDX-License-Identifier: Apache-2.0
33
pragma solidity ^0.8.22;
44

55
import {Script, console} from "forge-std/Script.sol";
66
import {RLCAdapter} from "../src/RLCAdapter.sol";
77

8-
contract ConfigureRLCAdapter is Script {
8+
contract Configure is Script {
99
function run() external {
1010
vm.startBroadcast();
1111

1212
// RLCAdapter on Ethereum Sepolia
13-
address adapterAddress = vm.envAddress("SEPOLIA_ADAPTER_ADDRESS"); // Add your RLCAdapter address here
13+
address adapterAddress = vm.envAddress("RLC_SEPOLIA_ADAPTER_ADDRESS"); // Add your RLCAdapter address here
1414
RLCAdapter adapter = RLCAdapter(adapterAddress);
1515

1616
// RLCOFT on Arbitrum Sepolia
17-
address oftAddress = vm.envAddress("ARBITRUM_SEPOLIA_OFT_ADDRESS");
18-
uint16 arbitrumSepoliaChainId = uint16(vm.envUint("ARBITRUM_SEPOLIA_CHAIN_ID"));
17+
address oftAddress = vm.envAddress("RLC_ARBITRUM_SEPOLIA_OFT_ADDRESS");
18+
uint16 arbitrumSepoliaChainId = uint16(vm.envUint("LAYER_ZERO_ARBITRUM_SEPOLIA_CHAIN_ID"));
1919

2020
// Set trusted remote
2121
adapter.setPeer(arbitrumSepoliaChainId, bytes32(uint256(uint160(oftAddress))));

script/ConfigureRLCOFT.s.sol

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
// script/ConfigureRLCOFT.s.sol
2-
// SPDX-License-Identifier: UNLICENSED
1+
// SPDX-FileCopyrightText: 2025 IEXEC BLOCKCHAIN TECH <[email protected]>
2+
// SPDX-License-Identifier: Apache-2.0
33
pragma solidity ^0.8.22;
44

55
import {Script, console} from "forge-std/Script.sol";
66
import {RLCOFT} from "../src/RLCOFT.sol";
77

8-
contract ConfigureRLCOFT is Script {
8+
contract Configure is Script {
99
function run() external {
1010
vm.startBroadcast();
1111

1212
// RLCOFT on Arbitrum Sepolia
13-
address oftAddress = vm.envAddress("ARBITRUM_SEPOLIA_OFT_ADDRESS");
13+
address oftAddress = vm.envAddress("RLC_ARBITRUM_SEPOLIA_OFT_ADDRESS");
1414
RLCOFT oft = RLCOFT(oftAddress);
1515

1616
// RLCAdapter on Ethereum Sepolia
17-
address adapterAddress = vm.envAddress("SEPOLIA_ADAPTER_ADDRESS");// Add your RLCAdapter address here
18-
uint16 ethereumSepoliaChainId = uint16(vm.envUint("SEPOLIA_CHAIN_ID")); // LayerZero chain ID for Ethereum Sepolia
17+
address adapterAddress = vm.envAddress("RLC_SEPOLIA_ADAPTER_ADDRESS"); // Add your RLCAdapter address here
18+
uint16 ethereumSepoliaChainId = uint16(vm.envUint("LAYER_ZERO_SEPOLIA_CHAIN_ID")); // LayerZero chain ID for Ethereum Sepolia
1919

2020
// Set trusted remote
2121
oft.setPeer(ethereumSepoliaChainId, bytes32(uint256(uint160(adapterAddress))));

0 commit comments

Comments
 (0)