Skip to content

Update contract dependencies: flow-core-contracts v1.10.1, nft-storefront, flow-evm-bridge v0.2.1#8541

Merged
janezpodhostnik merged 6 commits intomasterfrom
josh/update-core-contracts-1.9.4
Apr 17, 2026
Merged

Update contract dependencies: flow-core-contracts v1.10.1, nft-storefront, flow-evm-bridge v0.2.1#8541
janezpodhostnik merged 6 commits intomasterfrom
josh/update-core-contracts-1.9.4

Conversation

@joshuahannan
Copy link
Copy Markdown
Contributor

@joshuahannan joshuahannan commented Apr 9, 2026

Summary

  • flow-core-contracts/lib/go/{contracts,templates}: v1.9.3 → v1.10.1
  • nft-storefront/lib/go/contracts: v1.1.0 → v1.1.1-0...cddb825 (fixes missing Burner address substitution in NFTStorefrontV2)
  • flow-evm-bridge: v0.2.0 → v0.2.1
  • All three Go modules (root, insecure, integration) updated and tidied; go-ethereum pinned at v1.16.8 to avoid a breaking removal of trie/utils in v1.17.x

Bootstrap changes (fvm/bootstrap.go, fvm/blueprints/bridge.go)

  • Pass env.BurnerAddress to storefront.NFTStorefrontV2() — required by nft-storefront cddb825 which now substitutes the Burner import address
  • Added two new bridge contracts introduced in flow-evm-bridge v0.2.1 (FlowEVMBridgeCustomAssociationTypes, FlowEVMBridgeCustomAssociations) to BridgeContracts deployment list, ordered before FlowEVMBridgeConfig which depends on them
  • Added FlowEVMBridgeCustomAssociationTypesAddress and FlowEVMBridgeCustomAssociationsAddress to bridgeEnv
  • Moved deployCrossVMMetadataViews before setupVMBridge — the new bridge contracts import CrossVMMetadataViews, so it must be deployed and its address set in env before the bridge contracts are built

Updated genesis state commitments

utils/unittest/execution_state.go and engine/execution/state/bootstrap/bootstrap_test.go updated with new hashes reflecting the changed contract bytecode.

Known issue

TestVMBridge is still failing due to a bug in flow-ft v1.1.0: GenerateTransferGenericVaultWithAddressScript substitutes the MetadataViews import with the FungibleTokenMetadataViews address instead of the actual MetadataViews address. This needs a fix in the flow-ft repo.

Summary by CodeRabbit

  • New Features

    • EVM bridge now supports custom association types and custom associations.
  • Chores

    • Upgraded core contracts, storefront, EVM bridge, telemetry, gRPC, and crypto dependencies.
    • Adjusted bootstrap initialization ordering and bridge setup.
  • Tests

    • Updated genesis/state commitment values, refined NFT/EVM bridge test flows and event expectations, and tweaked storage-reservation test thresholds.

@joshuahannan joshuahannan requested a review from a team as a code owner April 9, 2026 20:32
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 6 package(s) with unknown licenses.
See the Details below.

License Issues

go.mod

PackageVersionLicenseIssue Type
github.com/consensys/gnark-crypto0.18.1NullUnknown License
github.com/grpc-ecosystem/grpc-gateway/v22.27.3NullUnknown License

insecure/go.mod

PackageVersionLicenseIssue Type
github.com/consensys/gnark-crypto0.18.1NullUnknown License
github.com/grpc-ecosystem/grpc-gateway/v22.27.3NullUnknown License

integration/go.mod

PackageVersionLicenseIssue Type
github.com/consensys/gnark-crypto0.18.1NullUnknown License
github.com/grpc-ecosystem/grpc-gateway/v22.27.3NullUnknown License

OpenSSF Scorecard

Scorecard details
PackageVersionScoreDetails
gomod/github.com/consensys/gnark-crypto 0.18.1 UnknownUnknown
gomod/github.com/grpc-ecosystem/grpc-gateway/v2 2.27.3 UnknownUnknown
gomod/github.com/onflow/flow-core-contracts/lib/go/contracts 1.10.2 🟢 6
Details
CheckScoreReason
Code-Review🟢 9Found 12/13 approved changesets -- score normalized to 9
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-core-contracts/lib/go/templates 1.10.2 🟢 6
Details
CheckScoreReason
Code-Review🟢 9Found 12/13 approved changesets -- score normalized to 9
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-evm-bridge 0.2.1 UnknownUnknown
gomod/github.com/onflow/flow-ft/lib/go/contracts 1.1.1 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Code-Review🟢 8Found 6/7 approved changesets -- score normalized to 8
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-ft/lib/go/templates 1.1.1 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Code-Review🟢 8Found 6/7 approved changesets -- score normalized to 8
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-nft/lib/go/contracts 1.4.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1023 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-nft/lib/go/templates 1.4.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1023 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/nft-storefront/lib/go/contracts 1.1.1-0.20260409183916-cddb825ea066 🟢 4.6
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Maintained🟢 79 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy⚠️ 0security policy file not detected
Branch-Protection⚠️ 1branch protection is not maximal on development and all release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace 1.39.0 🟢 9.3
Details
CheckScoreReason
Dependency-Update-Tool🟢 10update tool detected
Maintained🟢 1030 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
License🟢 10license file detected
Pinned-Dependencies🟢 10all dependencies are pinned
CII-Best-Practices🟢 5badge detected: Passing
Signed-Releases🟢 85 out of the last 5 releases have a total of 5 signed artifacts.
Fuzzing🟢 10project is fuzzed
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST🟢 10SAST tool is run on all commits
Security-Policy🟢 10security policy file detected
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
CI-Tests🟢 1030 out of 30 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 42 contributing companies or organizations
gomod/go.opentelemetry.io/proto/otlp 1.9.0 🟢 7.9
Details
CheckScoreReason
Dependency-Update-Tool🟢 10update tool detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies🟢 6dependency not pinned by hash detected -- score normalized to 6
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 4branch protection is not maximal on development and all release branches
Security-Policy🟢 10security policy file detected
CI-Tests🟢 1030 out of 30 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 8 contributing companies or organizations
gomod/go.yaml.in/yaml/v3 3.0.4 UnknownUnknown
gomod/github.com/consensys/gnark-crypto 0.18.1 UnknownUnknown
gomod/github.com/grpc-ecosystem/grpc-gateway/v2 2.27.3 UnknownUnknown
gomod/github.com/onflow/flow-core-contracts/lib/go/contracts 1.10.2 🟢 6
Details
CheckScoreReason
Code-Review🟢 9Found 12/13 approved changesets -- score normalized to 9
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-core-contracts/lib/go/templates 1.10.2 🟢 6
Details
CheckScoreReason
Code-Review🟢 9Found 12/13 approved changesets -- score normalized to 9
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-evm-bridge 0.2.1 UnknownUnknown
gomod/github.com/onflow/flow-ft/lib/go/contracts 1.1.1 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Code-Review🟢 8Found 6/7 approved changesets -- score normalized to 8
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-ft/lib/go/templates 1.1.1 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Code-Review🟢 8Found 6/7 approved changesets -- score normalized to 8
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-nft/lib/go/contracts 1.4.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1023 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-nft/lib/go/templates 1.4.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1023 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/nft-storefront/lib/go/contracts 1.1.1-0.20260409183916-cddb825ea066 🟢 4.6
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Maintained🟢 79 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy⚠️ 0security policy file not detected
Branch-Protection⚠️ 1branch protection is not maximal on development and all release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace 1.39.0 🟢 9.3
Details
CheckScoreReason
Dependency-Update-Tool🟢 10update tool detected
Maintained🟢 1030 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
License🟢 10license file detected
Pinned-Dependencies🟢 10all dependencies are pinned
CII-Best-Practices🟢 5badge detected: Passing
Signed-Releases🟢 85 out of the last 5 releases have a total of 5 signed artifacts.
Fuzzing🟢 10project is fuzzed
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST🟢 10SAST tool is run on all commits
Security-Policy🟢 10security policy file detected
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
CI-Tests🟢 1030 out of 30 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 42 contributing companies or organizations
gomod/go.opentelemetry.io/proto/otlp 1.9.0 🟢 7.9
Details
CheckScoreReason
Dependency-Update-Tool🟢 10update tool detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies🟢 6dependency not pinned by hash detected -- score normalized to 6
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 4branch protection is not maximal on development and all release branches
Security-Policy🟢 10security policy file detected
CI-Tests🟢 1030 out of 30 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 8 contributing companies or organizations
gomod/go.yaml.in/yaml/v3 3.0.4 UnknownUnknown
gomod/github.com/consensys/gnark-crypto 0.18.1 UnknownUnknown
gomod/github.com/grpc-ecosystem/grpc-gateway/v2 2.27.3 UnknownUnknown
gomod/github.com/onflow/flow-core-contracts/lib/go/contracts 1.10.2 🟢 6
Details
CheckScoreReason
Code-Review🟢 9Found 12/13 approved changesets -- score normalized to 9
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-core-contracts/lib/go/templates 1.10.2 🟢 6
Details
CheckScoreReason
Code-Review🟢 9Found 12/13 approved changesets -- score normalized to 9
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-evm-bridge 0.2.1 UnknownUnknown
gomod/github.com/onflow/flow-ft/lib/go/contracts 1.1.1 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Code-Review🟢 8Found 6/7 approved changesets -- score normalized to 8
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-ft/lib/go/templates 1.1.1 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Code-Review🟢 8Found 6/7 approved changesets -- score normalized to 8
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-nft/lib/go/contracts 1.4.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1023 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/flow-nft/lib/go/templates 1.4.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1023 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 6Found 7/11 approved changesets -- score normalized to 6
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/github.com/onflow/nft-storefront/lib/go/contracts 1.1.1-0.20260409183916-cddb825ea066 🟢 4.6
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Maintained🟢 79 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy⚠️ 0security policy file not detected
Branch-Protection⚠️ 1branch protection is not maximal on development and all release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
gomod/go.opentelemetry.io/otel/exporters/otlp/otlptrace 1.39.0 🟢 9.3
Details
CheckScoreReason
Dependency-Update-Tool🟢 10update tool detected
Maintained🟢 1030 commit(s) and 18 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
License🟢 10license file detected
Pinned-Dependencies🟢 10all dependencies are pinned
CII-Best-Practices🟢 5badge detected: Passing
Signed-Releases🟢 85 out of the last 5 releases have a total of 5 signed artifacts.
Fuzzing🟢 10project is fuzzed
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST🟢 10SAST tool is run on all commits
Security-Policy🟢 10security policy file detected
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
CI-Tests🟢 1030 out of 30 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 42 contributing companies or organizations
gomod/go.opentelemetry.io/proto/otlp 1.9.0 🟢 7.9
Details
CheckScoreReason
Dependency-Update-Tool🟢 10update tool detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Maintained🟢 1030 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies🟢 6dependency not pinned by hash detected -- score normalized to 6
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 4branch protection is not maximal on development and all release branches
Security-Policy🟢 10security policy file detected
CI-Tests🟢 1030 out of 30 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 8 contributing companies or organizations
gomod/go.yaml.in/yaml/v3 3.0.4 UnknownUnknown

Scanned Files

  • go.mod
  • insecure/go.mod
  • integration/go.mod

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 9, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds two EVM-bridge contract paths, reorders a VM-bridge bootstrap step, extends bridge environment with two new addresses and an NFTStorefrontV2 constructor arg, updates several hardcoded genesis/state-commitment test values and one test numeric, adjusts FT type argument construction, and bumps multiple Go module versions.

Changes

Cohort / File(s) Summary
Bootstrap state & tests
engine/execution/state/bootstrap/bootstrap_test.go, utils/unittest/execution_state.go
Replaced hardcoded expected state-commitment hex/byte constants used in bootstrap tests; updated genesis state-commitment hex constants for Mainnet/Testnet/fallback.
EVM bridge blueprints & bootstrap
fvm/blueprints/bridge.go, fvm/bootstrap.go, fvm/fvm_test.go, fvm/blueprints/token.go
Appended two new Cadence contract paths to BridgeContracts; moved setupVMBridge later in bootstrap; added BurnerAddress arg to NFTStorefrontV2; added FlowEVMBridgeCustomAssociationTypesAddress and FlowEVMBridgeCustomAssociationsAddress to bridge env (set to service account); changed FT type arg to a dynamic type identifier; updated NFT test deployment and event assertion.
Execution tests
engine/execution/computation/execution_verification_test.go
Adjusted minimumStorage UFix64 literal used in storage-limit failure subtest.
Go module dependency bumps
go.mod, insecure/go.mod, integration/go.mod
Bumped multiple onflow contract/template modules, flow-evm-bridge, gRPC gateway, OpenTelemetry proto/exporter, gnark-crypto; added go.yaml.in/yaml/v3 indirect dependency and other minor version upgrades across module files.

Sequence Diagram(s)

(Skipped — changes are configuration, test constants, dependency bumps and a small bootstrap call reorder; no new multi-component sequential flow requiring visualization.)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

Flow EVM, Improvement

Suggested reviewers

  • fxamacker
  • m-Peter

Poem

🐰 I hopped through code and nudged a bridge in place,
Two contracts tucked in, each address found its space.
Tests learned new bytes, modules climbed the hill,
Bootstrap took a step — quiet, tidy, still.
Hoppity-hop, the build breathes light and bright.

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title mentions updating contract dependencies but does not accurately reflect the complete scope of changes, including bootstrap logic modifications, address reordering, test updates, and genesis state commitment changes. Consider revising the title to better capture the main changes, such as 'Update contract dependencies and bootstrap logic for flow-core-contracts, nft-storefront, and flow-evm-bridge' or similar to reflect that this is not purely a dependency update.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch josh/update-core-contracts-1.9.4

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 9, 2026

Codecov Report

❌ Patch coverage is 87.87879% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
fvm/blueprints/token.go 0.00% 2 Missing ⚠️
utils/unittest/execution_state.go 0.00% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@joshuahannan joshuahannan requested review from a team and janezpodhostnik April 9, 2026 20:36
@blacksmith-sh

This comment has been minimized.

@joshuahannan
Copy link
Copy Markdown
Contributor Author

Y'all are going to need to get this passing without me. 😢 This has the latest versions of all the contracts deployed in bootstrapping

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
go.mod (1)

278-348: ⚠️ Potential issue | 🟠 Major

Upgrade quic-go to v0.57.0 or later across all module manifests.

github.com/quic-go/quic-go v0.48.2 is vulnerable to GO-2025-4017 and GO-2025-4233 (panic/DoS severity). Upgrade to v0.57.0 minimum in:

  • go.mod (line 315)
  • integration/go.mod (line 314)
  • insecure/go.mod (line 269)

No companion upgrades needed for qpack (v0.5.1 remains compatible).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@go.mod` around lines 278 - 348, The go.mod currently pins
github.com/quic-go/quic-go at v0.48.2 (see the module entry
"github.com/quic-go/quic-go v0.48.2"); update that dependency to at least
v0.57.0 in this file and the other module manifests noted (integration/go.mod
and insecure/go.mod) so the quic-go upgrade addresses GO-2025-4017/4233; keep
github.com/quic-go/qpack v0.5.1 as-is since no qpack upgrade is required.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@go.mod`:
- Around line 278-348: The go.mod currently pins github.com/quic-go/quic-go at
v0.48.2 (see the module entry "github.com/quic-go/quic-go v0.48.2"); update that
dependency to at least v0.57.0 in this file and the other module manifests noted
(integration/go.mod and insecure/go.mod) so the quic-go upgrade addresses
GO-2025-4017/4233; keep github.com/quic-go/qpack v0.5.1 as-is since no qpack
upgrade is required.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 40c92a18-9e53-4022-b5bf-d7300429158d

📥 Commits

Reviewing files that changed from the base of the PR and between 0ce6aac and dd41ae5.

⛔ Files ignored due to path filters (3)
  • go.sum is excluded by !**/*.sum
  • insecure/go.sum is excluded by !**/*.sum
  • integration/go.sum is excluded by !**/*.sum
📒 Files selected for processing (7)
  • engine/execution/state/bootstrap/bootstrap_test.go
  • fvm/blueprints/bridge.go
  • fvm/bootstrap.go
  • go.mod
  • insecure/go.mod
  • integration/go.mod
  • utils/unittest/execution_state.go

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
fvm/fvm_test.go (1)

3827-3834: ⚠️ Potential issue | 🟠 Major

Narrow the event filter before reading NFT id.

Line 3827 matches any event containing "Deposited", which is overly broad. That makes Line 3831’s id cast fragile if a non-NFT deposited event is encountered. Match the specific NFT deposited event type (or guard field existence) before extracting id.

💡 Suggested patch
-			for _, event := range output.Events {
-				if strings.Contains(string(event.Type), "Deposited") {
+			expectedNFTDepositEvent := fmt.Sprintf("A.%s.%s.Deposited", accounts[0], nftContractName)
+			for _, event := range output.Events {
+				if string(event.Type) != expectedNFTDepositEvent {
+					continue
+				}
 					// decode the event payload
 					data, _ := ccf.Decode(nil, event.Payload)
 					// get the id field from the event
 					id = cadence.SearchFieldByName(
 						data.(cadence.Event),
 						"id",
 					).(cadence.UInt64)
 				}
 			}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@fvm/fvm_test.go` around lines 3827 - 3834, The code currently treats any
event whose event.Type contains "Deposited" as an NFT deposit and directly casts
the decoded payload to cadence.Event and its "id" field to cadence.UInt64;
change this to first narrow the filter to the exact NFT deposited event type
(e.g. compare event.Type string equality to the NFT deposit event identifier)
or, if the exact type string may vary, decode safely and check that
cadence.SearchFieldByName(data.(cadence.Event), "id") exists and that the
returned value type-asserts to cadence.UInt64 before assigning to id; reference
the decoding call ccf.Decode(nil, event.Payload), the event.Type check, and
cadence.SearchFieldByName usage when making the fix.
insecure/go.mod (1)

269-269: ⚠️ Potential issue | 🟠 Major

Update quic-go to address HIGH severity security vulnerabilities.

This dependency contains 2 confirmed HIGH severity vulnerabilities affecting v0.48.2:

  • GO-2025-4017 / GHSA-47m2-4cr7-mhcw (CVE-2025-59530): Client assertion failure when a misbehaving server sends a premature HANDSHAKE_DONE during handshake, leading to DoS. Patched in v0.49.1+.
  • GO-2025-4233 / GHSA-g754-hx8w-x2g6 (CVE-2025-64702): HTTP/3 QPACK header expansion DoS. Patched in v0.57.0+.

Upgrade quic-go to v0.57.0 or later to address both vulnerabilities. Since this is pulled in directly by the insecure module and indirectly through libp2p, updating the direct dependency or adding a replace directive in go.mod will resolve this.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@insecure/go.mod` at line 269, The go.mod currently pins
github.com/quic-go/quic-go at v0.48.2 which contains two HIGH severity
vulnerabilities; update the dependency to v0.57.0 or later by changing the
module version reference for github.com/quic-go/quic-go to >= v0.57.0 or, if the
transitive libp2p import prevents a direct bump, add a go.mod replace directive
that forces github.com/quic-go/quic-go => github.com/quic-go/quic-go v0.57.0 (or
newer) so any import of quic-go uses the fixed release; ensure you run go mod
tidy and verify with go list -m all or your CI to confirm the new version is
used.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@fvm/fvm_test.go`:
- Around line 3827-3834: The code currently treats any event whose event.Type
contains "Deposited" as an NFT deposit and directly casts the decoded payload to
cadence.Event and its "id" field to cadence.UInt64; change this to first narrow
the filter to the exact NFT deposited event type (e.g. compare event.Type string
equality to the NFT deposit event identifier) or, if the exact type string may
vary, decode safely and check that
cadence.SearchFieldByName(data.(cadence.Event), "id") exists and that the
returned value type-asserts to cadence.UInt64 before assigning to id; reference
the decoding call ccf.Decode(nil, event.Payload), the event.Type check, and
cadence.SearchFieldByName usage when making the fix.

In `@insecure/go.mod`:
- Line 269: The go.mod currently pins github.com/quic-go/quic-go at v0.48.2
which contains two HIGH severity vulnerabilities; update the dependency to
v0.57.0 or later by changing the module version reference for
github.com/quic-go/quic-go to >= v0.57.0 or, if the transitive libp2p import
prevents a direct bump, add a go.mod replace directive that forces
github.com/quic-go/quic-go => github.com/quic-go/quic-go v0.57.0 (or newer) so
any import of quic-go uses the fixed release; ensure you run go mod tidy and
verify with go list -m all or your CI to confirm the new version is used.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 66f0879f-8813-4c69-937d-19761a6d871b

📥 Commits

Reviewing files that changed from the base of the PR and between dd41ae5 and e744a79.

⛔ Files ignored due to path filters (3)
  • go.sum is excluded by !**/*.sum
  • insecure/go.sum is excluded by !**/*.sum
  • integration/go.sum is excluded by !**/*.sum
📒 Files selected for processing (8)
  • engine/execution/computation/execution_verification_test.go
  • fvm/blueprints/token.go
  • fvm/bootstrap.go
  • fvm/fvm_test.go
  • go.mod
  • insecure/go.mod
  • integration/go.mod
  • utils/unittest/execution_state.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • fvm/bootstrap.go
  • utils/unittest/execution_state.go
  • go.mod
  • integration/go.mod

@janezpodhostnik janezpodhostnik force-pushed the josh/update-core-contracts-1.9.4 branch from e744a79 to 5bb0e89 Compare April 14, 2026 16:28
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
fvm/fvm_test.go (2)

3827-3834: Match the exact deposited event before reading the NFT ID.

strings.Contains(string(event.Type), "Deposited") will accept any deposited event emitted by the transaction. Filtering on the concrete NFT deposit event and asserting a single match would make the bridged-ID lookup deterministic.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@fvm/fvm_test.go` around lines 3827 - 3834, Replace the lenient
strings.Contains check on event.Type with a strict equality check against the
concrete deposit event identifier (do not accept any "Deposited" substring) and
ensure you only process when exactly one matching event exists; locate the code
that currently uses strings.Contains(string(event.Type), "Deposited"), use the
exact event type comparison instead, validate there is a single matched event
before calling ccf.Decode and cadence.SearchFieldByName on the decoded
cadence.Event, and return or fail fast if zero or multiple matches are found so
the extracted id (cadence.UInt64 assigned to id) is deterministic.

3372-3399: Extract this repeated bridge-address fixture.

The same service-account-only address map is duplicated in both VM-bridge subtests. A small helper would make the next bridge contract addition much harder to miss.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@fvm/fvm_test.go` around lines 3372 - 3399, The repeated bridge.Environment
literal (assigned to bridgeEnv) used in both VM-bridge subtests should be
extracted into a small helper to avoid duplication and future omissions: add a
function like makeServiceAccountBridgeEnv(envAddress string) or
defaultBridgeEnv(env) that returns a bridge.Environment with every field set to
env.ServiceAccountAddress, then replace the inlined bridgeEnv constructions in
the two VM-bridge subtests with calls to that helper (referencing the
bridge.Environment type and the bridgeEnv variable name to locate the spots to
change).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@insecure/go.mod`:
- Around line 309-315: The test module references a vulnerable dependency
github.com/quic-go/quic-go at v0.48.2; update the require line for
github.com/quic-go/quic-go to a patched release (at least v0.57.0 to cover the
QPACK DoS and earlier fixes) and then run your Go module update (eg. go get
github.com/quic-go/quic-go@v0.57.0 && go mod tidy) to refresh go.mod/go.sum and
ensure compatibility with go-libp2p and the test matrix, then run the test suite
to verify nothing breaks.

---

Nitpick comments:
In `@fvm/fvm_test.go`:
- Around line 3827-3834: Replace the lenient strings.Contains check on
event.Type with a strict equality check against the concrete deposit event
identifier (do not accept any "Deposited" substring) and ensure you only process
when exactly one matching event exists; locate the code that currently uses
strings.Contains(string(event.Type), "Deposited"), use the exact event type
comparison instead, validate there is a single matched event before calling
ccf.Decode and cadence.SearchFieldByName on the decoded cadence.Event, and
return or fail fast if zero or multiple matches are found so the extracted id
(cadence.UInt64 assigned to id) is deterministic.
- Around line 3372-3399: The repeated bridge.Environment literal (assigned to
bridgeEnv) used in both VM-bridge subtests should be extracted into a small
helper to avoid duplication and future omissions: add a function like
makeServiceAccountBridgeEnv(envAddress string) or defaultBridgeEnv(env) that
returns a bridge.Environment with every field set to env.ServiceAccountAddress,
then replace the inlined bridgeEnv constructions in the two VM-bridge subtests
with calls to that helper (referencing the bridge.Environment type and the
bridgeEnv variable name to locate the spots to change).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1b93ed33-6ec0-4a0e-8bbe-83dfce2737a5

📥 Commits

Reviewing files that changed from the base of the PR and between e744a79 and 5bb0e89.

⛔ Files ignored due to path filters (3)
  • go.sum is excluded by !**/*.sum
  • insecure/go.sum is excluded by !**/*.sum
  • integration/go.sum is excluded by !**/*.sum
📒 Files selected for processing (8)
  • engine/execution/computation/execution_verification_test.go
  • fvm/blueprints/token.go
  • fvm/bootstrap.go
  • fvm/fvm_test.go
  • go.mod
  • insecure/go.mod
  • integration/go.mod
  • utils/unittest/execution_state.go
✅ Files skipped from review due to trivial changes (1)
  • integration/go.mod
🚧 Files skipped from review as they are similar to previous changes (4)
  • engine/execution/computation/execution_verification_test.go
  • fvm/blueprints/token.go
  • utils/unittest/execution_state.go
  • go.mod

Comment thread insecure/go.mod
Comment on lines +309 to +315
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect
go.opentelemetry.io/otel/metric v1.39.0 // indirect
go.opentelemetry.io/otel/sdk v1.39.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect
go.opentelemetry.io/otel/trace v1.39.0 // indirect
go.opentelemetry.io/proto/otlp v1.7.1 // indirect
go.opentelemetry.io/proto/otlp v1.9.0 // indirect
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Current quic-go in insecure/go.mod:"
rg -n 'github.com/quic-go/quic-go\s+v' insecure/go.mod

echo
echo "Querying OSV for known vulns on v0.48.2..."
curl -s https://api.osv.dev/v1/query \
  -H 'Content-Type: application/json' \
  -d '{"package":{"ecosystem":"Go","name":"github.com/quic-go/quic-go"},"version":"v0.48.2"}' \
  | jq '.vulns[] | {id: .id, summary: .summary, fixed: .affected[0].ranges[0].events}'

Repository: onflow/flow-go

Length of output: 1113


🏁 Script executed:

fd -n 'insecure' --type f | head -20

Repository: onflow/flow-go

Length of output: 288


🏁 Script executed:

cat -n insecure/go.mod | head -20

Repository: onflow/flow-go

Length of output: 853


🏁 Script executed:

git log --oneline -n 5 -- insecure/go.mod

Repository: onflow/flow-go

Length of output: 78


🏁 Script executed:

find . -name "*.go" -path "*/insecure/*" | head -10

Repository: onflow/flow-go

Length of output: 403


🏁 Script executed:

cat insecure/README.md 2>/dev/null || echo "No README in insecure/"

Repository: onflow/flow-go

Length of output: 80


🏁 Script executed:

rg "insecure/go.mod" . --type md --type txt 2>/dev/null | head -20

Repository: onflow/flow-go

Length of output: 40


🏁 Script executed:

cat -n go.mod | head -30

Repository: onflow/flow-go

Length of output: 1410


🏁 Script executed:

rg "insecure" go.mod | head -5

Repository: onflow/flow-go

Length of output: 40


🏁 Script executed:

grep -r "require.*insecure" . --include="*.go" --include="*.mod" | head -10

Repository: onflow/flow-go

Length of output: 729


🏁 Script executed:

cat -n go.work 2>/dev/null || echo "No go.work file"

Repository: onflow/flow-go

Length of output: 73


🏁 Script executed:

ls -la | grep -E "go\.|go\$"

Repository: onflow/flow-go

Length of output: 175


🏁 Script executed:

rg "github.com/onflow/flow-go/insecure" . --type mod | head -20

Repository: onflow/flow-go

Length of output: 85


🏁 Script executed:

rg "insecure" --type go . -i | grep -i "build\|test\|release" | head -10

Repository: onflow/flow-go

Length of output: 928


🏁 Script executed:

ls -la insecure/cmd/

Repository: onflow/flow-go

Length of output: 555


🏁 Script executed:

cat insecure/go.mod | grep "require"

Repository: onflow/flow-go

Length of output: 77


Fix vulnerable quic-go in test module.

The insecure/go.mod test fixture references github.com/quic-go/quic-go v0.48.2, which has confirmed security vulnerabilities:

Bump to a patched version compatible with go-libp2p. Since this code runs in the test matrix, it should be updated to prevent security tooling from flagging the module.

🧰 Tools
🪛 OSV Scanner (2.3.5)

[HIGH] 315-315: github.com/quic-go/quic-go 0.48.2: Panic occurs when queuing undecryptable packets after handshake completion in github.com/quic-go/quic-go

(GO-2025-4017)


[HIGH] 315-315: github.com/quic-go/quic-go 0.48.2: HTTP/3 QPACK Header Expansion DoS in github.com/quic-go/quic-go

(GO-2025-4233)


[HIGH] 315-315: github.com/quic-go/quic-go 0.48.2: quic-go: Panic occurs when queuing undecryptable packets after handshake completion

(GHSA-47m2-4cr7-mhcw)


[HIGH] 315-315: github.com/quic-go/quic-go 0.48.2: quic-go HTTP/3 QPACK Header Expansion DoS

(GHSA-g754-hx8w-x2g6)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@insecure/go.mod` around lines 309 - 315, The test module references a
vulnerable dependency github.com/quic-go/quic-go at v0.48.2; update the require
line for github.com/quic-go/quic-go to a patched release (at least v0.57.0 to
cover the QPACK DoS and earlier fixes) and then run your Go module update (eg.
go get github.com/quic-go/quic-go@v0.57.0 && go mod tidy) to refresh
go.mod/go.sum and ensure compatibility with go-libp2p and the test matrix, then
run the test suite to verify nothing breaks.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
insecure/go.mod (1)

269-269: ⚠️ Potential issue | 🟠 Major

quic-go v0.48.2 vulnerability remains unresolved.

The vulnerable version is still present in this module; if not blocked by compatibility constraints, it should be upgraded to a patched release.

#!/bin/bash
set -euo pipefail

echo "Current quic-go pin in insecure/go.mod:"
rg -n 'github.com/quic-go/quic-go\s+v' insecure/go.mod

echo
echo "Check libp2p pin that may constrain quic-go:"
rg -n 'github.com/libp2p/go-libp2p\s+v' insecure/go.mod

echo
echo "Find quic-go requirements in all go.mod files (for consistency checks):"
fd -i 'go.mod' | xargs rg -n 'github.com/quic-go/quic-go\s+v'
🧹 Nitpick comments (1)
insecure/go.mod (1)

309-310: Confirm OpenTelemetry exporter version skew is intentional.

The version skew between otlptrace v1.39.0 and otlptracegrpc v1.31.0 (Lines 309–310) is consistent across multiple go.mod files and appears to be controlled by the explicit v1.31.0 requirement in the main go.mod. If this constraint is necessary for your build, no action is required. Otherwise, consider aligning versions to reduce maintenance complexity.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@insecure/go.mod` around lines 309 - 310, The go.mod shows otel exporter
version skew between module go.opentelemetry.io/otel/exporters/otlp/otlptrace
v1.39.0 and go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
v1.31.0; either confirm the v1.31.0 constraint in the main go.mod is intentional
or align the versions by updating the otlptracegrpc requirement to a matching
v1.39.0 (or downgrade otlptrace to v1.31.0) so both
go.opentelemetry.io/otel/exporters/otlp/otlptrace and
.../otlptrace/otlptracegrpc share the same major/minor version to avoid
maintenance and compatibility issues.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@insecure/go.mod`:
- Around line 309-310: The go.mod shows otel exporter version skew between
module go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 and
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0; either
confirm the v1.31.0 constraint in the main go.mod is intentional or align the
versions by updating the otlptracegrpc requirement to a matching v1.39.0 (or
downgrade otlptrace to v1.31.0) so both
go.opentelemetry.io/otel/exporters/otlp/otlptrace and
.../otlptrace/otlptracegrpc share the same major/minor version to avoid
maintenance and compatibility issues.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d47c3053-60f3-4ea4-8f12-5cf6392afad6

📥 Commits

Reviewing files that changed from the base of the PR and between 5bb0e89 and a69b34c.

⛔ Files ignored due to path filters (3)
  • go.sum is excluded by !**/*.sum
  • insecure/go.sum is excluded by !**/*.sum
  • integration/go.sum is excluded by !**/*.sum
📒 Files selected for processing (3)
  • go.mod
  • insecure/go.mod
  • integration/go.mod
✅ Files skipped from review due to trivial changes (1)
  • integration/go.mod
🚧 Files skipped from review as they are similar to previous changes (1)
  • go.mod

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
insecure/go.mod (1)

269-269: ⚠️ Potential issue | 🟠 Major

Vulnerable quic-go v0.48.2 still present (duplicate of prior review).

OSV still flags github.com/quic-go/quic-go v0.48.2 for GHSA-47m2-4cr7-mhcw (GO-2025-4017, panic on undecryptable packets; fixed in v0.49.1/v0.54.1+) and GHSA-g754-hx8w-x2g6 (GO-2025-4233, HTTP/3 QPACK expansion DoS; fixed in v0.57.0). Since insecure uses replace github.com/onflow/flow-go => ../, this indirect pin is driven by the root go.mod; bumping there (e.g., go get github.com/quic-go/quic-go@v0.57.0 && go mod tidy in root + insecure + integration) should propagate.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@insecure/go.mod` at line 269, The go.mod currently pins the indirect
dependency github.com/quic-go/quic-go at v0.48.2 which is vulnerable; update it
to at least v0.57.0 by running a module upgrade in the workspace root (e.g., run
go get github.com/quic-go/quic-go@v0.57.0 && go mod tidy) and then run go mod
tidy in the insecure and integration modules so the indirect pin is propagated
(note the replace github.com/onflow/flow-go => ../ causes the root to drive this
indirect). Ensure the final go.mod entries reflect github.com/quic-go/quic-go
v0.57.0 or newer and commit the updated go.mod/go.sum files.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@insecure/go.mod`:
- Line 269: The go.mod currently pins the indirect dependency
github.com/quic-go/quic-go at v0.48.2 which is vulnerable; update it to at least
v0.57.0 by running a module upgrade in the workspace root (e.g., run go get
github.com/quic-go/quic-go@v0.57.0 && go mod tidy) and then run go mod tidy in
the insecure and integration modules so the indirect pin is propagated (note the
replace github.com/onflow/flow-go => ../ causes the root to drive this
indirect). Ensure the final go.mod entries reflect github.com/quic-go/quic-go
v0.57.0 or newer and commit the updated go.mod/go.sum files.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a8626e73-8391-4a17-817e-33c212e6f987

📥 Commits

Reviewing files that changed from the base of the PR and between a69b34c and 842c8fd.

⛔ Files ignored due to path filters (3)
  • go.sum is excluded by !**/*.sum
  • insecure/go.sum is excluded by !**/*.sum
  • integration/go.sum is excluded by !**/*.sum
📒 Files selected for processing (5)
  • engine/execution/state/bootstrap/bootstrap_test.go
  • go.mod
  • insecure/go.mod
  • integration/go.mod
  • utils/unittest/execution_state.go
✅ Files skipped from review due to trivial changes (2)
  • integration/go.mod
  • go.mod
🚧 Files skipped from review as they are similar to previous changes (1)
  • engine/execution/state/bootstrap/bootstrap_test.go

@janezpodhostnik janezpodhostnik added this pull request to the merge queue Apr 17, 2026
Merged via the queue into master with commit 1f86036 Apr 17, 2026
61 checks passed
@janezpodhostnik janezpodhostnik deleted the josh/update-core-contracts-1.9.4 branch April 17, 2026 14:36
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.

6 participants