From fec23c7ff6e53d54db2954ed1a53e14589a94daf Mon Sep 17 00:00:00 2001 From: James Kong Date: Mon, 25 May 2026 21:34:16 +0800 Subject: [PATCH] feat!: delete Link state views BREAKING CHANGE: Removes the LinkToken and StaticLinkToken state views from the public API. --- pkg/contract/link/view/v10/link_token.go | 62 ------------- pkg/contract/link/view/v10/link_token_test.go | 87 ------------------- .../link/view/v10/static_link_token.go | 44 ---------- .../link/view/v10/static_link_token_test.go | 39 --------- 4 files changed, 232 deletions(-) delete mode 100644 pkg/contract/link/view/v10/link_token.go delete mode 100644 pkg/contract/link/view/v10/link_token_test.go delete mode 100644 pkg/contract/link/view/v10/static_link_token.go delete mode 100644 pkg/contract/link/view/v10/static_link_token_test.go diff --git a/pkg/contract/link/view/v10/link_token.go b/pkg/contract/link/view/v10/link_token.go deleted file mode 100644 index 3af12c6..0000000 --- a/pkg/contract/link/view/v10/link_token.go +++ /dev/null @@ -1,62 +0,0 @@ -package v10 - -import ( - "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/common" - linkcontracts "github.com/smartcontractkit/chainlink-deployments-framework/engine/cld/contracts/link" - - "github.com/smartcontractkit/chainlink-evm/gethwrappers/shared/generated/initial/link_token" - - cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" - - "github.com/smartcontractkit/cld-changesets/internal/semvers" - "github.com/smartcontractkit/cld-changesets/pkg/cldfutil" -) - -type LinkTokenView struct { - cldfutil.ContractMetaData - Decimals uint8 `json:"decimals"` - Supply *big.Int `json:"supply"` - Minters []common.Address `json:"minters"` - Burners []common.Address `json:"burners"` -} - -func GenerateLinkTokenView(lt *link_token.LinkToken) (LinkTokenView, error) { - owner, err := lt.Owner(nil) - if err != nil { - owner = common.Address{} - } - decimals, err := lt.Decimals(nil) - if err != nil { - return LinkTokenView{}, fmt.Errorf("failed to get decimals %s: %w", lt.Address(), err) - } - totalSupply, err := lt.TotalSupply(nil) - if err != nil { - return LinkTokenView{}, fmt.Errorf("failed to get total supply %s: %w", lt.Address(), err) - } - minters, err := lt.GetMinters(nil) - if err != nil { - minters = []common.Address{} - } - burners, err := lt.GetBurners(nil) - if err != nil { - burners = []common.Address{} - } - - return LinkTokenView{ - ContractMetaData: cldfutil.ContractMetaData{ - TypeAndVersion: cldf.TypeAndVersion{ - Type: linkcontracts.LinkToken, - Version: semvers.V1_0_0, - }.String(), - Address: lt.Address(), - Owner: owner, - }, - Decimals: decimals, - Supply: totalSupply, - Minters: minters, - Burners: burners, - }, nil -} diff --git a/pkg/contract/link/view/v10/link_token_test.go b/pkg/contract/link/view/v10/link_token_test.go deleted file mode 100644 index 8a5efb2..0000000 --- a/pkg/contract/link/view/v10/link_token_test.go +++ /dev/null @@ -1,87 +0,0 @@ -package v10 - -import ( - "math/big" - "testing" - - chainselectors "github.com/smartcontractkit/chain-selectors" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" - - "github.com/smartcontractkit/chainlink-evm/gethwrappers/shared/generated/initial/link_token" - - cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm" - "github.com/smartcontractkit/chainlink-deployments-framework/engine/test/environment" -) - -func TestLinkTokenView(t *testing.T) { - t.Parallel() - - selector := chainselectors.TEST_90000001.Selector - env, err := environment.New(t.Context(), - environment.WithEVMSimulated(t, []uint64{selector}), - ) - require.NoError(t, err) - - chain := env.BlockChains.EVMChains()[selector] - _, tx, lt, err := link_token.DeployLinkToken(chain.DeployerKey, chain.Client) - require.NoError(t, err) - _, err = chain.Confirm(tx) - require.NoError(t, err) - - testLinkTokenViewWithChain(t, chain, lt) -} - -func TestLinkTokenViewZk(t *testing.T) { - // Timeouts in CI - tests.SkipFlakey(t, "https://smartcontract-it.atlassian.net/browse/CCIP-6427") - t.Parallel() - - selector := chainselectors.TEST_90000050.Selector - env, err := environment.New(t.Context(), - environment.WithZKSyncContainer(t, []uint64{selector}), - ) - require.NoError(t, err) - - chain := env.BlockChains.EVMChains()[selector] - _, _, lt, err := link_token.DeployLinkTokenZk(nil, chain.ClientZkSyncVM, chain.DeployerKeyZkSyncVM, chain.Client) - require.NoError(t, err) - - testLinkTokenViewWithChain(t, chain, lt) -} - -func testLinkTokenViewWithChain(t *testing.T, chain cldf_evm.Chain, lt *link_token.LinkToken) { - t.Helper() - - v, err := GenerateLinkTokenView(lt) - require.NoError(t, err) - - assert.Equal(t, v.Owner, chain.DeployerKey.From) - assert.Equal(t, "LinkToken 1.0.0", v.TypeAndVersion) - assert.Equal(t, uint8(18), v.Decimals) - // Initially nothing minted and no minters/burners. - assert.Equal(t, "0", v.Supply.String()) - require.Empty(t, v.Minters) - require.Empty(t, v.Burners) - - // Add some minters - tx, err := lt.GrantMintAndBurnRoles(chain.DeployerKey, chain.DeployerKey.From) - require.NoError(t, err) - _, err = chain.Confirm(tx) - require.NoError(t, err) - tx, err = lt.Mint(chain.DeployerKey, chain.DeployerKey.From, big.NewInt(100)) - require.NoError(t, err) - _, err = chain.Confirm(tx) - require.NoError(t, err) - - v, err = GenerateLinkTokenView(lt) - require.NoError(t, err) - - assert.Equal(t, "100", v.Supply.String()) - require.Len(t, v.Minters, 1) - require.Equal(t, v.Minters[0].String(), chain.DeployerKey.From.String()) - require.Len(t, v.Burners, 1) - require.Equal(t, v.Burners[0].String(), chain.DeployerKey.From.String()) -} diff --git a/pkg/contract/link/view/v10/static_link_token.go b/pkg/contract/link/view/v10/static_link_token.go deleted file mode 100644 index a2554fd..0000000 --- a/pkg/contract/link/view/v10/static_link_token.go +++ /dev/null @@ -1,44 +0,0 @@ -package v10 - -import ( - "fmt" - "math/big" - - linkcontracts "github.com/smartcontractkit/chainlink-deployments-framework/engine/cld/contracts/link" - "github.com/smartcontractkit/chainlink-evm/gethwrappers/generated/link_token_interface" - - cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" - - "github.com/smartcontractkit/cld-changesets/internal/semvers" - "github.com/smartcontractkit/cld-changesets/pkg/cldfutil" -) - -type StaticLinkTokenView struct { - cldfutil.ContractMetaData - Decimals uint8 `json:"decimals"` - Supply *big.Int `json:"supply"` -} - -func GenerateStaticLinkTokenView(lt *link_token_interface.LinkToken) (StaticLinkTokenView, error) { - decimals, err := lt.Decimals(nil) - if err != nil { - return StaticLinkTokenView{}, fmt.Errorf("failed to get decimals %s: %w", lt.Address(), err) - } - totalSupply, err := lt.TotalSupply(nil) - if err != nil { - return StaticLinkTokenView{}, fmt.Errorf("failed to get total supply %s: %w", lt.Address(), err) - } - - return StaticLinkTokenView{ - ContractMetaData: cldfutil.ContractMetaData{ - TypeAndVersion: cldf.TypeAndVersion{ - Type: linkcontracts.StaticLinkToken, - Version: semvers.V1_0_0, - }.String(), - Address: lt.Address(), - // No owner. - }, - Decimals: decimals, - Supply: totalSupply, - }, nil -} diff --git a/pkg/contract/link/view/v10/static_link_token_test.go b/pkg/contract/link/view/v10/static_link_token_test.go deleted file mode 100644 index b8b08aa..0000000 --- a/pkg/contract/link/view/v10/static_link_token_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package v10 //nolint:revive // package name mirrors versioned contract view path - -import ( - "testing" - - "github.com/ethereum/go-ethereum/common" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - chain_selectors "github.com/smartcontractkit/chain-selectors" - - "github.com/smartcontractkit/chainlink-deployments-framework/engine/test/environment" - - "github.com/smartcontractkit/chainlink-evm/gethwrappers/generated/link_token_interface" -) - -func TestStaticLinkTokenView(t *testing.T) { - t.Parallel() - - selector := chain_selectors.TEST_90000001.Selector - env, err := environment.New(t.Context(), - environment.WithEVMSimulated(t, []uint64{selector}), - ) - require.NoError(t, err) - - chain := env.BlockChains.EVMChains()[selector] - _, tx, lt, err := link_token_interface.DeployLinkToken(chain.DeployerKey, chain.Client) - require.NoError(t, err) - _, err = chain.Confirm(tx) - require.NoError(t, err) - v, err := GenerateStaticLinkTokenView(lt) - require.NoError(t, err) - - assert.Equal(t, v.Owner, common.HexToAddress("0x0")) // Ownerless - assert.Equal(t, "StaticLinkToken 1.0.0", v.TypeAndVersion) - assert.Equal(t, uint8(18), v.Decimals) - assert.Equal(t, "1000000000000000000000000000", v.Supply.String()) -}