Skip to content

H-14: allows multiple remote pools per chain - #227

Draft
FelixFan1992 wants to merge 1 commit into
mainfrom
H-14-allows-multiple-remote-pools-per-chain
Draft

FelixFan1992 wants to merge 1 commit into
mainfrom
H-14-allows-multiple-remote-pools-per-chain

Conversation

@FelixFan1992

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Soroban Contract Test Coverage

92.46% line coverage — 19035 / 20588 lines hit

Metric Hit Total Coverage
Lines 19035 20588 92.46%
Functions 1277 1570 81.34%
Regions 35067 37708 93.00%

Per-Contract Breakdown

Contract Lines (Hit / Total) Line Cov Funcs (Hit / Total) Func Cov
other 19035 / 20588 92.5% 1277 / 1570 81.3%
Full file-level coverage report
Filename                                                 Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ccip-ramp-registry/src/lib.rs                                188                75    60.11%           8                 3    62.50%         104                41    60.58%           0                 0         -
ccip-ramp-registry/src/test.rs                               214                 0   100.00%           5                 0   100.00%         128                 0   100.00%           0                 0         -
ccip-ramp-registry/src/types.rs                               83                11    86.75%          17                 6    64.71%          83                11    86.75%           0                 0         -
ccvs/committee-verifier/src/lib.rs                           588                54    90.82%          26                 2    92.31%         382                10    97.38%           0                 0         -
ccvs/committee-verifier/src/test.rs                         1300                25    98.08%          48                 2    95.83%         587                13    97.79%           0                 0         -
ccvs/committee-verifier/src/types.rs                          17                 8    52.94%           6                 5    16.67%          14                 7    50.00%           0                 0         -
ccvs/versioned-verifier-resolver/src/lib.rs                  287                21    92.68%          14                 1    92.86%         162                 4    97.53%           0                 0         -
ccvs/versioned-verifier-resolver/src/test.rs                 680                 9    98.68%          20                 0   100.00%         359                 3    99.16%           0                 0         -
ccvs/versioned-verifier-resolver/src/types.rs                 89                 6    93.26%          16                 4    75.00%          83                 4    95.18%           0                 0         -
common/authorization/src/allowlist.rs                        167                51    69.46%          12                 4    66.67%         110                40    63.64%           0                 0         -
common/authorization/src/lib.rs                              426                27    93.66%          16                 0   100.00%         277                16    94.22%           0                 0         -
common/authorization/src/ownable.rs                           92                 3    96.74%           8                 0   100.00%          57                 1    98.25%           0                 0         -
common/authorization/src/test.rs                            1195                 0   100.00%          57                 0   100.00%         462                 0   100.00%           0                 0         -
common/guard/src/initializable.rs                             30                 1    96.67%           4                 0   100.00%          22                 1    95.45%           0                 0         -
common/guard/src/lib.rs                                       32                 1    96.88%           4                 0   100.00%          22                 0   100.00%           0                 0         -
common/guard/src/test.rs                                     101                 0   100.00%           8                 0   100.00%          47                 0   100.00%           0                 0         -
common/helpers/src/curse_checkable.rs                        103                24    76.70%           6                 1    83.33%          56                12    78.57%           0                 0         -
common/helpers/src/fee_math.rs                               345                 0   100.00%          24                 0   100.00%         191                 0   100.00%           0                 0         -
common/helpers/src/map_updater.rs                             94                15    84.04%           7                 3    57.14%          39                 8    79.49%           0                 0         -
common/helpers/src/soroban_invoke.rs                         277                 7    97.47%          12                 0   100.00%         115                 1    99.13%           0                 0         -
common/interfaces/src/ccip_receiver.rs                         6                 6     0.00%           6                 6     0.00%           6                 6     0.00%           0                 0         -
common/interfaces/src/committee_verifier.rs                    6                 6     0.00%           6                 6     0.00%           6                 6     0.00%           0                 0         -
common/interfaces/src/fee_quoter.rs                           13                13     0.00%          13                13     0.00%          13                13     0.00%           0                 0         -
common/interfaces/src/offramp.rs                               4                 4     0.00%           4                 4     0.00%           4                 4     0.00%           0                 0         -
common/interfaces/src/onramp.rs                                4                 4     0.00%           4                 4     0.00%           4                 4     0.00%           0                 0         -
common/interfaces/src/ramp_registry.rs                         4                 4     0.00%           4                 4     0.00%           4                 4     0.00%           0                 0         -
common/interfaces/src/router.rs                                6                 6     0.00%           6                 6     0.00%           6                 6     0.00%           0                 0         -
common/interfaces/src/siloed_lock_release_pool.rs             13                13     0.00%          13                13     0.00%          13                13     0.00%           0                 0         -
common/interfaces/src/token_admin_registry.rs                  1                 1     0.00%           1                 1     0.00%           1                 1     0.00%           0                 0         -
common/interfaces/src/token_pool.rs                           11                11     0.00%          11                11     0.00%          11                11     0.00%           0                 0         -
common/interfaces/src/versioned_verifier_resolver.rs           4                 4     0.00%           4                 4     0.00%           4                 4     0.00%           0                 0         -
common/message/src/lib.rs                                    586                41    93.00%          28                 4    85.71%         298                 9    96.98%           0                 0         -
common/message/src/test.rs                                   641                 2    99.69%          28                 0   100.00%         323                 0   100.00%           0                 0         -
common/pool/src/decimals.rs                                  109                10    90.83%           6                 0   100.00%          76                 3    96.05%           0                 0         -
common/pool/src/finality_codec.rs                             52                 1    98.08%           3                 0   100.00%          41                 0   100.00%           0                 0         -
common/pool/src/lib.rs                                       557                40    92.82%          35                 1    97.14%         480                29    93.96%           0                 0         -
common/pool/src/rate_limit.rs                                180                 7    96.11%           9                 0   100.00%         145                 3    97.93%           0                 0         -
common/pool/src/types.rs                                      20                14    30.00%          16                14    12.50%          30                14    53.33%           0                 0         -
common/signature/src/config.rs                                44                12    72.73%           6                 2    66.67%          28                 5    82.14%           0                 0         -
common/signature/src/quorum.rs                                68                 1    98.53%           2                 0   100.00%          44                 1    97.73%           0                 0         -
common/signature/src/scheme.rs                                45                 0   100.00%           2                 0   100.00%          29                 0   100.00%           0                 0         -
cre/forwarder/src/error.rs                                     8                 3    62.50%           1                 0   100.00%           8                 3    62.50%           0                 0         -
cre/forwarder/src/lib.rs                                     597                22    96.31%          26                 0   100.00%         417                 4    99.04%           0                 0         -
cre/forwarder/src/test.rs                                   3426                14    99.59%         151                 2    98.68%        1430                 8    99.44%           0                 0         -
cre/forwarder/src/types.rs                                    62                 6    90.32%          10                 6    40.00%          36                 6    83.33%           0                 0         -
cre/test/read_fixture/src/lib.rs                             125               125     0.00%          33                33     0.00%         103               103     0.00%           0                 0         -
cre/test/receiver/src/lib.rs                                  53                53     0.00%           5                 5     0.00%          26                26     0.00%           0                 0         -
cre/test/rejecting_receiver/src/lib.rs                         3                 3     0.00%           1                 1     0.00%           8                 8     0.00%           0                 0         -
fee-quoter/src/lib.rs                                        761               162    78.71%          20                 3    85.00%         520                99    80.96%           0                 0         -
fee-quoter/src/test.rs                                       861                 0   100.00%          17                 0   100.00%         427                 0   100.00%           0                 0         -
fee-quoter/src/types.rs                                       13                13     0.00%          13                13     0.00%          13                13     0.00%           0                 0         -
mcms/src/constants.rs                                         10                 0   100.00%           2                 0   100.00%           6                 0   100.00%           0                 0         -
mcms/src/crypto.rs                                           202                 3    98.51%           7                 0   100.00%         109                 2    98.17%           0                 0         -
mcms/src/encoding.rs                                         328                 8    97.56%          15                 0   100.00%         196                 3    98.47%           0                 0         -
mcms/src/error.rs                                              8                 3    62.50%           1                 0   100.00%           8                 3    62.50%           0                 0         -
mcms/src/lib.rs                                              715                54    92.45%          17                 0   100.00%         511                23    95.50%           0                 0         -
mcms/src/test.rs                                            2439                39    98.40%          71                 2    97.18%        1150                16    98.61%           0                 0         -
mcms/src/types.rs                                             10                10     0.00%          10                10     0.00%          10                10     0.00%           0                 0         -
offramp/src/lib.rs                                           729               400    45.13%          23                 8    65.22%         473               224    52.64%           0                 0         -
offramp/src/test.rs                                          890                 0   100.00%          28                 0   100.00%         363                 0   100.00%           0                 0         -
offramp/src/types.rs                                          21                 9    57.14%           6                 5    16.67%          17                 7    58.82%           0                 0         -
onramp/src/lib.rs                                           1168               141    87.93%          27                 2    92.59%         739                55    92.56%           0                 0         -
onramp/src/test.rs                                          1708                 4    99.77%          38                 0   100.00%         768                 4    99.48%           0                 0         -
onramp/src/types.rs                                           23                 9    60.87%           6                 5    16.67%          19                 7    63.16%           0                 0         -
pools/burn-mint-pool/src/lib.rs                              421               107    74.58%          30                 8    73.33%         310                53    82.90%           0                 0         -
pools/burn-mint-pool/src/test.rs                            2906                24    99.17%          60                 5    91.67%        1875                55    97.07%           0                 0         -
pools/lock-release-pool/src/lib.rs                           435               125    71.26%          30                10    66.67%         316                70    77.85%           0                 0         -
pools/lock-release-pool/src/test.rs                         2389                24    99.00%          56                 5    91.07%        1552                55    96.46%           0                 0         -
pools/siloed-lock-release-pool/src/lib.rs                    587               196    66.61%          40                16    60.00%         412               121    70.63%           0                 0         -
pools/siloed-lock-release-pool/src/test.rs                  1492                12    99.20%          42                 2    95.24%         790                18    97.72%           0                 0         -
pools/token-lock-box/src/lib.rs                              197                17    91.37%          13                 1    92.31%         113                 2    98.23%           0                 0         -
pools/token-lock-box/src/test.rs                             257                 0   100.00%           7                 0   100.00%          73                 0   100.00%           0                 0         -
registry/src/lib.rs                                            8                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
registry/src/test.rs                                          27                 0   100.00%           1                 0   100.00%          11                 0   100.00%           0                 0         -
rmn_proxy/src/lib.rs                                          66                12    81.82%           5                 1    80.00%          34                 3    91.18%           0                 0         -
rmn_proxy/src/test.rs                                        279                 0   100.00%          11                 0   100.00%          91                 0   100.00%           0                 0         -
rmn_remote/src/lib.rs                                        302                26    91.39%          16                 1    93.75%         171                10    94.15%           0                 0         -
rmn_remote/src/test.rs                                       393                 0   100.00%          14                 0   100.00%         133                 0   100.00%           0                 0         -
router/src/lib.rs                                            593                87    85.33%          18                 1    94.44%         374                43    88.50%           0                 0         -
router/src/test.rs                                          1186                 0   100.00%          29                 0   100.00%         497                 0   100.00%           0                 0         -
router/src/test_panic_receiver.rs                              5                 0   100.00%           2                 0   100.00%           5                 0   100.00%           0                 0         -
router/src/types.rs                                            3                 3     0.00%           3                 3     0.00%           3                 3     0.00%           0                 0         -
timelock/src/encoding.rs                                     329                 3    99.09%          15                 0   100.00%         182                 1    99.45%           0                 0         -
timelock/src/error.rs                                          6                 2    66.67%           1                 0   100.00%           6                 2    66.67%           0                 0         -
timelock/src/lib.rs                                          679               261    61.56%          33                11    66.67%         382               132    65.45%           0                 0         -
timelock/src/roles.rs                                         82                30    63.41%           7                 2    71.43%          62                21    66.13%           0                 0         -
timelock/src/storage.rs                                      227                51    77.53%          14                 1    92.86%         124                22    82.26%           0                 0         -
timelock/src/test.rs                                         798                13    98.37%          24                 0   100.00%         296                 0   100.00%           0                 0         -
timelock/src/types.rs                                          4                 4     0.00%           4                 4     0.00%           4                 4     0.00%           0                 0         -
token-admin-registry/src/lib.rs                              368                23    93.75%          18                 1    94.44%         257                 4    98.44%           0                 0         -
token-admin-registry/src/test.rs                             825                 0   100.00%          21                 0   100.00%         287                 0   100.00%           0                 0         -
token-admin-registry/src/types.rs                              2                 2     0.00%           2                 2     0.00%           2                 2     0.00%           0                 0         -
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                                      37708              2641    93.00%        1570               293    81.34%       20588              1553    92.46%           0                 0         -```

</details>

> Commit `21ac9653` | [Full CI run](https://github.com/smartcontractkit/chainlink-stellar/actions/runs/35169186730)

<!-- Sticky Pull Request Commentcontract-coverage -->

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Integration Test Coverage (excl. Token Pool)

total:														(statements)				4.5%

Full coverage report

@FelixFan1992
FelixFan1992 added this pull request to stack #228 September 16, 2026 16:24
@FelixFan1992
FelixFan1992 force-pushed the H-14-allows-multiple-remote-pools-per-chain branch from 2ea1057 to 06d7e67 Compare September 16, 2026 16:25
@FelixFan1992
FelixFan1992 requested a balanced review from Copilot September 16, 2026 16:29

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Duplicate initial pools break removal semantics, and stale Go callers no longer compile.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds support for multiple remote token pools per chain across contracts, interfaces, bindings, and tests.

Changes:

  • Stores remote pools as address vectors with add/remove APIs.
  • Validates inbound sources against all configured pools.
  • Updates events, Go bindings, and contract tests.
File summaries
File Description
contracts/pools/siloed-lock-release-pool/src/test.rs Tests multiple remote pools.
contracts/pools/siloed-lock-release-pool/src/lib.rs Exposes pool management APIs.
contracts/pools/lock-release-pool/src/test.rs Adapts chain configuration tests.
contracts/pools/lock-release-pool/src/lib.rs Exposes pool management APIs.
contracts/pools/burn-mint-pool/src/test.rs Tests add/remove behavior.
contracts/pools/burn-mint-pool/src/lib.rs Exposes pool management APIs.
contracts/onramp/src/test.rs Adapts pool configuration fixture.
contracts/common/pool/src/types.rs Changes pool storage to vectors.
contracts/common/pool/src/lib.rs Implements membership and mutations.
contracts/common/pool/src/events.rs Adds pool mutation events.
contracts/common/interfaces/src/token_pool.rs Updates shared pool ABI.
contracts/common/interfaces/src/siloed_lock_release_pool.rs Updates siloed-pool ABI.
contracts/common/interfaces/src/lock_release_pool.rs Updates lock-release ABI.
contracts/common/interfaces/src/burn_mint_pool.rs Updates burn-mint ABI.
bindings/contracts/token_pool/types.go Updates shared Go types.
bindings/contracts/token_pool/client.go Adds shared Go client methods.
bindings/contracts/siloed_lock_release_pool/types.go Updates siloed Go types/events.
bindings/contracts/siloed_lock_release_pool/client.go Updates siloed Go client.
bindings/contracts/lock_release_pool/types.go Updates lock-release Go types/events.
bindings/contracts/lock_release_pool/client.go Updates lock-release Go client.
bindings/contracts/burn_mint_pool/types.go Updates burn-mint Go types/events.
bindings/contracts/burn_mint_pool/client.go Updates burn-mint Go client.
Review details

Files not reviewed (8)

  • bindings/contracts/burn_mint_pool/client.go: Generated file
  • bindings/contracts/burn_mint_pool/types.go: Generated file
  • bindings/contracts/lock_release_pool/client.go: Generated file
  • bindings/contracts/lock_release_pool/types.go: Generated file
  • bindings/contracts/siloed_lock_release_pool/client.go: Generated file
  • bindings/contracts/siloed_lock_release_pool/types.go: Generated file
  • bindings/contracts/token_pool/client.go: Generated file
  • bindings/contracts/token_pool/types.go: Generated file
  • Files reviewed: 14/22 changed files
  • Comments generated: 3
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +294 to +295
// GetRemotePools calls the get_remote_pools function on the contract.
func (c *SiloedLockReleasePoolClient) GetRemotePools(ctx context.Context, remoteChainSelector uint64) ([][]byte, error) {
type ChainUpdate struct {
RemoteChainSelector uint64
RemotePoolAddresses []byte
RemotePoolAddresses [][]byte
for update in adds.iter() {
let config = RemoteChainConfig {
remote_pool_address: update.remote_pool_addresses.clone(),
remote_pool_addresses: update.remote_pool_addresses.clone(),
@FelixFan1992
FelixFan1992 force-pushed the H-14-allows-multiple-remote-pools-per-chain branch from 06d7e67 to 0fee4dc Compare September 16, 2026 19:41
@github-actions

Copy link
Copy Markdown
Contributor

Code coverage report:

Top package main H-14-allows-multiple-remote-pools-per-chain diff
github.com/smartcontractkit/chainlink-stellar/ccv 61.62% 61.62% +0.00%
github.com/smartcontractkit/chainlink-stellar/cmd 0.00% 0.00% +0.00%
github.com/smartcontractkit/chainlink-stellar/relayer 66.98% 66.98% +0.00%

Base automatically changed from C-3-release-or-mint-must-validate-source-pool-addr to main September 17, 2026 01:05
@FelixFan1992
FelixFan1992 force-pushed the H-14-allows-multiple-remote-pools-per-chain branch from 0fee4dc to 21ac965 Compare September 17, 2026 01:05
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