Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCIP-4152 Token transfer test #15130

Merged
merged 36 commits into from
Nov 6, 2024
Merged
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
0f16c5f
CCIP-3591: Adding e2e test for USDC transfer
b-gopalswami Oct 15, 2024
a9ac59a
Merge branch 'develop' of github.com:smartcontractkit/chainlink into …
b-gopalswami Oct 15, 2024
6088dfe
Merge develop
b-gopalswami Oct 16, 2024
d7bbb4a
debug
b-gopalswami Oct 16, 2024
eaadf30
Merge develop and update chainlink-ccip reference
b-gopalswami Oct 17, 2024
9725e96
temp change
b-gopalswami Oct 23, 2024
397bfd7
Merge develop
b-gopalswami Oct 23, 2024
287c1ec
Merge develop
b-gopalswami Oct 25, 2024
9053740
resolve conflict
b-gopalswami Oct 28, 2024
301bc15
Fixing chain reader init for USDC integration
mateusz-sekara Oct 29, 2024
b5ea14a
Minor fix to the debug logs
mateusz-sekara Oct 29, 2024
417742d
Approving token
b-gopalswami Oct 29, 2024
966c1c7
Merge branch 'ccip-3591' of github.com:smartcontractkit/chainlink int…
b-gopalswami Oct 29, 2024
a3667fd
Merge develop and resolve conflicts
b-gopalswami Oct 30, 2024
6517368
Send tokens in send request
b-gopalswami Nov 4, 2024
a8ca4f6
Merge develop and fix conflicts
b-gopalswami Nov 4, 2024
adf2afe
Add registry module and register pool
b-gopalswami Nov 4, 2024
1a0eecc
Bump
mateusz-sekara Nov 5, 2024
c241523
Bump
mateusz-sekara Nov 5, 2024
e9ffe2a
Burn/Mint permissions
mateusz-sekara Nov 6, 2024
6b28d60
Proper addresses
mateusz-sekara Nov 6, 2024
c8d854f
Working test
mateusz-sekara Nov 6, 2024
ef31938
Working test
mateusz-sekara Nov 6, 2024
e5cabab
Working test
mateusz-sekara Nov 6, 2024
5740e6d
Removing USDC part
mateusz-sekara Nov 6, 2024
e8823af
Removing USDC part
mateusz-sekara Nov 6, 2024
7ca40a9
Removing USDC part
mateusz-sekara Nov 6, 2024
985a236
Removing USDC part
mateusz-sekara Nov 6, 2024
a8aa253
Merge remote-tracking branch 'origin/develop' into ms/token-transfer
mateusz-sekara Nov 6, 2024
0f95208
Removing USDC part
mateusz-sekara Nov 6, 2024
0a35be9
Removing USDC part
mateusz-sekara Nov 6, 2024
be245a4
Removing USDC part
mateusz-sekara Nov 6, 2024
3762416
Removing USDC part
mateusz-sekara Nov 6, 2024
6aff29a
Removing USDC part
mateusz-sekara Nov 6, 2024
61932fc
Removing USDC part
mateusz-sekara Nov 6, 2024
5b4f78b
Post review fixes
mateusz-sekara Nov 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Removing USDC part
mateusz-sekara committed Nov 6, 2024
commit 5740e6d2188e7996f36665be3b3fcc8b3c6fea6b
1 change: 0 additions & 1 deletion deployment/ccip/changeset/active_candidate.go
Original file line number Diff line number Diff line change
@@ -184,7 +184,6 @@ func SetCandidatePluginProposal(
tokenConfig.GetTokenInfo(e.Logger, state.Chains[newChainSel].LinkToken, state.Chains[newChainSel].Weth9),
nodes.NonBootstraps(),
state.Chains[homeChainSel].RMNHome.Address(),
nil,
)
if err != nil {
return nil, err
12 changes: 1 addition & 11 deletions deployment/ccip/changeset/add_chain.go
Original file line number Diff line number Diff line change
@@ -92,17 +92,7 @@ func AddDonAndSetCandidateProposal(
tokenConfig ccipdeployment.TokenConfig,
pluginType types.PluginType,
) (*timelock.MCMSWithTimelockProposal, error) {
newDONArgs, err := ccipdeployment.BuildOCR3ConfigForCCIPHome(
e.Logger,
ocrSecrets,
state.Chains[newChainSel].OffRamp,
e.Chains[newChainSel],
feedChainSel,
tokenConfig.GetTokenInfo(e.Logger, state.Chains[newChainSel].LinkToken, state.Chains[newChainSel].Weth9),
nodes.NonBootstraps(),
state.Chains[homeChainSel].RMNHome.Address(),
nil,
)
newDONArgs, err := ccipdeployment.BuildOCR3ConfigForCCIPHome(e.Logger, ocrSecrets, state.Chains[newChainSel].OffRamp, e.Chains[newChainSel], feedChainSel, tokenConfig.GetTokenInfo(e.Logger, state.Chains[newChainSel].LinkToken, state.Chains[newChainSel].Weth9), nodes.NonBootstraps(), state.Chains[homeChainSel].RMNHome.Address())
if err != nil {
return nil, err
}
1 change: 0 additions & 1 deletion deployment/ccip/consts.go
Original file line number Diff line number Diff line change
@@ -5,7 +5,6 @@ type TokenSymbol string
const (
LinkSymbol TokenSymbol = "LINK"
WethSymbol TokenSymbol = "WETH"
USDCSymbol TokenSymbol = "USDC"
LinkDecimals = 18
WethDecimals = 18
)
57 changes: 5 additions & 52 deletions deployment/ccip/deploy.go
Original file line number Diff line number Diff line change
@@ -12,16 +12,10 @@ import (
"github.com/smartcontractkit/ccip-owner-contracts/pkg/config"
owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/pkg/gethwrappers"

cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3"
"github.com/smartcontractkit/chainlink-ccip/pluginconfig"
commonconfig "github.com/smartcontractkit/chainlink-common/pkg/config"
"github.com/smartcontractkit/chainlink-common/pkg/logger"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/fee_quoter"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_usdc_token_messenger"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_usdc_token_transmitter"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/registry_module_owner_custom"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/rmn_home"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/usdc_token_pool"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/aggregator_v3_interface"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/erc20"

@@ -65,12 +59,10 @@ var (
CapabilitiesRegistry deployment.ContractType = "CapabilitiesRegistry"
PriceFeed deployment.ContractType = "PriceFeed"
// Note test router maps to a regular router contract.
TestRouter deployment.ContractType = "TestRouter"
CCIPReceiver deployment.ContractType = "CCIPReceiver"
USDCToken deployment.ContractType = "USDCToken"
USDCMockTransmitter deployment.ContractType = "USDCMockTransmitter"
USDCTokenMessenger deployment.ContractType = "USDCTokenMessenger"
USDCTokenPool deployment.ContractType = "USDCTokenPool"
TestRouter deployment.ContractType = "TestRouter"
CCIPReceiver deployment.ContractType = "CCIPReceiver"
BurnMintToken deployment.ContractType = "BurnMintToken"
BurnMintTokenPool deployment.ContractType = "BurnMintTokenPool"
)

type Contracts interface {
@@ -93,10 +85,7 @@ type Contracts interface {
*burn_mint_token_pool.BurnMintTokenPool |
*maybe_revert_message_receiver.MaybeRevertMessageReceiver |
*aggregator_v3_interface.AggregatorV3Interface |
*erc20.ERC20 |
*mock_usdc_token_transmitter.MockE2EUSDCTransmitter |
*mock_usdc_token_messenger.MockE2EUSDCTokenMessenger |
*usdc_token_pool.USDCTokenPool
*erc20.ERC20
}

type ContractDeploy[C Contracts] struct {
@@ -135,17 +124,6 @@ func deployContract[C Contracts](
return &contractDeploy, nil
}

type USDCConfig struct {
Enabled bool
USDCAttestationConfig
}

type USDCAttestationConfig struct {
API string
APITimeout *commonconfig.Duration
APIInterval *commonconfig.Duration
}

type DeployCCIPContractConfig struct {
HomeChainSel uint64
FeedChainSel uint64
@@ -154,7 +132,6 @@ type DeployCCIPContractConfig struct {
// I believe it makes sense to have the same signers across all chains
// since that's the point MCMS.
MCMSConfig MCMSConfig
USDCConfig USDCConfig
// For setting OCR configuration
OCRSecrets deployment.OCRSecrets
}
@@ -240,11 +217,6 @@ func DeployCCIPContracts(e deployment.Environment, ab deployment.AddressBook, c
if err != nil {
return err
}
if c.USDCConfig.Enabled {
if err = DeployUSDCToken(e.Logger, chain, ab); err != nil {
return err
}
}
chainAddresses, err := ab.AddressesForChain(chain.Selector)
if err != nil {
e.Logger.Errorw("Failed to get chain addresses", "err", err)
@@ -268,24 +240,6 @@ func DeployCCIPContracts(e deployment.Environment, ab deployment.AddressBook, c
if err != nil {
return err
}
var tokenDataObserversConf []pluginconfig.TokenDataObserverConfig
if c.USDCConfig.Enabled {
tokenDataObserversConf = []pluginconfig.TokenDataObserverConfig{{
Type: pluginconfig.USDCCCTPHandlerType,
Version: "1.0",
USDCCCTPObserverConfig: &pluginconfig.USDCCCTPObserverConfig{
Tokens: map[cciptypes.ChainSelector]pluginconfig.USDCCCTPTokenConfig{
cciptypes.ChainSelector(chain.Selector): {
SourcePoolAddress: chainState.USDCTokenPool.Address().Hex(),
SourceMessageTransmitterAddr: chainState.MockUSDCTransmitter.Address().Hex(),
},
},
AttestationAPI: c.USDCConfig.API,
AttestationAPITimeout: c.USDCConfig.APITimeout,
AttestationAPIInterval: c.USDCConfig.APIInterval,
},
}}
}
// For each chain, we create a DON on the home chain (2 OCR instances)
if err := AddDON(
e.Logger,
@@ -299,7 +253,6 @@ func DeployCCIPContracts(e deployment.Environment, ab deployment.AddressBook, c
chain,
e.Chains[c.HomeChainSel],
nodes.NonBootstraps(),
tokenDataObserversConf,
); err != nil {
e.Logger.Errorw("Failed to add DON", "err", err)
return err
18 changes: 3 additions & 15 deletions deployment/ccip/deploy_home_chain.go
Original file line number Diff line number Diff line change
@@ -307,18 +307,7 @@ func AddChainConfig(
return chainConfig, nil
}

func BuildOCR3ConfigForCCIPHome(
lggr logger.Logger,
ocrSecrets deployment.OCRSecrets,
offRamp *offramp.OffRamp,
dest deployment.Chain,
feedChainSel uint64,
// Token address on Dest chain to aggregate address on feed chain
tokenInfo map[ccipocr3.UnknownEncodedAddress]pluginconfig.TokenInfo,
nodes deployment.Nodes,
rmnHomeAddress common.Address,
tokenDataObservers []pluginconfig.TokenDataObserverConfig,
) (map[cctypes.PluginType]ccip_home.CCIPHomeOCR3Config, error) {
func BuildOCR3ConfigForCCIPHome(lggr logger.Logger, ocrSecrets deployment.OCRSecrets, offRamp *offramp.OffRamp, dest deployment.Chain, feedChainSel uint64, tokenInfo map[ccipocr3.UnknownEncodedAddress]pluginconfig.TokenInfo, nodes deployment.Nodes, rmnHomeAddress common.Address) (map[cctypes.PluginType]ccip_home.CCIPHomeOCR3Config, error) {
p2pIDs := nodes.PeerIDs()
// Get OCR3 Config from helper
var schedule []int
@@ -361,7 +350,7 @@ func BuildOCR3ConfigForCCIPHome(
InflightCacheExpiry: *commonconfig.MustNewDuration(InflightCacheExpiry),
RootSnoozeTime: *commonconfig.MustNewDuration(RootSnoozeTime),
BatchingStrategyID: BatchingStrategyID,
TokenDataObservers: tokenDataObservers,
TokenDataObservers: []pluginconfig.TokenDataObserverConfig{},
})
}
if err2 != nil {
@@ -892,9 +881,8 @@ func AddDON(
dest deployment.Chain,
home deployment.Chain,
nodes deployment.Nodes,
tokenDataObserversConfig []pluginconfig.TokenDataObserverConfig,
) error {
ocrConfigs, err := BuildOCR3ConfigForCCIPHome(lggr, ocrSecrets, offRamp, dest, feedChainSel, tokenInfo, nodes, rmnHomeAddress, tokenDataObserversConfig)
ocrConfigs, err := BuildOCR3ConfigForCCIPHome(lggr, ocrSecrets, offRamp, dest, feedChainSel, tokenInfo, nodes, rmnHomeAddress)
if err != nil {
return err
}
28 changes: 1 addition & 27 deletions deployment/ccip/state.go
Original file line number Diff line number Diff line change
@@ -52,7 +52,7 @@ type CCIPChainState struct {
RMNProxy *rmn_proxy_contract.RMNProxyContract
NonceManager *nonce_manager.NonceManager
TokenAdminRegistry *token_admin_registry.TokenAdminRegistry
RegistryModule *registry_module_owner_custom.RegistryModuleOwnerCustom
RegistryModule *registry_module_owner_custom.RegistryModuleOwnerCustom
Router *router.Router
CommitStore *commit_store.CommitStore
Weth9 *weth9.WETH9
@@ -358,32 +358,6 @@ func LoadChainState(chain deployment.Chain, addresses map[string]deployment.Type
return state, err
}
state.LinkToken = lt
case deployment.NewTypeAndVersion(USDCToken, deployment.Version1_0_0).String():
ut, err := burn_mint_erc677.NewBurnMintERC677(common.HexToAddress(address), chain.Client)
if err != nil {
return state, err
}
state.BurnMintTokens677 = map[TokenSymbol]*burn_mint_erc677.BurnMintERC677{
USDCSymbol: ut,
}
case deployment.NewTypeAndVersion(USDCTokenPool, deployment.Version1_0_0).String():
utp, err := usdc_token_pool.NewUSDCTokenPool(common.HexToAddress(address), chain.Client)
if err != nil {
return state, err
}
state.USDCTokenPool = utp
case deployment.NewTypeAndVersion(USDCMockTransmitter, deployment.Version1_0_0).String():
umt, err := mock_usdc_token_transmitter.NewMockE2EUSDCTransmitter(common.HexToAddress(address), chain.Client)
if err != nil {
return state, err
}
state.MockUSDCTransmitter = umt
case deployment.NewTypeAndVersion(USDCTokenMessenger, deployment.Version1_0_0).String():
utm, err := mock_usdc_token_messenger.NewMockE2EUSDCTokenMessenger(common.HexToAddress(address), chain.Client)
if err != nil {
return state, err
}
state.MockUSDCTokenMessenger = utm
case deployment.NewTypeAndVersion(CCIPHome, deployment.Version1_6_0_dev).String():
ccipHome, err := ccip_home.NewCCIPHome(common.HexToAddress(address), chain.Client)
if err != nil {
Loading