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

Bump github.com/jinzhu/gorm from 712c465 to 321c636 #1348

Merged

Conversation

dependabot-preview[bot]
Copy link
Contributor

@dependabot-preview dependabot-preview bot commented Jun 12, 2019

Bumps github.com/jinzhu/gorm from 712c465 to 321c636.

Commits
  • 321c636 Merge branch 'Momo733-master'
  • 781a818 fix save err when specify a table name
  • 153ce22 Test Save with specfied table name
  • c44c602 add an override on the DB instance instead of using the global NowFunc. (#2142)
  • fec06da Add BeginTx for parity with sql.DB.BeginTx (#2227)
  • cf9b85e Don't set primary key's HasDefaultValue to true (#2127)
  • f301f86 Add RollbackUnlessCommitted() (#2126)
  • 280dd01 Don't AddError for Rollback on ErrTxDone (#2434)
  • 9127f7d Handle error when beginning transaction (#2489)
  • 962ba3d Merge branch 'master' into master
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

Dependabot will merge this PR once CI passes on it, as requested by @j16r.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Automerge options (never/patch/minor, and dev/runtime dependencies)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

@dependabot-preview dependabot-preview bot added the dependencies Pull requests that update a dependency file label Jun 12, 2019
Bumps [github.com/jinzhu/gorm](https://github.com/jinzhu/gorm) from `712c465` to `321c636`.
- [Release notes](https://github.com/jinzhu/gorm/releases)
- [Commits](jinzhu/gorm@712c465...321c636)

Signed-off-by: dependabot-preview[bot] <[email protected]>
@dependabot-preview dependabot-preview bot force-pushed the dependabot/dep/github.com/jinzhu/gorm-321c636 branch from 8392895 to 0862fea Compare June 12, 2019 14:56
@j16r
Copy link
Contributor

j16r commented Jun 12, 2019

@dependabot rebase

@dependabot-preview
Copy link
Contributor Author

Looks like this PR is already up-to-date with develop! If you'd still like to recreate it from scratch, overwriting any edits, you can request @dependabot recreate.

@j16r
Copy link
Contributor

j16r commented Jun 12, 2019 via email

@j16r
Copy link
Contributor

j16r commented Jun 12, 2019

@dependabot merge

@dependabot-preview dependabot-preview bot merged commit e818eaa into develop Jun 12, 2019
@dependabot-preview dependabot-preview bot deleted the dependabot/dep/github.com/jinzhu/gorm-321c636 branch June 12, 2019 19:30
asoliman92 pushed a commit that referenced this pull request Aug 30, 2024
Ticket: https://smartcontract-it.atlassian.net/browse/CCIP-3078

We can't start bootstrap oracles and plugin oracles on the same
chainlink node. The main reason for this is that we have a singleton
`SingletonPeerWrapper` object which manages all libocr peers for the
application as a whole. Since this singleton only works with a single
peer ID, it creates a single OCR peer, and all streams are created using
this OCR peer. Since streams must have unique config digests for the
same peer object, running a bootstrap oracle and a plugin oracle for the
same config digest will fail because the stream will not be created.

In order to remedy this we match what will be the case in production,
which is:

* Separate bootstrap node, with a peer ID that is either part of the OCR
committee or not (most likely the latter, in order to avoid exporting /
importing the P2P key from one node's DB to another). This bootstrap
node will have to have a DNS name and be publicly accessible over the
internet in order to be accessed by all nodes in the committee, at least
initially, to facilitate peer discovery.
* Plugin node that is more locked down, i.e no public DNS name required.

To enable this, in this PR we:

* Tweak the `launcher` component to launch bootstrap nodes only or
plugin nodes only, and not both. This does NOT rely on the on-chain
bootstrap P2P IDs that are set in the OCR config. This field will be
removed in subsequent PRs.
* Tweak the `OracleCreator` interface to support the above operation

Follow ups:
* Remove the `bootstrapP2PIds` field from the OCR config in
CCIPConfig.sol
makramkd added a commit that referenced this pull request Sep 2, 2024
Ticket: https://smartcontract-it.atlassian.net/browse/CCIP-3078

We can't start bootstrap oracles and plugin oracles on the same
chainlink node. The main reason for this is that we have a singleton
`SingletonPeerWrapper` object which manages all libocr peers for the
application as a whole. Since this singleton only works with a single
peer ID, it creates a single OCR peer, and all streams are created using
this OCR peer. Since streams must have unique config digests for the
same peer object, running a bootstrap oracle and a plugin oracle for the
same config digest will fail because the stream will not be created.

In order to remedy this we match what will be the case in production,
which is:

* Separate bootstrap node, with a peer ID that is either part of the OCR
committee or not (most likely the latter, in order to avoid exporting /
importing the P2P key from one node's DB to another). This bootstrap
node will have to have a DNS name and be publicly accessible over the
internet in order to be accessed by all nodes in the committee, at least
initially, to facilitate peer discovery.
* Plugin node that is more locked down, i.e no public DNS name required.

To enable this, in this PR we:

* Tweak the `launcher` component to launch bootstrap nodes only or
plugin nodes only, and not both. This does NOT rely on the on-chain
bootstrap P2P IDs that are set in the OCR config. This field will be
removed in subsequent PRs.
* Tweak the `OracleCreator` interface to support the above operation

Follow ups:
* Remove the `bootstrapP2PIds` field from the OCR config in
CCIPConfig.sol
github-merge-queue bot pushed a commit that referenced this pull request Sep 2, 2024
* porting ccip tooling into chainlink

* make deployment test run

* add missing changes

* fix build error

* make private

* more updates

* changes

* make lint happy

* make lint happy

* Use tests.WaitTimeout for CCIPReader e2e tests (#1382)

We've noticed that this tests have failed a few times on the CI.

I've run the tests with `go test ./... -count 100 -failfast` and it
never failed locally.
I assume it runs slow in CI that's why we have some failing cases, I am
replacing `10s` with `tests.WaitTimeout(t)`.

* core/capabilities/ccip: fix oracle startup logic (#1348)

Ticket: https://smartcontract-it.atlassian.net/browse/CCIP-3078

We can't start bootstrap oracles and plugin oracles on the same
chainlink node. The main reason for this is that we have a singleton
`SingletonPeerWrapper` object which manages all libocr peers for the
application as a whole. Since this singleton only works with a single
peer ID, it creates a single OCR peer, and all streams are created using
this OCR peer. Since streams must have unique config digests for the
same peer object, running a bootstrap oracle and a plugin oracle for the
same config digest will fail because the stream will not be created.

In order to remedy this we match what will be the case in production,
which is:

* Separate bootstrap node, with a peer ID that is either part of the OCR
committee or not (most likely the latter, in order to avoid exporting /
importing the P2P key from one node's DB to another). This bootstrap
node will have to have a DNS name and be publicly accessible over the
internet in order to be accessed by all nodes in the committee, at least
initially, to facilitate peer discovery.
* Plugin node that is more locked down, i.e no public DNS name required.

To enable this, in this PR we:

* Tweak the `launcher` component to launch bootstrap nodes only or
plugin nodes only, and not both. This does NOT rely on the on-chain
bootstrap P2P IDs that are set in the OCR config. This field will be
removed in subsequent PRs.
* Tweak the `OracleCreator` interface to support the above operation

Follow ups:
* Remove the `bootstrapP2PIds` field from the OCR config in
CCIPConfig.sol

* Add changeset

---------

Co-authored-by: dimitris <[email protected]>
Co-authored-by: Makram <[email protected]>
Co-authored-by: asoliman <[email protected]>
Co-authored-by: Abdelrahman Soliman (Boda) <[email protected]>
silaslenihan pushed a commit that referenced this pull request Sep 3, 2024
* porting ccip tooling into chainlink

* make deployment test run

* add missing changes

* fix build error

* make private

* more updates

* changes

* make lint happy

* make lint happy

* Use tests.WaitTimeout for CCIPReader e2e tests (#1382)

We've noticed that this tests have failed a few times on the CI.

I've run the tests with `go test ./... -count 100 -failfast` and it
never failed locally.
I assume it runs slow in CI that's why we have some failing cases, I am
replacing `10s` with `tests.WaitTimeout(t)`.

* core/capabilities/ccip: fix oracle startup logic (#1348)

Ticket: https://smartcontract-it.atlassian.net/browse/CCIP-3078

We can't start bootstrap oracles and plugin oracles on the same
chainlink node. The main reason for this is that we have a singleton
`SingletonPeerWrapper` object which manages all libocr peers for the
application as a whole. Since this singleton only works with a single
peer ID, it creates a single OCR peer, and all streams are created using
this OCR peer. Since streams must have unique config digests for the
same peer object, running a bootstrap oracle and a plugin oracle for the
same config digest will fail because the stream will not be created.

In order to remedy this we match what will be the case in production,
which is:

* Separate bootstrap node, with a peer ID that is either part of the OCR
committee or not (most likely the latter, in order to avoid exporting /
importing the P2P key from one node's DB to another). This bootstrap
node will have to have a DNS name and be publicly accessible over the
internet in order to be accessed by all nodes in the committee, at least
initially, to facilitate peer discovery.
* Plugin node that is more locked down, i.e no public DNS name required.

To enable this, in this PR we:

* Tweak the `launcher` component to launch bootstrap nodes only or
plugin nodes only, and not both. This does NOT rely on the on-chain
bootstrap P2P IDs that are set in the OCR config. This field will be
removed in subsequent PRs.
* Tweak the `OracleCreator` interface to support the above operation

Follow ups:
* Remove the `bootstrapP2PIds` field from the OCR config in
CCIPConfig.sol

* Add changeset

---------

Co-authored-by: dimitris <[email protected]>
Co-authored-by: Makram <[email protected]>
Co-authored-by: asoliman <[email protected]>
Co-authored-by: Abdelrahman Soliman (Boda) <[email protected]>
makramkd added a commit that referenced this pull request Sep 5, 2024
## Motivation

Bootstrap P2P IDs are no longer needed in the OCR config in CCIPConfig.
See #1348's description for more details.

## Solution

Remove bootstrap P2P IDs from the OCR config in CCIPConfig.

## Related PRs
smartcontractkit/chainlink-ccip#89
github-merge-queue bot pushed a commit that referenced this pull request Sep 5, 2024
…ip repo (#14345)

* Misc golfs and fixes (#1402)

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* Increase max signers (#1405)

Improve tests and error checks

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* rename CCIPSendRequested to CCIPMessageSent (#1409)

* Skip report execution on curse (#1408)

## Motivation

The goal of this PR is to remove reverts on lane cursing for DON
execution transactions. If a lane is cursed, reverting will cause the
whole execution transaction to fail so any execution reports for other
lanes will be blocked.

## Solution

For DON execution transactions the behavior is now to skip the report
and emit a `SkippedReportExecution`. For manual execution we still
revert, otherwise the transaction will silently fail for the users.

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* remove bootstrapP2PIds (#1388)

## Motivation

Bootstrap P2P IDs are no longer needed in the OCR config in CCIPConfig.
See #1348's description for more details.

## Solution

Remove bootstrap P2P IDs from the OCR config in CCIPConfig.

## Related PRs
smartcontractkit/chainlink-ccip#89

* fixes

* Integrate RMNRemote and OffRamp (#1360)

Remove the requirement for self-transmitted RMN blessings

Allow the commit DON to include RMN blessings at commitment time
This PR has a dependency on changes to
[chainlink-ccip](smartcontractkit/chainlink-ccip#84)

---------

Co-authored-by: Makram <[email protected]>

* contracts/scripts: reduce offramp optimizations (#1414)

## Motivation

The offramp was failing to deploy due to too many optimizations causing
a max code size exceeded error.

## Solution

Reduce the number of optimizations by 1.

Also, add a test that deploys v1.6 contracts and ensures that they are
deployable on the simulated backend.

* more fixes

* remove isBlessed from contract reader cfg

* deploy RMNRemote instead of MockRMN

* bump chainlink-ccip

* bump chainlink-ccip and add changesets

---------

Co-authored-by: Rens Rooimans <[email protected]>
Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>
Co-authored-by: Suryansh <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Ryan Hall <[email protected]>
RensR added a commit that referenced this pull request Oct 1, 2024
…ip repo (#14345)

* Misc golfs and fixes (#1402)

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* Increase max signers (#1405)

Improve tests and error checks

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* rename CCIPSendRequested to CCIPMessageSent (#1409)

* Skip report execution on curse (#1408)

## Motivation

The goal of this PR is to remove reverts on lane cursing for DON
execution transactions. If a lane is cursed, reverting will cause the
whole execution transaction to fail so any execution reports for other
lanes will be blocked.

## Solution

For DON execution transactions the behavior is now to skip the report
and emit a `SkippedReportExecution`. For manual execution we still
revert, otherwise the transaction will silently fail for the users.

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* remove bootstrapP2PIds (#1388)

## Motivation

Bootstrap P2P IDs are no longer needed in the OCR config in CCIPConfig.
See #1348's description for more details.

## Solution

Remove bootstrap P2P IDs from the OCR config in CCIPConfig.

## Related PRs
smartcontractkit/chainlink-ccip#89

* fixes

* Integrate RMNRemote and OffRamp (#1360)

Remove the requirement for self-transmitted RMN blessings

Allow the commit DON to include RMN blessings at commitment time
This PR has a dependency on changes to
[chainlink-ccip](smartcontractkit/chainlink-ccip#84)

---------

Co-authored-by: Makram <[email protected]>

* contracts/scripts: reduce offramp optimizations (#1414)

## Motivation

The offramp was failing to deploy due to too many optimizations causing
a max code size exceeded error.

## Solution

Reduce the number of optimizations by 1.

Also, add a test that deploys v1.6 contracts and ensures that they are
deployable on the simulated backend.

* more fixes

* remove isBlessed from contract reader cfg

* deploy RMNRemote instead of MockRMN

* bump chainlink-ccip

* bump chainlink-ccip and add changesets

---------

Co-authored-by: Rens Rooimans <[email protected]>
Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>
Co-authored-by: Suryansh <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Ryan Hall <[email protected]>
RensR pushed a commit that referenced this pull request Oct 1, 2024
## Motivation

Bootstrap P2P IDs are no longer needed in the OCR config in CCIPConfig.
See #1348's description for more details.

## Solution

Remove bootstrap P2P IDs from the OCR config in CCIPConfig.

## Related PRs
smartcontractkit/chainlink-ccip#89
github-merge-queue bot pushed a commit that referenced this pull request Oct 9, 2024
* Update .gitignore

* assert fees can be set to zero (#1380)

Assert we would have the option to set any of the fee components to zero
if we would want.

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* pnpm i && snapshot && forge fmt

* Misc golfs and fixes (#1402)

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* Increase max signers (#1405)

Improve tests and error checks

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* rename CCIPSendRequested to CCIPMessageSent (#1409)

* Skip report execution on curse (#1408)

The goal of this PR is to remove reverts on lane cursing for DON
execution transactions. If a lane is cursed, reverting will cause the
whole execution transaction to fail so any execution reports for other
lanes will be blocked.

For DON execution transactions the behavior is now to skip the report
and emit a `SkippedReportExecution`. For manual execution we still
revert, otherwise the transaction will silently fail for the users.

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* remove bootstrapP2PIds (#1388)

## Motivation

Bootstrap P2P IDs are no longer needed in the OCR config in CCIPConfig.
See #1348's description for more details.

## Solution

Remove bootstrap P2P IDs from the OCR config in CCIPConfig.

## Related PRs
smartcontractkit/chainlink-ccip#89

* Integrate RMNRemote and OffRamp (#1360)

Remove the requirement for self-transmitted RMN blessings

Allow the commit DON to include RMN blessings at commitment time
This PR has a dependency on changes to
[chainlink-ccip](smartcontractkit/chainlink-ccip#84)

---------

Co-authored-by: Makram <[email protected]>

* Add report vs message source chain selector check (#1413)

The goal of this PR is to add an extra check in the execute function to
enforce that the report source chain selector matches its messages
source chain selector. Extra gas cost is about 50 gas per message.

Revert when `report.sourceChainSelector !=
(message.header.sourceChainSelector`

* Enforce signature verification for commit plugin in `OffRamp` (#1416)

## Motivation

The goal of this PR is to implement a check to ensure that the OCR3
signature verification is enabled for the commit plugin on config. This
reduces misconfig risks and impact because previously an accidental
setting of `isSignatureVerificationEnabled=false` for the commit plugin
in the `OffRamp` would have required a redeploy to be fixed.

## Solution

Add a check enforcing `isSignatureVerificationEnabled=false` for the
commit plugin in `_afterOC3Config`.

* Revert "reorder fields in MerkleRoot struct" (#1417)

## Motivation
Avoid forcing breaking changes on RMN nodes

## Solution
This reverts commit da570c5.

* Implement getTotalChainConfigurations (#1419)

## Motivation
The goal of this PR is to add a getter function to the `CCIPConfig`
contract to fetch the total number of chains configured. This value is
necessary to correctly call `getAllChainConfigs` and previously, the
only way to access it was through events.

## Solution
Implement `getTotalChainConfigurations`.

* Add sanity check in applyAllowListUpdates (#1420)

## Motivation
Currently, in the event of a misconfig where a destination chain's
`AllowListConfigArgs` `allowListEnabled` is set to false while providing
addresses to add to the allow list, the config will silently be skipped.

## Solution
Add a sanity check to detect `!allowListConfigArgs.allowListEnabled &&
`allowListConfigArgs.addedAllowlistedSenders.length > 0`

* Miscellaneous fixes and cleanups (#1421)

## Motivation

The goal of this PR is to fix several miscellaneous items.

## Solution

- Replaces some magic numbers with constants
- Default to `private` visibility for state variables that are not used
in test helpers
- Standardizes some natspec tags (consistent use of `@dev` instead of
`@notice` for state variables)
- Add a `ConfigSet` event in `CCIPConfig`
- Asserts full equality of `OCRConfigWithMeta[]` in `CCIPConfigTests`
- Add clarifying comments in `NonceManager` `applyPreviousRampsUpdates`

* CCIP-2815 commit report event updates (#1407)

## Motivation

OffRamp contract emits commitReport event as a Struct
to make the event Log filtering and searching more optimized, the report
properties are emitted as a event fields rather than emitting the struct

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* GasLimitOverride for manuallyExecute (#1375)

## Motivation
1. OffRamp should now use destExecData to extract the gas used for 
2. Manual execution should enable user to override the gas amount for
releaseOrMint per token.

## Solution
1. Removed int32 `maxTokenTransferGas` & `maxPoolReleaseOrMintGas` and
used the gas encoded in `RampTokenAmount.destExecData`
2. add a new Struct which holds the receiverExecutionGasLimit and
transferGasAmounts
```
struct GasLimitOverride {
    uint256 receiverExecutionGasLimit;
    uint256[] tokenGasOverrides;
}
```
tokenGasOverrides is an array of GasLimits to be used during the
relaseOrMint call for the specific tokenPool associated with token

Note: 
The gas limit can not be lowered as that could cause the message to
fail. If manual execution is done from an UNTOUCHED state and we would
allow lower gas limit, anyone could grief by executing the message with
lower gas limit than the DON would have used. This results in the
message being marked FAILURE and the DON would not attempt it with the
correct gas limit.

for the above we have kept a check that `tokenGasOverrides` < gas
encoded in `RampTokenAmount.destExecData`

---------

Signed-off-by: 0xsuryansh <[email protected]>
Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* Change data feeds from default to fallback in `FeeQuoter` (#1430)

## Motivation
Due to the gas cost of reading from data feeds, it is unlikely to be the
default option, we can therefore optimize the `getTokenPrice()` function
by defaulting to state instead of data feeds.

## Solution
Default to state reported prices and only fall back on data feed
external call if the reported prices are stale.

* Zp/update mockrouter (#1427)

Specifically, allow for empty message with zero gas.

## Motivation
EVM2EVMOffRamp checks the message for content and gaslimit and skips
calling ccip receive if they're not present.
Consequently the mock errors (ReceiverError) when sending only tokens to
a smart contract. This update will help chainlink-local correctly
process fork-based tests too.

## Solution
The MockRouter implementation of _routeMessage was last updated in
smartcontractkit/ccip#669 and is out of sync
with the logic in EVM2EVMOffRamp.

* Hybrid Token Pools: Remove problematic liquidity functions and add incoming supply lock (#1396)

## Motivation

Minor Changes to the HybridLockReleaseTokenPool to better meet Circle's
bridge requirements

1. Add additional supply lock on incoming messages when a proposal has
been created. I.E When a proposal for a chain selector is active, new
tokens cannot be released or locked to ensure better security control on
the destination-chain's token supply.
2. `withdrawLiquidity()` and `transferLiqudity()` have been removed to
avoid issues with the supply lock. Allowing for withdrawing liquidity
that has been provided would allow for the supply on the destination
chain to be greater than the locked amount on the source chain,
preventing a successful migration from occuring.

3. Comment fixes for invariants

* Make onRamp mutable in OffRamp (#1422)

## Motivation
The goal of this PR is to reduce the misconfig risk on the `OffRamp`
with the `onRamp` address. Currently, if we accidentally configure the
wrong `onRamp` address on an existing `OffRamp`, the fix would involve a
full redeployment + reconfig.

## Solution

- Make the `onRamp` mutable in the `OffRamp`.
- Add `onRamp` address verification in the `commit()` function
- Only allow `onRamp` address modification when `minSeqNr == 1`

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* update offramp layout (#1434)

## Motivation
Some header are outdated. 

The exec logic is above the commit logic, but then after the commit
logic we have the token handling logic, which is only used for exec. It
has been moved to be above the commit logic

* add CCIPEncodingUtils contract and gethwrapper (#1429)

## Motivation
I encountered a scenario w/ RMN where offchain needs to abi.encode a
[struct](https://github.com/smartcontractkit/ccip/blob/fc50683640bcfd73f0074d791fbaf7cdb6b29c71/contracts/src/v0.8/ccip/rmn/RMNRemote.sol#L90:L97)
that is not included in any public contract functions (as input param or
return value) and so it is not a part of the ABI or the go wrapper.
Offchain is currently doing a manual encoding by re-defining the type,
which I usually try to avoid at all costs. In the past, we've used a
Utils contract ([ex
here](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/automation/AutomationCompatibleUtils.sol)
from automation) to expose all private structs in public functions so
that offchain components can use E2E type safety when encoding /
decoding.

## Solution
Create a `CCIPEncodingUtils` contract and accompanying gethwrapper

* Remove TODO and rename messageValidator to messageInterceptor (#1438)

- Replaces `CCIPConfigTypes.ConfigState` `/// TODO: explain rollbacks?`
by rollbacks comment
- Renames `messageValidator` to `messageInterceptor` in ramps

---------

Co-authored-by: Rens Rooimans <[email protected]>

* update diagram (#1439)

* Make forwardFromRouter non reentrant (#1437)

## Motivation
Currently the `OnRamp` performs 3 separate calls to the `FeeQuoter` on
the hot path, including 2 in the `forwardFromRouter` function:

1. `getValidatedFee`
2. `processMessageArgs`
3. `processPoolReturnData`

This is done to follow the CEI pattern and guard against reentrancy due
to the untrusted calls to the pools. This is not optimal for gas but it
also makes contract interactions more complex.

## Solution

Implement a non reentrant flag and reorder the `forwardFromRouter`
function layout. The calls to the pools are now performed first, relying
on the reentrancy protection. We reduce the `FeeQuoter` calls in
`forwardFromRouter` to a single `processMessageArgs` call.

## Notes

Optimizer runs had to be decreased due to contract size which is why gas
diffs are showing a gas increase. At equivalent runs diffs are:
```
test_ForwardFromRouterExtraArgsV2_Success() (gas: -65 (-0.045%))
test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: -65 (-0.045%))
test_ForwardFromRouterSuccessCustomExtraArgs() (gas: -65 (-0.045%))
test_ForwardFromRouter_Success() (gas: -65 (-0.045%))
test_ForwardFromRouterSuccessEmptyExtraArgs() (gas: -66 (-0.046%))
test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue_Success() (gas: -65 (-0.057%))
test_forwardFromRouter_WithValidation_Success() (gas: 318 (0.113%))
test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: -1139 (-0.074%))
```

* Standardize message hashing functions (#1424)

## Motivation
The goal of this PR is to standardize the message hashing functions.
Currently we have equivalent but inconsistent message hashing functions:
```solidity
function _hash(Any2EVMRampMessage memory original, bytes memory onRamp) internal pure returns (bytes32)
```
and 
```solidity
function _hash(EVM2AnyRampMessage memory original, bytes32 metadataHash) internal pure returns (bytes32)
```

## Solution
Standardize to `function _hash(message, metadataHash)` and consistently
encode dynamic fields.

---------

Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* Validate transmitter lengths against F values (#1432)

## Motivation
Improves validations for OCR3 and CCIPConfig contracts

## Solution
Covers validations:
* `fChain <= F`, since `F` represents the full role DON
* Allows setting empty transmitters in CCIPConfig to allow
`len(transmitters) <= len(signers)`, while still enforcing
`len(transmitters) >= 3 * fChain + 1`
* Validates non-zero transmitters length in MultiOCR3
* Validates `len(signers) >= len(transmitters)` in MultiOCR3

### Tooling implications
* When setting OCR configs on OffRamp contracts, the list from
CCIPConfig must be filtered to exclude 0-bytes addresses. The reason for
this is that the MultiOCR3Base disallows zero addresses and duplicates
* Signer and transmitter duplication must be checked in tooling scripts
off-chain prior to setting CCIPConfig (otherwise it will result in
OffRamp breakage)
* `chainConfigs` must be set before OCR3 configs due to the added
`fChain == F` validation
* If `fChain` becomes higher than `F` after updates, existing OCR3
configs get invalidated without an on-chain check (since it is difficult
to do). There should be an off-chain validation script that prevents
this (first, F should be increased for all configs, only after which
fChain can be increased)
* `OffRamp` transmitters.length should be validated such that it meets
the `3 * fChain + 1` criteria off-chain, since `fChain` is not tracked
in the `OffRamp`


### Gas
| Function Name | min | avg | median | max | # calls |

|---------------------------------------------------------------------------|-----------------|--------|--------|---------|---------|
| validateConfig (without loop check) | 7040 | 20701 | 8436 | 122591 |
11 |
| validateConfig (with loop check) | 7040 | 21006 | 9132 | 123442 | 11 |

* Split RampTokenAmount into EVM2AnyTokenTransfer and Any2EVMTokenTransfer (#1435)

* Productionize RMN remote contract (#1431)

[Original PR](smartcontractkit/ccip#1308) -
there is some discussion here that is possibly still relevant)
[Open PR to add
cursing](smartcontractkit/ccip#1400) - I copied
the relevant parts for the `RMNRemote`.

Note: we are intentionally separating `RMNRemote` and `RMNHome` since
they have different timelines.

Productionize the RMNRemote and include it in integration tests

---------

Co-authored-by: Makram <[email protected]>

* Add RMN_V1_6_ANY2EVM_REPORT to RMNRemote and make public (#1447)

## Motivation

smartcontractkit/ccip#1431 (comment)

## Solution
Expose the constant as public

* merge FeePaid event into CCIPMessageSent (#1456)

## Motivation
Not sure actually why this was needed. Request was [made
here](https://smartcontract-it.atlassian.net/browse/CCIP-3446?atlOrigin=eyJpIjoiMTQ4ODMwNzU2N2I3NDI0NGE0ZDhiOTIyZTYwOTNjN2IiLCJwIjoiaiJ9).

This is the 2nd version, that alters the MessageSent struct. First
version [here](smartcontractkit/ccip#1452).

## Solution
Merge fields from FeePaid event into CCIPMessageSent event

* Add RMNHomeAddress in the OCR3Config (#1449)

Adding `rmnHomeAddress` in the `OCR3Config` struct + generated wrappers.

* Update pragma to most restrictive dependency or feature (#1466)

## Motivation
We have several contracts using `^0.8.0` but also custom errors, or a
child contract with custom errors. We also have several contracts at
`^0.8.0` but a dependency locked at `0.8.24`.

## Solution
Update all pragmas to the pragma of the most restrictive dep or the
minimum to enable custom errors (`0.8.4`)

* RMNHome (#1469)

New PR to have this be standalone

* ccip home (#1473)

Fresh PR

* fix snapshots

* Update gethwrappers

* [WIP] fix basic offchain logic (#14613)

* fix basic offchain logic

* type fixes

* bump chainlink-common, general fixes

* fix message hashing

* small fixes

* Update chainlink-common

* Fix commit-codec test.

* Fix error messages.

* Fix ccip reader tests (#14619)

* Fix exec codec.

* Launcher integration tests (#14648)

* CCIPHome basic usage framework

* Fix homeChain usage

* Fix calls in launcher test

* Add encoded configs

* Add more asserts

* Calling right function 😢

* new assertions and logging error

* Add don only once and update for all next operations

* Fix typo

---------

Co-authored-by: Makram Kamaleddine <[email protected]>

* core/capabilities/ccip: fix usdc reader test (#14652)

* fix lint

* Rename bluegreen to deployment and use active candidate naming (#14662)

* Fix smoke tests (#14655)

* Initial commit - fix AddDon in deployment tests

* Fix types and add logs

* more explicit config setting

* Rename bluegreen to deployment and use active candidate naming (#14662)

* contracts/ccip/capability: per (donId, pluginType) active config indexes (#1488)

* Add CCIPHome fixes

* Commit Encoding with new structs

* Update gethwrappers

* Commit Encode/Decode with new structure

* fix encoding, bump cl-ccip

* Update gethwrappers

* logging updates

* add rmn home and remote configuration

* fixes

* working int test, still some failing tests

* bump chainlink-ccip

* some more fixes

* lint, build

* more lint

---------

Co-authored-by: Makram Kamaleddine <[email protected]>
Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

---------

Co-authored-by: Makram Kamaleddine <[email protected]>
Co-authored-by: Will Winder <[email protected]>
Co-authored-by: Abdelrahman Soliman (Boda) <[email protected]>
Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>

* tidy

* lint again

* remove stale files

* bump chainlink-ccip again

* bump with cl-ccip from main

* fix build

* fix

---------

Signed-off-by: 0xsuryansh <[email protected]>
Co-authored-by: app-token-issuer-infra-releng[bot] <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com>
Co-authored-by: Suryansh <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Makram <[email protected]>
Co-authored-by: Ryan Hall <[email protected]>
Co-authored-by: kanth <[email protected]>
Co-authored-by: Zubin <[email protected]>
Co-authored-by: Josh Weintraub <[email protected]>
Co-authored-by: Evaldas Latoškinas <[email protected]>
Co-authored-by: nogo <[email protected]>
Co-authored-by: Will Winder <[email protected]>
Co-authored-by: Abdelrahman Soliman (Boda) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant