Commit bf9c4cd
committed
refactor(CampaignInstance): consolidate state variables into structs to resolve linter violations and stack depth issues
BREAKING CHANGE: State variable access patterns updated from direct access to struct member access
- Group 24 state variables into 3 logical structs (CampaignCore, DonationConstraints, Counters)
- Reduce state variable count from 24 to 11, resolving max-states-count linter violation
- Eliminate stack too deep compilation errors by reducing parameter passing overhead
- Remove redundant milestoneCount variable; derive from counters.nextMilestoneId
- Update all function bodies to use struct member access (e.g., core.creator instead of getCreator)
- Add interface compliance getter functions to maintain external API compatibility
- Implement pull-based refund pattern with claimRefund() and batchRefund() functions
- Fix type mismatch errors in comparison operations (totalRaised vs goalAmount, state vs CampaignState)
- Optimize gas consumption by eliminating duplicate state writes
- Improve code organization and maintainability through logical data grouping
Affected functions: initializeCampaign, createMilestone, finalizeCampaign, donate,
withdrawMilestoneFunds, pauseCampaign, resumeCampaign, cancelCampaign, and 40+ others
Fixes: #[issue-number] - Stack too deep compiler error
Fixes: #[issue-number] - Linter max-states-count violation (24 > 20 limit)0 parents commit bf9c4cd
6,095 files changed
Lines changed: 1213675 additions & 0 deletions
File tree
- .github/workflows
- lib/chainlink
- .changeset
- .github
- ISSUE_TEMPLATE
- actions
- build-chainlink-image
- delete-deployments
- deploy-image
- golangci-lint
- notify-slack-jobs-result
- setup-cre-e2e-test-dependencies
- setup-go
- setup-nodejs
- setup-solana
- build-contracts
- setup-sui
- setup-wasmd
- version-file-bump
- scripts
- tracing
- workflows
- ccip/config
- evm
- common
- chains/mocks
- logpoller/mocks
- log/mocks
- txmgr
- mocks
- types/mocks
- types/mocks
- core
- auth
- bridges
- mocks
- build
- capabilities
- ccip
- ccip_integration_tests
- integrationhelpers
- rmn
- usdcreader
- ccipaptos
- ccipevm
- manualexeclib
- testdata/fuzz/FuzzMessageHasher
- ccipnoop
- ccipsolana
- ccipsui
- ccipton
- common
- mocks
- configs
- aptos
- evm
- solana
- sui
- launcher
- ocrimpls
- oraclecreator
- types
- mocks
- validate
- compute
- test
- fetch/cmd
- simple/cmd
- fakes
- gateway_connector
- integration_tests
- framework
- keystone
- testdata
- mocks
- remote
- aggregation
- executable
- request
- messagecache
- types
- mocks
- streams
- targets/mocks
- transmission
- triggers/logevent
- logeventcap
- logeventcaptest
- validation
- vault
- mocks
- vaulttypes
- mocks
- vaultutils
- webapi
- target
- trigger
- webapicap
- webapicaptest
- cbor
- cmd
- mocks
- config
- mocks
- parse
- toml
- internal
- cltest
- features
- ocr2
- plugins
- fixtures
- badcookie
- keys
- wasm
- mocks
- testutils
- configtest
- cosmostest
- evmtest
- httptest
- keystest
- pgtest
- solanatest
- wasmtest
- logger
- audit
- internal/colortest
- monitoring
- null
- platform
- recovery
- scripts
- ccip
- ccip-revert-reason
- debugreceiver
- manual-execution
- batch_runner
- helpers
- revert-reason
- command
- config
- handler
- secrets
- chaincli
- command
- keeper
- config
- handler
- images
- common
- vrf
- constants
- docker
- db
- secrets
- toml-config
- wait-for-others
- jobs
- model
- setup-envs
- util
- cre/environment
- configs
- examples
- dashboards
- environment
- examples
- contracts
- permissionless_feeds_consumer
- pkg
- deploy
- fake
- trigger
- verify
- verifiers/proof-of-reserve
- workflows
- v1/proof-of-reserve
- cron-based
- types
- web-trigger-based
- types
- v2
- cron
- types
- http_simple
- http
- node-mode
- proof-of-reserve/cron-based
- types
- time_consensus
- time
- images
- minio
- mock
- proto-configs
- root
- functions
- artefacts
- src
- templates
- gateway
- client
- connector
- web_api_trigger
- keystone
- src
- __snapshots__
- external-adapter
- testdata
- p2ptoys
- common
- keygen
- vrfv1
- vrfv2plus/testnet
- v2plusscripts
- vrfv2
- genvrfnum
- revert-reason
- testnet
- v2scripts
- services
- blockhashstore
- mocks
- blockheaderfeeder
- ccip
- mocks
- chainlink
- mocks
- testdata
- mergingsecretsdata
- cresettings
- cron
- directrequest
- feeds
- mocks
- fluxmonitorv2
- mocks
- promfm
- functions
- mocks
- gateway
- api
- common
- aggregation
- config
- connector
- mocks
- handlers
- capabilities
- v2
- metrics
- mocks
- common
- functions
- allowlist
- mocks
- internal
- subscriptions
- mocks
- mocks
- vault
- integration_tests
- monitoring
- network
- mocks
- headreporter
- job
- mocks
- testdata
- wasm
- keeper
- keystore
- chaintype
- internal
- keys
- aptoskey
- cosmoskey
- csakey
- dkgrecipientkey
- ethkey
- ocr2key
- ocrkey
- p2pkey
- solkey
- starkkey
- testdata/fuzz/FuzzStarknetKeyring_Marshal
- suikey
- tonkey
- tronkey
- vrfkey
- workflowkey
- mocks
- llo
- bm
- channeldefinitions
- cre
- grpc
- mercurytransmitter
- observation
- retirement
- telem
- types
- mocks
- nodestatusreporter/bridgestatus
- events
- fixtures
- mocks
- ocr2
- plugins
- ccip
- abihelpers
- ccipcommit
- ccipexec
- config
- estimatorconfig
- mocks
- internal
- ccipcalc
- ccipcommon
- ccipdata
- batchreader
- mocks
- ccipdataprovider
- mocks
- factory
- mocks
- contracts
- v1_2_0
- v1_4_0
- v1_5_0
- ccipdb
- mocks
- logpollerutil
- observability
- oraclelib
- parseutil
- pricegetter
- rpclib
- rpclibmocks
- pkg/leafer
- prices
- testhelpers
- integration
- testhelpers_1_4_0
- tokendata
- http
- lbtc
- observability
- usdc
- functions
- config
- encoding
- integration_tests/v1
- internal
- generic
- llo
- config
- median
- config
- mercury
- config
- ocr2keeper
- evmregistry
- v20
- mocks
- v21
- autotelemetry21
- core
- mocks
- encoding
- fixtures
- gasprice
- logprovider
- mercury
- streams
- v02
- v03
- mocks
- prommetrics
- testdata
- transmit
- upkeepstate
- promwrapper
- mocks
- s4
- threshold
- mocks
- vault
- testhelpers
- validate
- ocr3/promwrapper
- ocrbootstrap
- ocrcommon
- ocr
- mocks
- p2p
- types
- mocks
- wrapper
- periodicbackup
- pg
- datatypes
- pipeline
- eautils
- mocks
- registrysyncer
- mocks
- v2
- mocks
- relay
- dummy
- evm
- capabilities/testutils
- evmtesting
- functions
- mercury
- mocks
- types
- utils
- v2
- reportcodec
- types
- v3
- reportcodec
- types
- v4
- reportcodec
- types
- verifier
- wsrpc
- mocks
- pb
- mocks
- statuschecker
- read
- mocks
- types/mocks
- s4
- mocks
- signatures
- cryptotest
- ethdss
- ethschnorr
- secp256k1
- standardcapabilities
- streams
- synchronization
- mocks
- telem
- telemetry
- versioning
- vrf
- extraargs
- mocks
- proof
- solidity_cross_tests
- v1
- v2
- vrfcommon
- vrftesthelpers
- webhook
- mocks
- workflows
- artifacts
- v2
- cmd/cre
- examples
- legacy/data_feeds
- v2
- empty
- http_read
- simple_cron_with_config
- simple_cron_with_secrets
- simple_cron
- utils
- events
- internal
- metering
- mocks
- monitoring
- ratelimiter
- store
- syncerlimiter
- syncer
- mocks
- v2
- mocks
- versioning
- test
- break/cmd
- wasm
- legacy/cmd
- v2/cmd
- with_config
- with_secrets
- zerotimeout/cmd
- types
- v2
- sessions
- ldapauth
- mocks
- localauth
- mocks
- oidcauth
- shutdown
- static
- store
- cmd/preparetest
- fixtures
- migrate
- migrations
- models
- cosmos
- solana
- testdata
- apiresponses
- jsonrpc
- secrets
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
0 commit comments