Skip to content

Commit a76c17c

Browse files
authored
chore: Migrate Chainlink Local CCT guides to v1.5.1 (#2221)
1 parent ba12824 commit a76c17c

File tree

2 files changed

+78
-38
lines changed

2 files changed

+78
-38
lines changed

src/content/chainlink-local/build/ccip/foundry/cct-burn-and-mint-fork.mdx

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,10 @@ contract CCIPv1_5BurnMintPoolFork is Test {
167167
CCIPLocalSimulatorFork public ccipLocalSimulatorFork;
168168
MockERC20BurnAndMintToken public mockERC20TokenEthSepolia;
169169
MockERC20BurnAndMintToken public mockERC20TokenBaseSepolia;
170+
BurnMintTokenPool public burnMintTokenPoolEthSepolia;
171+
BurnMintTokenPool public burnMintTokenPoolBaseSepolia;
170172
173+
Register.NetworkDetails ethSepoliaNetworkDetails;
171174
Register.NetworkDetails baseSepoliaNetworkDetails;
172175
173176
uint256 ethSepoliaFork;
@@ -230,12 +233,14 @@ contract CCIPv1_5BurnMintPoolFork is Test {
230233
function test_forkSupportNewCCIPToken() public {
231234
// Step 3) Deploy BurnMintTokenPool on Ethereum Sepolia
232235
vm.selectFork(ethSepoliaFork);
233-
Register.NetworkDetails memory ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
236+
ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
234237
address[] memory allowlist = new address[](0);
238+
uint8 localTokenDecimals = 18;
235239
236240
vm.startPrank(alice);
237-
BurnMintTokenPool burnMintTokenPoolEthSepolia = new BurnMintTokenPool(
241+
burnMintTokenPoolEthSepolia = new BurnMintTokenPool(
238242
IBurnMintERC20(address(mockERC20TokenEthSepolia)),
243+
localTokenDecimals,
239244
allowlist,
240245
ethSepoliaNetworkDetails.rmnProxyAddress,
241246
ethSepoliaNetworkDetails.routerAddress
@@ -257,8 +262,9 @@ contract CCIPv1_5BurnMintPoolFork is Test {
257262
baseSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
258263
259264
vm.startPrank(alice);
260-
BurnMintTokenPool burnMintTokenPoolBaseSepolia = new BurnMintTokenPool(
265+
burnMintTokenPoolBaseSepolia = new BurnMintTokenPool(
261266
IBurnMintERC20(address(mockERC20TokenBaseSepolia)),
267+
localTokenDecimals,
262268
allowlist,
263269
baseSepoliaNetworkDetails.rmnProxyAddress,
264270
baseSepoliaNetworkDetails.routerAddress
@@ -434,15 +440,17 @@ contract CCIPv1_5BurnMintPoolFork is Test {
434440
435441
vm.startPrank(alice);
436442
TokenPool.ChainUpdate[] memory chains = new TokenPool.ChainUpdate[](1);
443+
bytes[] memory remotePoolAddressesEthSepolia = new bytes[](1);
444+
remotePoolAddressesEthSepolia[0] = abi.encode(address(burnMintTokenPoolEthSepolia));
437445
chains[0] = TokenPool.ChainUpdate({
438446
remoteChainSelector: baseSepoliaNetworkDetails.chainSelector,
439-
allowed: true,
440-
remotePoolAddress: abi.encode(address(burnMintTokenPoolBaseSepolia)),
447+
remotePoolAddresses: remotePoolAddressesEthSepolia,
441448
remoteTokenAddress: abi.encode(address(mockERC20TokenBaseSepolia)),
442449
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 }),
443450
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 })
444451
});
445-
burnMintTokenPoolEthSepolia.applyChainUpdates(chains);
452+
uint64[] memory remoteChainSelectorsToRemove = new uint64[](0);
453+
burnMintTokenPoolEthSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
446454
vm.stopPrank();
447455
}
448456
}
@@ -460,15 +468,16 @@ contract CCIPv1_5BurnMintPoolFork is Test {
460468
461469
vm.startPrank(alice);
462470
chains = new TokenPool.ChainUpdate[](1);
471+
bytes[] memory remotePoolAddressesBaseSepolia = new bytes[](1);
472+
remotePoolAddressesBaseSepolia[0] = abi.encode(address(burnMintTokenPoolEthSepolia));
463473
chains[0] = TokenPool.ChainUpdate({
464474
remoteChainSelector: ethSepoliaNetworkDetails.chainSelector,
465-
allowed: true,
466-
remotePoolAddress: abi.encode(address(burnMintTokenPoolEthSepolia)),
475+
remotePoolAddresses: remotePoolAddressesBaseSepolia,
467476
remoteTokenAddress: abi.encode(address(mockERC20TokenEthSepolia)),
468477
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 }),
469478
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 })
470479
});
471-
burnMintTokenPoolBaseSepolia.applyChainUpdates(chains);
480+
burnMintTokenPoolBaseSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
472481
vm.stopPrank();
473482
}
474483
}
@@ -590,7 +599,10 @@ contract CCIPv1_5BurnMintPoolFork is Test {
590599
CCIPLocalSimulatorFork public ccipLocalSimulatorFork;
591600
MockERC20BurnAndMintToken public mockERC20TokenEthSepolia;
592601
MockERC20BurnAndMintToken public mockERC20TokenBaseSepolia;
602+
BurnMintTokenPool public burnMintTokenPoolEthSepolia;
603+
BurnMintTokenPool public burnMintTokenPoolBaseSepolia;
593604
605+
Register.NetworkDetails ethSepoliaNetworkDetails;
594606
Register.NetworkDetails baseSepoliaNetworkDetails;
595607
596608
uint256 ethSepoliaFork;
@@ -625,12 +637,14 @@ contract CCIPv1_5BurnMintPoolFork is Test {
625637
function test_forkSupportNewCCIPToken() public {
626638
// Step 3) Deploy BurnMintTokenPool on Ethereum Sepolia
627639
vm.selectFork(ethSepoliaFork);
628-
Register.NetworkDetails memory ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
640+
ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
629641
address[] memory allowlist = new address[](0);
642+
uint8 localTokenDecimals = 18;
630643
631644
vm.startPrank(alice);
632-
BurnMintTokenPool burnMintTokenPoolEthSepolia = new BurnMintTokenPool(
645+
burnMintTokenPoolEthSepolia = new BurnMintTokenPool(
633646
IBurnMintERC20(address(mockERC20TokenEthSepolia)),
647+
localTokenDecimals,
634648
allowlist,
635649
ethSepoliaNetworkDetails.rmnProxyAddress,
636650
ethSepoliaNetworkDetails.routerAddress
@@ -642,8 +656,9 @@ contract CCIPv1_5BurnMintPoolFork is Test {
642656
baseSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
643657
644658
vm.startPrank(alice);
645-
BurnMintTokenPool burnMintTokenPoolBaseSepolia = new BurnMintTokenPool(
659+
burnMintTokenPoolBaseSepolia = new BurnMintTokenPool(
646660
IBurnMintERC20(address(mockERC20TokenBaseSepolia)),
661+
localTokenDecimals,
647662
allowlist,
648663
baseSepoliaNetworkDetails.rmnProxyAddress,
649664
baseSepoliaNetworkDetails.routerAddress
@@ -729,31 +744,34 @@ contract CCIPv1_5BurnMintPoolFork is Test {
729744
730745
vm.startPrank(alice);
731746
TokenPool.ChainUpdate[] memory chains = new TokenPool.ChainUpdate[](1);
747+
bytes[] memory remotePoolAddressesEthSepolia = new bytes[](1);
748+
remotePoolAddressesEthSepolia[0] = abi.encode(address(burnMintTokenPoolEthSepolia));
732749
chains[0] = TokenPool.ChainUpdate({
733750
remoteChainSelector: baseSepoliaNetworkDetails.chainSelector,
734-
allowed: true,
735-
remotePoolAddress: abi.encode(address(burnMintTokenPoolBaseSepolia)),
751+
remotePoolAddresses: remotePoolAddressesEthSepolia,
736752
remoteTokenAddress: abi.encode(address(mockERC20TokenBaseSepolia)),
737753
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 }),
738754
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 })
739755
});
740-
burnMintTokenPoolEthSepolia.applyChainUpdates(chains);
756+
uint64[] memory remoteChainSelectorsToRemove = new uint64[](0);
757+
burnMintTokenPoolEthSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
741758
vm.stopPrank();
742759
743760
// Step 14) Configure Token Pool on Base Sepolia
744761
vm.selectFork(baseSepoliaFork);
745762
746763
vm.startPrank(alice);
747764
chains = new TokenPool.ChainUpdate[](1);
765+
bytes[] memory remotePoolAddressesBaseSepolia = new bytes[](1);
766+
remotePoolAddressesBaseSepolia[0] = abi.encode(address(burnMintTokenPoolEthSepolia));
748767
chains[0] = TokenPool.ChainUpdate({
749768
remoteChainSelector: ethSepoliaNetworkDetails.chainSelector,
750-
allowed: true,
751-
remotePoolAddress: abi.encode(address(burnMintTokenPoolEthSepolia)),
769+
remotePoolAddresses: remotePoolAddressesBaseSepolia,
752770
remoteTokenAddress: abi.encode(address(mockERC20TokenEthSepolia)),
753771
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 }),
754772
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: 100_000, rate: 167 })
755773
});
756-
burnMintTokenPoolBaseSepolia.applyChainUpdates(chains);
774+
burnMintTokenPoolBaseSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
757775
vm.stopPrank();
758776
759777
// Step 15) Mint tokens on Ethereum Sepolia and transfer them to Base Sepolia

src/content/chainlink-local/build/ccip/foundry/cct-lock-and-release-fork.mdx

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ contract CCIPv1_5LockReleasePoolFork is Test {
134134
CCIPLocalSimulatorFork public ccipLocalSimulatorFork;
135135
MockERC20TokenOwner public mockERC20TokenEthSepolia;
136136
MockERC20TokenOwner public mockERC20TokenBaseSepolia;
137+
LockReleaseTokenPool public lockReleaseTokenPoolEthSepolia;
138+
LockReleaseTokenPool public lockReleaseTokenPoolBaseSepolia;
139+
140+
Register.NetworkDetails ethSepoliaNetworkDetails;
141+
Register.NetworkDetails baseSepoliaNetworkDetails;
137142
138143
uint256 ethSepoliaFork;
139144
uint256 baseSepoliaFork;
@@ -195,12 +200,14 @@ contract CCIPv1_5LockReleasePoolFork is Test {
195200
function test_forkSupportNewCCIPToken() public {
196201
// Step 3) Deploy LockReleaseTokenPool on Ethereum Sepolia
197202
vm.selectFork(ethSepoliaFork);
198-
Register.NetworkDetails memory ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
203+
ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
199204
address[] memory allowlist = new address[](0);
205+
uint8 localTokenDecimals = 18;
200206
201207
vm.startPrank(alice);
202-
LockReleaseTokenPool lockReleaseTokenPoolEthSepolia = new LockReleaseTokenPool(
208+
lockReleaseTokenPoolEthSepolia = new LockReleaseTokenPool(
203209
IERC20(address(mockERC20TokenEthSepolia)),
210+
localTokenDecimals,
204211
allowlist,
205212
ethSepoliaNetworkDetails.rmnProxyAddress,
206213
true, // acceptLiquidity
@@ -220,11 +227,12 @@ contract CCIPv1_5LockReleasePoolFork is Test {
220227
221228
// Step 4) Deploy LockReleaseTokenPool on Base Sepolia
222229
vm.selectFork(baseSepoliaFork);
223-
Register.NetworkDetails memory baseSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
230+
baseSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
224231
225232
vm.startPrank(alice);
226-
LockReleaseTokenPool lockReleaseTokenPoolBaseSepolia = new LockReleaseTokenPool(
233+
lockReleaseTokenPoolBaseSepolia = new LockReleaseTokenPool(
227234
IERC20(address(mockERC20TokenBaseSepolia)),
235+
localTokenDecimals,
228236
allowlist,
229237
baseSepoliaNetworkDetails.rmnProxyAddress,
230238
true, // acceptLiquidity
@@ -407,15 +415,17 @@ contract CCIPv1_5LockReleasePoolFork is Test {
407415
408416
vm.startPrank(alice);
409417
TokenPool.ChainUpdate[] memory chains = new TokenPool.ChainUpdate[](1);
418+
bytes[] memory remotePoolAddressesEthSepolia = new bytes[](1);
419+
remotePoolAddressesEthSepolia[0] = abi.encode(address(lockReleaseTokenPoolBaseSepolia));
410420
chains[0] = TokenPool.ChainUpdate({
411421
remoteChainSelector: baseSepoliaNetworkDetails.chainSelector,
412-
allowed: true,
413-
remotePoolAddress: abi.encode(address(lockReleaseTokenPoolBaseSepolia)),
422+
remotePoolAddresses: remotePoolAddressesEthSepolia,
414423
remoteTokenAddress: abi.encode(address(mockERC20TokenBaseSepolia)),
415424
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 }),
416425
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 })
417426
});
418-
lockReleaseTokenPoolEthSepolia.applyChainUpdates(chains);
427+
uint64[] memory remoteChainSelectorsToRemove = new uint64[](0);
428+
lockReleaseTokenPoolEthSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
419429
vm.stopPrank();
420430
}
421431
}
@@ -433,15 +443,16 @@ contract CCIPv1_5LockReleasePoolFork is Test {
433443
434444
vm.startPrank(alice);
435445
chains = new TokenPool.ChainUpdate[](1);
446+
bytes[] memory remotePoolAddressesBaseSepolia = new bytes[](1);
447+
remotePoolAddressesBaseSepolia[0] = abi.encode(address(lockReleaseTokenPoolEthSepolia));
436448
chains[0] = TokenPool.ChainUpdate({
437449
remoteChainSelector: ethSepoliaNetworkDetails.chainSelector,
438-
allowed: true,
439-
remotePoolAddress: abi.encode(address(lockReleaseTokenPoolEthSepolia)),
450+
remotePoolAddresses: remotePoolAddressesBaseSepolia,
440451
remoteTokenAddress: abi.encode(address(mockERC20TokenEthSepolia)),
441452
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 }),
442453
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 })
443454
});
444-
lockReleaseTokenPoolBaseSepolia.applyChainUpdates(chains);
455+
lockReleaseTokenPoolBaseSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
445456
vm.stopPrank();
446457
}
447458
}
@@ -534,6 +545,11 @@ contract CCIPv1_5LockReleasePoolFork is Test {
534545
CCIPLocalSimulatorFork public ccipLocalSimulatorFork;
535546
MockERC20TokenOwner public mockERC20TokenEthSepolia;
536547
MockERC20TokenOwner public mockERC20TokenBaseSepolia;
548+
LockReleaseTokenPool public lockReleaseTokenPoolEthSepolia;
549+
LockReleaseTokenPool public lockReleaseTokenPoolBaseSepolia;
550+
551+
Register.NetworkDetails ethSepoliaNetworkDetails;
552+
Register.NetworkDetails baseSepoliaNetworkDetails;
537553
538554
uint256 ethSepoliaFork;
539555
uint256 baseSepoliaFork;
@@ -567,12 +583,14 @@ contract CCIPv1_5LockReleasePoolFork is Test {
567583
function test_forkSupportNewCCIPToken() public {
568584
// Step 3) Deploy LockReleaseTokenPool on Ethereum Sepolia
569585
vm.selectFork(ethSepoliaFork);
570-
Register.NetworkDetails memory ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
586+
ethSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
571587
address[] memory allowlist = new address[](0);
588+
uint8 localTokenDecimals = 18;
572589
573590
vm.startPrank(alice);
574-
LockReleaseTokenPool lockReleaseTokenPoolEthSepolia = new LockReleaseTokenPool(
591+
lockReleaseTokenPoolEthSepolia = new LockReleaseTokenPool(
575592
IERC20(address(mockERC20TokenEthSepolia)),
593+
localTokenDecimals,
576594
allowlist,
577595
ethSepoliaNetworkDetails.rmnProxyAddress,
578596
true, // acceptLiquidity
@@ -582,11 +600,12 @@ contract CCIPv1_5LockReleasePoolFork is Test {
582600
583601
// Step 4) Deploy LockReleaseTokenPool on Base Sepolia
584602
vm.selectFork(baseSepoliaFork);
585-
Register.NetworkDetails memory baseSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
603+
baseSepoliaNetworkDetails = ccipLocalSimulatorFork.getNetworkDetails(block.chainid);
586604
587605
vm.startPrank(alice);
588-
LockReleaseTokenPool lockReleaseTokenPoolBaseSepolia = new LockReleaseTokenPool(
606+
lockReleaseTokenPoolBaseSepolia = new LockReleaseTokenPool(
589607
IERC20(address(mockERC20TokenBaseSepolia)),
608+
localTokenDecimals,
590609
allowlist,
591610
baseSepoliaNetworkDetails.rmnProxyAddress,
592611
true, // acceptLiquidity
@@ -679,31 +698,34 @@ contract CCIPv1_5LockReleasePoolFork is Test {
679698
680699
vm.startPrank(alice);
681700
TokenPool.ChainUpdate[] memory chains = new TokenPool.ChainUpdate[](1);
701+
bytes[] memory remotePoolAddressesEthSepolia = new bytes[](1);
702+
remotePoolAddressesEthSepolia[0] = abi.encode(address(lockReleaseTokenPoolBaseSepolia));
682703
chains[0] = TokenPool.ChainUpdate({
683704
remoteChainSelector: baseSepoliaNetworkDetails.chainSelector,
684-
allowed: true,
685-
remotePoolAddress: abi.encode(address(lockReleaseTokenPoolBaseSepolia)),
705+
remotePoolAddresses: remotePoolAddressesEthSepolia,
686706
remoteTokenAddress: abi.encode(address(mockERC20TokenBaseSepolia)),
687707
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 }),
688708
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 })
689709
});
690-
lockReleaseTokenPoolEthSepolia.applyChainUpdates(chains);
710+
uint64[] memory remoteChainSelectorsToRemove = new uint64[](0);
711+
lockReleaseTokenPoolEthSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
691712
vm.stopPrank();
692713
693714
// Step 14) Configure Token Pool on Base Sepolia
694715
vm.selectFork(baseSepoliaFork);
695716
696717
vm.startPrank(alice);
697718
chains = new TokenPool.ChainUpdate[](1);
719+
bytes[] memory remotePoolAddressesBaseSepolia = new bytes[](1);
720+
remotePoolAddressesBaseSepolia[0] = abi.encode(address(lockReleaseTokenPoolEthSepolia));
698721
chains[0] = TokenPool.ChainUpdate({
699722
remoteChainSelector: ethSepoliaNetworkDetails.chainSelector,
700-
allowed: true,
701-
remotePoolAddress: abi.encode(address(lockReleaseTokenPoolEthSepolia)),
723+
remotePoolAddresses: remotePoolAddressesBaseSepolia,
702724
remoteTokenAddress: abi.encode(address(mockERC20TokenEthSepolia)),
703725
outboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 }),
704726
inboundRateLimiterConfig: RateLimiter.Config({ isEnabled: true, capacity: liquidityAmount, rate: 167 })
705727
});
706-
lockReleaseTokenPoolBaseSepolia.applyChainUpdates(chains);
728+
lockReleaseTokenPoolBaseSepolia.applyChainUpdates(remoteChainSelectorsToRemove, chains);
707729
vm.stopPrank();
708730
709731
// Step 15) Transfer tokens from Ethereum Sepolia to Base Sepolia

0 commit comments

Comments
 (0)