Skip to content

Commit

Permalink
Merge branch 'develop' into feature/BCFR-1086-finality-violation
Browse files Browse the repository at this point in the history
# Conflicts:
#	core/scripts/go.sum
#	deployment/go.mod
#	deployment/go.sum
#	go.mod
#	go.sum
#	integration-tests/go.mod
#	integration-tests/go.sum
#	integration-tests/load/go.sum
  • Loading branch information
dhaidashenko committed Dec 11, 2024
2 parents 2a5749f + 5f3aa78 commit 3c77161
Show file tree
Hide file tree
Showing 37 changed files with 970 additions and 1,240 deletions.
5 changes: 5 additions & 0 deletions .changeset/fuzzy-yaks-deny.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"chainlink": patch
---

#added Lens Sepolia config
5 changes: 5 additions & 0 deletions .changeset/tiny-kangaroos-switch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"chainlink": patch
---

Added new fatal error cases for transactions to the Solana TXM. #added
14 changes: 0 additions & 14 deletions .github/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -935,20 +935,6 @@ runner-test-matrix:

# START: CCIPv1.6 tests

- id: smoke/ccip/ccip_message_limitations_test.go:*
path: integration-tests/smoke/ccip/ccip_message_limitations_test.go
test_env_type: docker
runs_on: ubuntu-latest
triggers:
- PR E2E Core Tests
- Nightly E2E Tests
test_cmd: cd integration-tests/smoke/ccip && go test -run '^Test_CCIPMessageLimitations' -timeout 18m -test.parallel=1 -count=1 -json ./...
pyroscope_env: ci-smoke-ccipv1_6-evm-simulated
test_env_vars:
E2E_TEST_SELECTED_NETWORK: SIMULATED_1,SIMULATED_2
E2E_JD_VERSION: 0.6.0
CCIP_V16_TEST_ENV: docker

- id: smoke/ccip/ccip_token_price_updates_test.go:*
path: integration-tests/smoke/ccip/ccip_token_price_updates_test.go
test_env_type: docker
Expand Down
8 changes: 8 additions & 0 deletions .github/integration-in-memory-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ runner-test-matrix:
triggers:
- PR Integration CCIP Tests
test_cmd: cd integration-tests/smoke/ccip && go test ccip_messaging_test.go -timeout 12m -test.parallel=2 -count=1 -json

- id: smoke/ccip/ccip_message_limitations_test.go:*
path: integration-tests/smoke/ccip/ccip_message_limitations_test.go
test_env_type: in-memory
runs_on: ubuntu-latest
triggers:
- PR Integration CCIP Tests
test_cmd: cd integration-tests/smoke/ccip && go test -run "Test_CCIPMessageLimitations" -timeout 12m -test.parallel=2 -count=1 -json

- id: smoke/ccip/ccip_fee_boosting_test.go:*
path: integration-tests/smoke/ccip/ccip_fee_boosting_test.go
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ jobs:
results='${{ needs.run-core-e2e-tests-for-pr.outputs.test_results }}'
echo "Core test results:"
echo "$results" | jq .
node_migration_tests_failed=$(echo $results | jq '[.[] | select(.id == "integration-tests/migration/upgrade_version_test.go:*" ) | select(.result != "success")] | length > 0')
echo "node_migration_tests_failed=$node_migration_tests_failed" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -730,6 +730,7 @@ jobs:
env:
E2E_TEST_CHAINLINK_IMAGE: ${{ env.CHAINLINK_IMAGE }}
E2E_TEST_SOLANA_SECRET: thisisatestingonlysecret
CHAINLINK_USER_TEAM: "BIX"

- name: Upload Coverage Data
uses: actions/upload-artifact@v4.4.3
Expand Down
34 changes: 34 additions & 0 deletions ccip/config/evm/Lens_Sepolia.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
ChainID = "37111"
ChainType = "zksync"
# finality depth for this chain is very inconsistent due to low network traffic. in testing blocks every ~1-2minutes were seen
# confirmed this value with product
FinalityDepth = 40
FinalityTagEnabled = false
# block rate is dynamic, have seen block times as low as 1s
LogPollInterval = "5s"
# sufficient time for RPC to be labelled out of sync
NoNewHeadsThreshold = "10m"

[GasEstimator]
EIP1559DynamicFees = false
# limit default set for zk based chains
LimitDefault = 2_500_000_000
# value given by ds&a
FeeCapDefault = "2000 gwei"
# estimators typically estimated with min of 75 with median of 86
PriceDefault = "70 gwei"
PriceMax = "2000 gwei"
PriceMin = "70 gwei"
# bump gas aggressively to avoid high amounts of transmit errors
BumpThreshold = 1
BumpPercent = 40

[GasEstimator.DAOracle]
OracleType = 'zksync'

[Transactions]
ResendAfterThreshold = '7m0s'

[HeadTracker]
# l1 batching is done every 8hrs with low network activity setting this value to a rough calculation of ~1tx / 2min * 8hrs
HistoryDepth = 250
4 changes: 4 additions & 0 deletions core/capabilities/ccip/configs/evm/contract_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ var DestReaderConfig = evmrelaytypes.ChainReaderConfig{
ChainSpecificName: mustGetMethodName("getAllSourceChainConfigs", offrampABI),
ReadType: evmrelaytypes.Method,
},
consts.MethodNameOffRampLatestConfigDetails: {
ChainSpecificName: mustGetMethodName("latestConfigDetails", offrampABI),
ReadType: evmrelaytypes.Method,
},
consts.EventNameCommitReportAccepted: {
ChainSpecificName: mustGetEventName(consts.EventNameCommitReportAccepted, offrampABI),
ReadType: evmrelaytypes.Event,
Expand Down
2 changes: 1 addition & 1 deletion core/chains/evm/client/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ var harmony = ClientErrors{
var zkSync = ClientErrors{
NonceTooLow: regexp.MustCompile(`(?:: |^)nonce too low\..+actual: \d*$`),
NonceTooHigh: regexp.MustCompile(`(?:: |^)nonce too high\..+actual: \d*$`),
TerminallyUnderpriced: regexp.MustCompile(`(?:: |^)(max fee per gas less than block base fee|virtual machine entered unexpected state. please contact developers and provide transaction details that caused this error. Error description: The operator included transaction with an unacceptable gas price)$`),
TerminallyUnderpriced: regexp.MustCompile(`(?:: |^)(max fee per gas less than block base fee|virtual machine entered unexpected state. (?:P|p)lease contact developers and provide transaction details that caused this error. Error description: (?:The operator included transaction with an unacceptable gas price|Assertion error: Fair pubdata price too high))$`),
InsufficientEth: regexp.MustCompile(`(?:: |^)(?:insufficient balance for transfer$|insufficient funds for gas + value)`),
TxFeeExceedsCap: regexp.MustCompile(`(?:: |^)max priority fee per gas higher than max fee per gas$`),
// intrinsic gas too low - gas limit less than 14700
Expand Down
1 change: 1 addition & 0 deletions core/chains/evm/client/errors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ func Test_Eth_Errors(t *testing.T) {
{"intrinsic gas too low", true, "Klaytn"},
{"max fee per gas less than block base fee", true, "zkSync"},
{"virtual machine entered unexpected state. please contact developers and provide transaction details that caused this error. Error description: The operator included transaction with an unacceptable gas price", true, "zkSync"},
{"failed to validate the transaction. reason: Validation revert: virtual machine entered unexpected state. Please contact developers and provide transaction details that caused this error. Error description: Assertion error: Fair pubdata price too high", true, "zkSync"},
{"client error terminally underpriced", true, "tomlConfig"},
{"gas price less than block base fee", true, "aStar"},
{"[Request ID: e4d09e44-19a4-4eb7-babe-270db4c2ebc9] Gas price '830000000000' is below configured minimum gas price '950000000000'", true, "hedera"},
Expand Down
11 changes: 11 additions & 0 deletions core/chains/evm/config/toml/defaults/Ronin_Mainnet.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
ChainID = '2020'
FinalityTagEnabled = true
# Ronin produces blocks every 3 seconds
LogPollInterval = "3s"
NoNewHeadsThreshold = "3m"
LinkContractAddress = '0x3902228D6A3d2Dc44731fD9d45FeE6a61c722D0b'

[GasEstimator]
# Ronin uses default gas price of 20 gwei https://docs.skymavis.com/mavis/mpc/guides/estimate-gas#overview
Mode = 'FeeHistory'
PriceMax = "1000 gwei"
11 changes: 11 additions & 0 deletions core/chains/evm/config/toml/defaults/Ronin_Saigon.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
ChainID = '2021'
FinalityTagEnabled = true
# Ronin produces blocks every 3 seconds
LogPollInterval = "3s"
NoNewHeadsThreshold = "3m"
LinkContractAddress = '0x5bB50A6888ee6a67E22afFDFD9513be7740F1c15'

[GasEstimator]
# Ronin uses default gas price of 20 gwei https://docs.skymavis.com/mavis/mpc/guides/estimate-gas#overview
Mode = 'FeeHistory'
PriceMax = "1000 gwei"
1,126 changes: 0 additions & 1,126 deletions core/gethwrappers/ccip/generated/ccip_config/ccip_config.go

This file was deleted.

4 changes: 2 additions & 2 deletions core/scripts/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -303,13 +303,13 @@ require (
github.com/shirou/gopsutil/v3 v3.24.3 // indirect
github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240926212305-a6deabdfce86 // indirect
github.com/smartcontractkit/chain-selectors v1.0.34 // indirect
github.com/smartcontractkit/chainlink-ccip v0.0.0-20241210163448-e683c0b91a44 // indirect
github.com/smartcontractkit/chainlink-ccip v0.0.0-20241211150100-7683331f64a0 // indirect
github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect
github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db // indirect
github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect
github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 // indirect
github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2 // indirect
github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241204153209-c3a71b0eef99 // indirect
github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241210172617-6fd1891d0fbc // indirect
github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 // indirect
github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.13 // indirect
github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect
Expand Down
8 changes: 4 additions & 4 deletions core/scripts/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1140,8 +1140,8 @@ github.com/smartcontractkit/chain-selectors v1.0.34 h1:MJ17OGu8+jjl426pcKrJkCf3f
github.com/smartcontractkit/chain-selectors v1.0.34/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8=
github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU=
github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08=
github.com/smartcontractkit/chainlink-ccip v0.0.0-20241210163448-e683c0b91a44 h1:+3Uc4x1tDFCddjhmgkphDqWr1N+mzP7NQbXD8Bby6Ck=
github.com/smartcontractkit/chainlink-ccip v0.0.0-20241210163448-e683c0b91a44/go.mod h1:F8xQAIW0ymb2BZhqn89sWZLXreJhM5KDVF6Qb4y44N0=
github.com/smartcontractkit/chainlink-ccip v0.0.0-20241211150100-7683331f64a0 h1:/1L+v4SxUD2K5RMRbfByyLfePMAgQKeD0onSetPnGmA=
github.com/smartcontractkit/chainlink-ccip v0.0.0-20241211150100-7683331f64a0/go.mod h1:F8xQAIW0ymb2BZhqn89sWZLXreJhM5KDVF6Qb4y44N0=
github.com/smartcontractkit/chainlink-common v0.3.1-0.20241211192225-0b03fa331a49 h1:OSWD6jugnwJz3IuLsIPpQn+3l9Xlww28j3Qr+5QILBI=
github.com/smartcontractkit/chainlink-common v0.3.1-0.20241211192225-0b03fa331a49/go.mod h1:bQktEJf7sJ0U3SmIcXvbGUox7SmXcnSEZ4kUbT8R5Nk=
github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0=
Expand All @@ -1154,8 +1154,8 @@ github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 h1:0ewLMbAz3
github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0/go.mod h1:/dVVLXrsp+V0AbcYGJo3XMzKg3CkELsweA/TTopCsKE=
github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2 h1:onBe3DqNrbtOAzKS4PrPIiJX65BGo1aYiYZxFVEW+jc=
github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2/go.mod h1:m/A3lqD7ms/RsQ9BT5P2uceYY0QX5mIt4KQxT2G6qEo=
github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241204153209-c3a71b0eef99 h1:lvn9Yxah+QD1/PcgijLO0dNRa28HuQWZl8Kkxh46KJc=
github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241204153209-c3a71b0eef99/go.mod h1:p8aUDfJeley6oer7y+Ucd3edOtRlMTnWg3mN6rhaLWo=
github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241210172617-6fd1891d0fbc h1:dssRwJhmzJkUN/OajaDj2GsxBn+Tupk3bI1BkPEoJg0=
github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241210172617-6fd1891d0fbc/go.mod h1:p8aUDfJeley6oer7y+Ucd3edOtRlMTnWg3mN6rhaLWo=
github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 h1:tNS7U9lrxkFvEuyxQv11HHOiV9LPDGC9wYEy+yM/Jv4=
github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8/go.mod h1:EBrEgcdIbwepqguClkv8Ohy7CbyWSJaE4EC9aBJlQK0=
github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.13 h1:T0kbw07Vb6xUyA9MIJZfErMgWseWi1zf7cYvRpoq7ug=
Expand Down
38 changes: 20 additions & 18 deletions deployment/ccip/changeset/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
commoncs "github.com/smartcontractkit/chainlink/deployment/common/changeset"
commontypes "github.com/smartcontractkit/chainlink/deployment/common/types"
common_v1_0 "github.com/smartcontractkit/chainlink/deployment/common/view/v1_0"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/commit_store"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_rmn_contract"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/registry_module_owner_custom"
Expand All @@ -48,33 +47,38 @@ import (
)

var (
// Legacy
CommitStore deployment.ContractType = "CommitStore"

// Not legacy
MockRMN deployment.ContractType = "MockRMN"
RMNRemote deployment.ContractType = "RMNRemote"
ARMProxy deployment.ContractType = "ARMProxy"
WETH9 deployment.ContractType = "WETH9"
Router deployment.ContractType = "Router"
CommitStore deployment.ContractType = "CommitStore"
TokenAdminRegistry deployment.ContractType = "TokenAdminRegistry"
RegistryModule deployment.ContractType = "RegistryModuleOwnerCustom"
NonceManager deployment.ContractType = "NonceManager"
FeeQuoter deployment.ContractType = "FeeQuoter"
CCIPHome deployment.ContractType = "CCIPHome"
CCIPConfig deployment.ContractType = "CCIPConfig"
RMNHome deployment.ContractType = "RMNHome"
OnRamp deployment.ContractType = "OnRamp"
OffRamp deployment.ContractType = "OffRamp"
CapabilitiesRegistry deployment.ContractType = "CapabilitiesRegistry"
PriceFeed deployment.ContractType = "PriceFeed"
// Note test router maps to a regular router contract.

// Test contracts. Note test router maps to a regular router contract.
TestRouter deployment.ContractType = "TestRouter"
Multicall3 deployment.ContractType = "Multicall3"
CCIPReceiver deployment.ContractType = "CCIPReceiver"
BurnMintToken deployment.ContractType = "BurnMintToken"
BurnMintTokenPool deployment.ContractType = "BurnMintTokenPool"
USDCToken deployment.ContractType = "USDCToken"
USDCMockTransmitter deployment.ContractType = "USDCMockTransmitter"
USDCTokenMessenger deployment.ContractType = "USDCTokenMessenger"
USDCTokenPool deployment.ContractType = "USDCTokenPool"

// Pools
BurnMintToken deployment.ContractType = "BurnMintToken"
BurnMintTokenPool deployment.ContractType = "BurnMintTokenPool"
USDCToken deployment.ContractType = "USDCToken"
USDCTokenMessenger deployment.ContractType = "USDCTokenMessenger"
USDCTokenPool deployment.ContractType = "USDCTokenPool"
)

// CCIPChainState holds a Go binding for all the currently deployed CCIP contracts
Expand Down Expand Up @@ -117,8 +121,6 @@ type CCIPChainState struct {
CapabilityRegistry *capabilities_registry.CapabilitiesRegistry
CCIPHome *ccip_home.CCIPHome
RMNHome *rmn_home.RMNHome
// TODO remove once staging upgraded.
CCIPConfig *ccip_config.CCIPConfig

// Test contracts
Receiver *maybe_revert_message_receiver.MaybeRevertMessageReceiver
Expand Down Expand Up @@ -205,6 +207,13 @@ func (c CCIPChainState) GenerateView() (view.ChainView, error) {
}
chainView.RMNProxy[c.RMNProxyNew.Address().Hex()] = rmnProxyView
}
if c.CCIPHome != nil && c.CapabilityRegistry != nil {
chView, err := v1_6.GenerateCCIPHomeView(c.CapabilityRegistry, c.CCIPHome)
if err != nil {
return chainView, errors.Wrapf(err, "failed to generate CCIP home view for CCIP home %s", c.CCIPHome.Address())
}
chainView.CCIPHome[c.CCIPHome.Address().Hex()] = chView
}
if c.CapabilityRegistry != nil {
capRegView, err := common_v1_0.GenerateCapabilityRegistryView(c.CapabilityRegistry)
if err != nil {
Expand Down Expand Up @@ -453,13 +462,6 @@ func LoadChainState(chain deployment.Chain, addresses map[string]deployment.Type
return state, err
}
state.CCIPHome = ccipHome
case deployment.NewTypeAndVersion(CCIPConfig, deployment.Version1_0_0).String():
// TODO: Remove once staging upgraded.
ccipConfig, err := ccip_config.NewCCIPConfig(common.HexToAddress(address), chain.Client)
if err != nil {
return state, err
}
state.CCIPConfig = ccipConfig
case deployment.NewTypeAndVersion(CCIPReceiver, deployment.Version1_0_0).String():
mr, err := maybe_revert_message_receiver.NewMaybeRevertMessageReceiver(common.HexToAddress(address), chain.Client)
if err != nil {
Expand Down
45 changes: 45 additions & 0 deletions deployment/ccip/view/v1_2/price_registry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package v1_2

import (
"fmt"

"github.com/ethereum/go-ethereum/common"

"github.com/smartcontractkit/chainlink/deployment/common/view/types"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry_1_2_0"
)

type PriceRegistryView struct {
types.ContractMetaData
FeeTokens []common.Address `json:"feeTokens"`
StalenessThreshold string `json:"stalenessThreshold"`
Updaters []common.Address `json:"updaters"`
}

func GeneratePriceRegistryView(pr *price_registry_1_2_0.PriceRegistry) (PriceRegistryView, error) {
if pr == nil {
return PriceRegistryView{}, fmt.Errorf("cannot generate view for nil PriceRegistry")
}
meta, err := types.NewContractMetaData(pr, pr.Address())
if err != nil {
return PriceRegistryView{}, fmt.Errorf("failed to generate contract metadata for PriceRegistry %s: %w", pr.Address(), err)
}
ft, err := pr.GetFeeTokens(nil)
if err != nil {
return PriceRegistryView{}, fmt.Errorf("failed to get fee tokens %s: %w", pr.Address(), err)
}
st, err := pr.GetStalenessThreshold(nil)
if err != nil {
return PriceRegistryView{}, fmt.Errorf("failed to get staleness threshold %s: %w", pr.Address(), err)
}
updaters, err := pr.GetPriceUpdaters(nil)
if err != nil {
return PriceRegistryView{}, fmt.Errorf("failed to get price updaters %s: %w", pr.Address(), err)
}
return PriceRegistryView{
ContractMetaData: meta,
FeeTokens: ft,
StalenessThreshold: st.String(),
Updaters: updaters,
}, nil
}
38 changes: 38 additions & 0 deletions deployment/ccip/view/v1_2/price_registry_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package v1_2

import (
"encoding/json"
"testing"

"github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.uber.org/zap/zapcore"

"github.com/smartcontractkit/chainlink/deployment"
"github.com/smartcontractkit/chainlink/deployment/environment/memory"
"github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry_1_2_0"
"github.com/smartcontractkit/chainlink/v2/core/logger"
)

func TestGeneratePriceRegistryView(t *testing.T) {
e := memory.NewMemoryEnvironment(t, logger.TestLogger(t), zapcore.InfoLevel, memory.MemoryEnvironmentConfig{
Chains: 1,
})
chain := e.Chains[e.AllChainSelectors()[0]]
f1, f2 := common.HexToAddress("0x1"), common.HexToAddress("0x2")
_, tx, c, err := price_registry_1_2_0.DeployPriceRegistry(
chain.DeployerKey, chain.Client, []common.Address{chain.DeployerKey.From}, []common.Address{f1, f2}, uint32(10))
_, err = deployment.ConfirmIfNoError(chain, tx, err)
require.NoError(t, err)

v, err := GeneratePriceRegistryView(c)
require.NoError(t, err)
assert.Equal(t, v.Owner, chain.DeployerKey.From)
assert.Equal(t, v.TypeAndVersion, "PriceRegistry 1.2.0")
assert.Equal(t, v.FeeTokens, []common.Address{f1, f2})
assert.Equal(t, v.StalenessThreshold, "10")
assert.Equal(t, v.Updaters, []common.Address{chain.DeployerKey.From})
_, err = json.MarshalIndent(v, "", " ")
require.NoError(t, err)
}
Loading

0 comments on commit 3c77161

Please sign in to comment.