Skip to content

feat(cct-sdk): EVM contract verification as dedicated subpath - #337

Draft
apedrob wants to merge 76 commits into
mainfrom
feature/DAPP-10826-evm-verify-contract
Draft

apedrob wants to merge 76 commits into
mainfrom
feature/DAPP-10826-evm-verify-contract

Conversation

@apedrob

@apedrob apedrob commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

No description provided.

apedrob and others added 30 commits June 12, 2026 17:25
mervin-link and others added 26 commits July 15, 2026 21:00
## What

- [DAPP-10500](https://smartcontract-it.atlassian.net/browse/DAPP-10500)
- Add Solana CCT SDK support for appending addresses to an existing
lookup table
- Share CCIP lookup table address derivation between create and append
operations
- Add validation for ALT existence, authority mismatch, address sources,
and 256-address capacity limits

## Why

- Vault-owned ALTs need to be created empty and populated later through
the vault authority, which requires an extend-only operation that can be
serialized for external signing

[DAPP-10500]:
https://smartcontract-it.atlassian.net/browse/DAPP-10500?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
## What
-
[DAPP-10175](https://smartcontract-it.atlassian.net/browse/DAPP-10175):
Add the CCT SDK at `@chainlink/ccip-sdk/cct`
- Introduce `EVMTokenManager` with `generateUnsignedSetPool` (build
unsigned tx) and `setPool` (sign + submit)
- Add `setPool` operation module: validates params, encodes
`setPool(localToken, pool)`, discovers `TokenAdminRegistry` via router
- Add `Operation` / `EVMOperation` lifecycle abstraction (validate →
encode → submit)
- Add shared CCT infra: `TokenManager` base, submit action, address
validations, and error types

## Why
- TMEM's Set Pool flow currently builds calldata client-side via
`ccip-contracts`. This adds a first-class SDK path for CCT admin ops so
consumers (partners / dapp team) can build and submit txs server-side
with consistent validation and error handling

# Testing
- CI

## Notes

- smartcontractkit/explorer#10928 vendors this
SDK and wires it into our server-side endpoint
- [CCT SDK Architecture & Requirements
(DD)](https://docs.google.com/document/d/1-4Q-l5bc_kX5olWH3JWOT2Sl5oqaESUFlum2LQNxs4Y/edit?usp=sharing)

[DAPP-10175]:
https://smartcontract-it.atlassian.net/browse/DAPP-10175?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
## What

- [DAPP-10480](https://smartcontract-it.atlassian.net/browse/DAPP-10480)
and
[DAPP-10500](https://smartcontract-it.atlassian.net/browse/DAPP-10500)
- Add Solana CCT `createLookupTable` and `appendToLookupTable` operation
for generating pool lookup table instructions
- Support typed Solana unsigned results with extra metadata such as
`lookupTableAddress`
- Add optional `computeUnits` support to Solana CCT execute params

## Why

- Solana token pool setup needs a reusable SDK operation to build ALT
instructions and return the derived lookup table address
- Future Solana CCT operations may also need generated metadata results
alongside unsigned transaction instructions

[DAPP-10480]:
https://smartcontract-it.atlassian.net/browse/DAPP-10480?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

[DAPP-10500]:
https://smartcontract-it.atlassian.net/browse/DAPP-10500?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
* chore(cct-sdk): Gate subtree from public releases

* Fix line comment
* feat: add deploy token op solana

* fix: add tsdoc

* fix: address comments

* fix: address comments
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* add example doc for op

* linting fix
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* fix: address comments

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* fix: address comments

* fix: export resolveTokenMint
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* feat: add create token multisig op solana

* fix: refactor validators

* fix: refactor validators

* fix: export pool programs and type

* fix: use current module's PublicKey

* fix: address comments

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* fix: change to TransactionResult

* fix: address comments

* fix: export resolveTokenMint

* fix: merge conflicts
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* fix: address comments
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* Address comments and linting
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* Update doc
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* fix: get pool state tests

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* fix: address comments

* fix: refactor solana ops

* fix: package-lock file

* fix: package script

* fix: remove cct exports and add script to pack package including cct

* fix: address comments

* fix: address comments

* fix: add comment
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* refactor(cct-sdk): add validateNonZeroAddress + guard single-tx submit

* feat(cct-sdk): EVM deploy verification + unify deploy ops

* Address PR comments

* Review pass
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments
@vercel

vercel Bot commented Aug 6, 2026

Copy link
Copy Markdown

You must have Developer access to commit code to Chainlink Labs on Vercel. If you contact an administrator and receive Developer access, commit again to see your changes.

Learn more: https://vercel.com/docs/accounts/team-members-and-roles/access-roles#team-level-roles

@apedrob
apedrob force-pushed the cct-sdk branch 2 times, most recently from e2b4455 to 56d4281 Compare September 30, 2026 14:50
Base automatically changed from cct-sdk to main September 30, 2026 16:51

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants