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

refactor: state witness struct #10934

Merged
merged 9 commits into from
Apr 8, 2024
Merged

Conversation

pugachAG
Copy link
Contributor

@pugachAG pugachAG commented Apr 4, 2024

This PR is a preparation for introducing state witness compression as part of #10780.

It addresses the following issues:

  • State witness is implicitly deserialised when it is received via network and then serialised again in order to verify signature. While this is not a big issue now, we can't afford doing that once compression is introduced. In this PR ChunkStateWitness is renamed to SignedChunkStateWitness and now it holds raw bytes of ChunkStateWitnessInner (now renamed to just ChunkStateWitness).
  • Duplicate validation in orphan witness handling and normal validation process. Currently we perform bunch of validations multiple times: first in handle_orphan_state_witness and then in start_validating_chunk, it would be nice to avoid that. This is addressed by introducing redundant fields as part of ChunkStateWitness: chunk_producer account id and epoch_id. This way we don't need to have previous block available in order to verify signature and perform a bunch of sanity checks (such as validity of shard_id), so duplicated logic is moved out of orphan witness handling to partially_validate_state_witness_in_epoch.
  • Currently we don't send state witness ack in case of orphan state witness because we cannot determine chunk producer account id. This is fixed by using newly introduced chunk_producer field of ChunkStateWitness.

@pugachAG pugachAG force-pushed the refactor-state-witness-struct branch 3 times, most recently from cd40791 to 9c34503 Compare April 4, 2024 11:56
@jancionear jancionear self-requested a review April 4, 2024 11:58
@pugachAG pugachAG force-pushed the refactor-state-witness-struct branch from 9c34503 to 3651a5e Compare April 4, 2024 12:28
Copy link

codecov bot commented Apr 4, 2024

Codecov Report

Attention: Patch coverage is 80.83832% with 32 lines in your changes are missing coverage. Please review.

Project coverage is 71.36%. Comparing base (efd0b83) to head (d9c170c).
Report is 24 commits behind head on master.

Files Patch % Lines
...nt/src/stateless_validation/chunk_validator/mod.rs 75.90% 11 Missing and 9 partials ⚠️
...client/src/stateless_validation/shadow_validate.rs 0.00% 4 Missing ⚠️
chain/chain/src/test_utils/kv_runtime.rs 0.00% 2 Missing ⚠️
core/primitives/src/validator_signer.rs 50.00% 2 Missing ⚠️
...idation/chunk_validator/orphan_witness_handling.rs 80.00% 1 Missing ⚠️
..._validation/chunk_validator/orphan_witness_pool.rs 85.71% 1 Missing ⚠️
...src/stateless_validation/state_witness_producer.rs 95.65% 0 Missing and 1 partial ⚠️
chain/epoch-manager/src/adapter.rs 80.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #10934      +/-   ##
==========================================
- Coverage   71.51%   71.36%   -0.15%     
==========================================
  Files         758      760       +2     
  Lines      151663   152759    +1096     
  Branches   151663   152759    +1096     
==========================================
+ Hits       108467   109023     +556     
- Misses      38710    39209     +499     
- Partials     4486     4527      +41     
Flag Coverage Δ
backward-compatibility 0.24% <0.00%> (-0.01%) ⬇️
db-migration 0.24% <0.00%> (-0.01%) ⬇️
genesis-check 1.43% <0.00%> (-0.01%) ⬇️
integration-tests 37.00% <78.44%> (-0.11%) ⬇️
linux 69.84% <10.77%> (-0.14%) ⬇️
linux-nightly 70.83% <80.83%> (-0.18%) ⬇️
macos 54.41% <10.77%> (+0.01%) ⬆️
pytests 1.65% <0.00%> (-0.01%) ⬇️
sanity-checks 1.44% <0.00%> (-0.01%) ⬇️
unittests 67.02% <35.92%> (-0.14%) ⬇️
upgradability 0.29% <0.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@pugachAG pugachAG force-pushed the refactor-state-witness-struct branch from 3651a5e to 46a410a Compare April 4, 2024 12:57
@pugachAG pugachAG marked this pull request as ready for review April 4, 2024 12:57
@pugachAG pugachAG requested a review from a team as a code owner April 4, 2024 12:57
Copy link
Contributor

@shreyan-gupta shreyan-gupta left a comment

Choose a reason for hiding this comment

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

Like the consolidation of validation logic between orphan pool and chunk validator :)

core/primitives/src/stateless_validation.rs Outdated Show resolved Hide resolved
chain/epoch-manager/src/adapter.rs Show resolved Hide resolved
}

#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)]
pub struct SignedChunkStateWitness {
Copy link
Contributor

Choose a reason for hiding this comment

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

Could we create a SignedChunkStateWitness::new(witness: &ChunkStateWitness, signer: &dyn ValidatorSigner) -> Self?

Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe add a fn witness_size() here as well

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added new: 680d7ef
regarding fn witness_size(): we can use signed_witness.witness_bytes.size_bytes(), it is not used in many places, so let's keep it like this for now

witness_height
)));
}
if !possible_epochs.contains(&witness.epoch_id) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Since we are doing partially_validate_state_witness_in_epoch, I think we can completely get rid of this check here. We can even delete the possible_epochs_of_height_around_tip function.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I thought about that as well, but there is one nasty scenario where this could backfire: state witness has random non-existing prev_block_hash and some old epoch where the chunk producer happened to be a chunk producer for that height and shard id. While this is highly unlikely, I don't think we can just disregard this.
Later I'm planning adding more epoch and height checks to partially_validate_state_witness_in_epoch and then we can remove it, but let's keep it for now, this PR is big enough as it is right now.

Copy link
Contributor

Choose a reason for hiding this comment

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

It's really nice that we don't have to validate in multiple epochs now, the epoch_idfield is really useful 👍.
But I feel that we'll have to keep possible_epochs_of_height_around_tip around, otherwise a malicious chunk producer might be able to spam the orphan witness pool.

Copy link
Contributor

Choose a reason for hiding this comment

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

But don't we have ALLOWED_ORPHAN_WITNESS_DISTANCE_FROM_HEAD.contains(&head_distance) to handle such scenarios?

Copy link
Contributor

@shreyan-gupta shreyan-gupta Apr 5, 2024

Choose a reason for hiding this comment

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

  • we don't have chunk to verify chunk header
  • chunk_producer can not be faked as we are verifying signature
  • we verify if chunk_producer is the correct chunk producer for the epoch and height (here it shouldn't be possible to have some old/bad epoch_id for the given height?)
  • we verify that the height parameter isn't too far away from head height

But I guess it's fine to leave it here for now and think about it later

Copy link
Contributor

Choose a reason for hiding this comment

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

Also, we can consider moving ALLOWED_ORPHAN_WITNESS_DISTANCE_FROM_HEAD.contains(&head_distance) to partially_validate_state_witness?

Copy link
Contributor

Choose a reason for hiding this comment

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

But don't we have ALLOWED_ORPHAN_WITNESS_DISTANCE_FROM_HEAD.contains(&head_distance) to handle such scenarios?

We do, but I think we also need to check that the epoch is within some distance from the tip.
Let's say we have a chunk producer who has been a chunk producer for the past 300 epochs and the current height is 1000.
This chunk producer could try producing a malicious chunk state witness with height 1003 and epochs 1, 2, 3, 4, ...
For some of those epochs he would be the chosen chunk producer at that height. For each of such epoch he can produce a ChunkStateWitness which willll pass the signature and distance from tip check, and enter the orphan witness pool. This way this chunk producer could theoretically spam the orphan pool, which only has capacity for 25 witnesses.
I'm not sure how much of a real threat it is, but it's safer to check that it's one of the epochs around the tip.

Copy link
Contributor

Choose a reason for hiding this comment

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

As for why it's good to use possible_epochs_of_height_around_tip, I wrote a longer comment here: #10613 (comment)

Copy link
Contributor

@shreyan-gupta shreyan-gupta Apr 5, 2024

Choose a reason for hiding this comment

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

Will go through the comments and would have to think harder. It's still not super clear to me why we need this but will spend some time :)

Thanks @jancionear for the context! Meanwhile this definitely doesn't need to be a blocker.

@pugachAG pugachAG force-pushed the refactor-state-witness-struct branch from 3b29f73 to fa24d81 Compare April 5, 2024 11:59
Copy link
Contributor

@jancionear jancionear left a comment

Choose a reason for hiding this comment

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

lgtm 👍

Comment on lines +57 to +59
metrics::CHUNK_STATE_WITNESS_TOTAL_SIZE
.with_label_values(&[&chunk_header.shard_id().to_string()])
.observe(signed_witness.witness_bytes.size_bytes() as f64);
Copy link
Contributor

Choose a reason for hiding this comment

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

It'd be nice to have separate metrics for encoded and decoded witness sizes. But that can be added later along with the compression.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yep, definitely, will do that as part of adding compression

/// Performs state witness decoding and partial validation without requiring the previous block.
/// Here we rely on epoch_id provided as part of the state witness. Later we verify that this
/// epoch_id actually corresponds to the chunk's previous block.
fn partially_validate_state_witness_in_epoch(
Copy link
Contributor

Choose a reason for hiding this comment

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

I guess the _in_epoch part of the name could be removed. The previous function was called partially_validate_orphan_witness_in_epoch because it took epoch_id as an argument.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

good point, done: 815be9d

Comment on lines +642 to +645
self.handle_orphan_state_witness(
witness,
signed_witness.witness_bytes.size_bytes(),
)?;
Copy link
Contributor

Choose a reason for hiding this comment

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

This should be the size of a decoded ChunkStateWitness. For now that's the same size as encoded, so it's ok, but later when compression is introduced it'll have to be changed.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ah, good point, I will keep that in mind when adding compression

Comment on lines -667 to 658
// First find the AccountId for the chunk producer and then send the ack to that account.
let chunk_header = &witness.inner.chunk_header;
let prev_block_hash = chunk_header.prev_block_hash();
let epoch_id = self.epoch_manager.get_epoch_id_from_prev_block(prev_block_hash)?;
let chunk_producer = self.epoch_manager.get_chunk_producer(
&epoch_id,
chunk_header.height_created(),
chunk_header.shard_id(),
)?;

fn send_state_witness_ack(&self, witness: &ChunkStateWitness) {
self.network_adapter.send(PeerManagerMessageRequest::NetworkRequests(
NetworkRequests::ChunkStateWitnessAck(
chunk_producer,
ChunkStateWitnessAck::new(&witness),
witness.chunk_producer.clone(),
ChunkStateWitnessAck::new(witness),
),
));
Copy link
Contributor

Choose a reason for hiding this comment

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

The chunk_producer field in ChunkStateWitness feels a bit redundant. AFAIU the only use of this field is to send an Ack back to the chunk producer, but we could take this information from the message itself. Each RoutedMessage contains PeerId of the original message author:

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, I agree that it is redundant, but it makes code a bit simpler since it is directly available as part of ChunkStateWitness. I've decided to add it since it doesn't affect state witness size much and also we already have redundant fields such as applied_receipts_hash there.

witness_height
)));
}
if !possible_epochs.contains(&witness.epoch_id) {
Copy link
Contributor

Choose a reason for hiding this comment

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

It's really nice that we don't have to validate in multiple epochs now, the epoch_idfield is really useful 👍.
But I feel that we'll have to keep possible_epochs_of_height_around_tip around, otherwise a malicious chunk producer might be able to spam the orphan witness pool.

@pugachAG pugachAG force-pushed the refactor-state-witness-struct branch from fa24d81 to 815be9d Compare April 5, 2024 14:13
@pugachAG pugachAG enabled auto-merge April 8, 2024 14:06
@pugachAG pugachAG added this pull request to the merge queue Apr 8, 2024
Merged via the queue into master with commit 6c71411 Apr 8, 2024
28 of 29 checks passed
@pugachAG pugachAG deleted the refactor-state-witness-struct branch April 8, 2024 14:54
mooori pushed a commit to mooori/nearcore that referenced this pull request Apr 16, 2024
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade react-router
from 6.16.0 to 6.17.0.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
<hr/>

- The recommended version is **4 versions** ahead of your current
version.
- The recommended version was released **22 days ago**, on 2023-10-16.


<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>react-router</b></summary>
    <ul>
      <li>
<b>6.17.0</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.17.0">2023-10-16</a></br><p>[email protected]</p>
      </li>
      <li>
<b>6.17.0-pre.2</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.17.0-pre.2">2023-10-13</a></br><p>[email protected]</p>
      </li>
      <li>
<b>6.17.0-pre.1</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.17.0-pre.1">2023-10-12</a></br><p>[email protected]</p>
      </li>
      <li>
        <b>6.17.0-pre.0</b> - 2023-10-11
      </li>
      <li>
        <b>6.16.0</b> - 2023-09-13
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases">react-router
GitHub release notes</a>
  </details>
</details>


<details>
  <summary><b>Commit messages</b></summary>
  </br>
  <details>
    <summary>Package name: <b>react-router</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/edd9ad4957321cfb260cee21ad98aab2becfe250">edd9ad4</a>
chore: Update version for release (near#10935)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c1d0e50fc9ef5706c0d6ce9d0866ec1f4dadaab7">c1d0e50</a>
Exit prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1c64bc1d4fe9c212dcd073b12ea51d2e10c45ea7">1c64bc1</a>
Update readme for view transitions example</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1604c74f3abb0650910efb264908a3803fcc2e5e">1604c74</a>
Split changeset for remix router and react-router-dom</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/ae843545c1a3a38c761b940ed5dc4fab15bb2d3a">ae84354</a>
Update view-transitions example to use prerelease</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/6cfbd0e571018bf1d8722c09d70e394d2602f5be">6cfbd0e</a>
chore: Update version for release (pre) (near#10934)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c48341d6b75f4fd5b0ec60ed32c3c45ebb1e532f">c48341d</a>
Lift startViewTransition implementation to react-router-dom
(near#10928)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b916689b4a211827cc324cf05994c334e25d380b">b916689</a>
chore: Update version for release (pre) (near#10931)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/cbc9d7222cc4ca1e74f0b081472187bbd6a95a42">cbc9d72</a>
Fix lint issues (near#10930)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1ad822c5bf8b32143aeef8511ca02577b487aafc">1ad822c</a>
Update docs for startViewTransition (near#10927)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/e93e9088360e3fc1a4183efc5a39c8e680903554">e93e908</a>
Docs updates</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b09c5d09198b1ee4a8bfbf8a2a8910fc8eed7d2c">b09c5d0</a>
chore: Update version for release (pre) (near#10924)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/d3203fb1b7bcfd73fa21e93b9b190defb769e33c">d3203fb</a>
Enter prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/3adb639109ea5e90800e0b155035a610f0a09b4b">3adb639</a>
Merge branch &#x27;main&#x27; into release-next</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/a5451d5d3967a356e6d5af3cbefb858d2702044e">a5451d5</a>
Update docs</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/feebfc0bf10614ba44ff43e2b9c69e22ad07a7a1">feebfc0</a>
Add startViewTransition support (near#10916)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/7ce38dc49ee997706902ac2d033ba1fd683cfed0">7ce38dc</a>
[Docs]: Use consistent feature warnings (near#10908)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f77743aebfca26faabdd04e9ed1dd31721459877">f77743a</a>
chore: format</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/8af53e7bfcf004916af4ea37e9d24e295d6ac107">8af53e7</a>
Root router have a path different to &#x27;&#x27; or &#x27;/&#x27;
(near#10852)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/ebe2491f7cd966d9967edb8acaeed86f9e1ab5b9">ebe2491</a>
Fix RouterProvider future prop (near#10900)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b98e82dbd774eadf3972f0b58f2542a8b5599d97">b98e82d</a>
Specify &#x60;ErrorResponse&#x60; as interface to provide obvious
contract (near#10876)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/da57748644da6400e2d051b2aa004df47beda1cf">da57748</a>
fix(docs): add backticks to element names (near#10874)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f8194fdb8e371b715d29d30a82e04a82a7648e9b">f8194fd</a>
Handle case when session storage is blocked (near#10848)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f9b3dbd9cbf513366c456b33d95227f42f36da63">f9b3dbd</a>
chore: sort contributors list</li>
    </ul>

<a
href="https://snyk.io/redirect/github/remix-run/react-router/compare/13fb25a51184f66192e023e2e18be5ff00f37827...edd9ad4957321cfb260cee21ad98aab2becfe250">Compare</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiIwMTQwNDNhYS1kNjYyLTQwMjMtOGQ5Yi02YzcyOTA0OTZjYmMiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjAxNDA0M2FhLWQ2NjItNDAyMy04ZDliLTZjNzI5MDQ5NmNiYyJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?pkg&#x3D;react-router&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"014043aa-d662-4023-8d9b-6c7290496cbc","prPublicId":"014043aa-d662-4023-8d9b-6c7290496cbc","dependencies":[{"name":"react-router","from":"6.16.0","to":"6.17.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"98480bdc-d80b-4fd1-89d7-c4c56a706763","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":4,"publishedDate":"2023-10-16T15:50:05.351Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

Co-authored-by: snyk-bot <[email protected]>
mooori pushed a commit to mooori/nearcore that referenced this pull request Apr 16, 2024
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade
react-router-dom from 6.16.0 to 6.17.0.</h3>

:information_source: Keep your dependencies up-to-date. This makes it
easier to fix existing vulnerabilities and to more quickly identify and
fix newly disclosed vulnerabilities when they affect your project.
<hr/>

- The recommended version is **4 versions** ahead of your current
version.
- The recommended version was released **22 days ago**, on 2023-10-16.


<details>
<summary><b>Release notes</b></summary>
<br/>
  <details>
    <summary>Package name: <b>react-router-dom</b></summary>
    <ul>
      <li>
<b>6.17.0</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.17.0">2023-10-16</a></br><p>[email protected]</p>
      </li>
      <li>
<b>6.17.0-pre.2</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.17.0-pre.2">2023-10-13</a></br><p>[email protected]</p>
      </li>
      <li>
<b>6.17.0-pre.1</b> - <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases/tag/react-router-native%406.17.0-pre.1">2023-10-12</a></br><p>[email protected]</p>
      </li>
      <li>
        <b>6.17.0-pre.0</b> - 2023-10-11
      </li>
      <li>
        <b>6.16.0</b> - 2023-09-13
      </li>
    </ul>
from <a
href="https://snyk.io/redirect/github/remix-run/react-router/releases">react-router-dom
GitHub release notes</a>
  </details>
</details>


<details>
  <summary><b>Commit messages</b></summary>
  </br>
  <details>
    <summary>Package name: <b>react-router-dom</b></summary>
    <ul>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/edd9ad4957321cfb260cee21ad98aab2becfe250">edd9ad4</a>
chore: Update version for release (near#10935)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c1d0e50fc9ef5706c0d6ce9d0866ec1f4dadaab7">c1d0e50</a>
Exit prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1c64bc1d4fe9c212dcd073b12ea51d2e10c45ea7">1c64bc1</a>
Update readme for view transitions example</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1604c74f3abb0650910efb264908a3803fcc2e5e">1604c74</a>
Split changeset for remix router and react-router-dom</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/ae843545c1a3a38c761b940ed5dc4fab15bb2d3a">ae84354</a>
Update view-transitions example to use prerelease</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/6cfbd0e571018bf1d8722c09d70e394d2602f5be">6cfbd0e</a>
chore: Update version for release (pre) (near#10934)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/c48341d6b75f4fd5b0ec60ed32c3c45ebb1e532f">c48341d</a>
Lift startViewTransition implementation to react-router-dom
(near#10928)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b916689b4a211827cc324cf05994c334e25d380b">b916689</a>
chore: Update version for release (pre) (near#10931)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/cbc9d7222cc4ca1e74f0b081472187bbd6a95a42">cbc9d72</a>
Fix lint issues (near#10930)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/1ad822c5bf8b32143aeef8511ca02577b487aafc">1ad822c</a>
Update docs for startViewTransition (near#10927)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/e93e9088360e3fc1a4183efc5a39c8e680903554">e93e908</a>
Docs updates</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b09c5d09198b1ee4a8bfbf8a2a8910fc8eed7d2c">b09c5d0</a>
chore: Update version for release (pre) (near#10924)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/d3203fb1b7bcfd73fa21e93b9b190defb769e33c">d3203fb</a>
Enter prerelease mode</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/3adb639109ea5e90800e0b155035a610f0a09b4b">3adb639</a>
Merge branch &#x27;main&#x27; into release-next</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/a5451d5d3967a356e6d5af3cbefb858d2702044e">a5451d5</a>
Update docs</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/feebfc0bf10614ba44ff43e2b9c69e22ad07a7a1">feebfc0</a>
Add startViewTransition support (near#10916)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/7ce38dc49ee997706902ac2d033ba1fd683cfed0">7ce38dc</a>
[Docs]: Use consistent feature warnings (near#10908)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f77743aebfca26faabdd04e9ed1dd31721459877">f77743a</a>
chore: format</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/8af53e7bfcf004916af4ea37e9d24e295d6ac107">8af53e7</a>
Root router have a path different to &#x27;&#x27; or &#x27;/&#x27;
(near#10852)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/ebe2491f7cd966d9967edb8acaeed86f9e1ab5b9">ebe2491</a>
Fix RouterProvider future prop (near#10900)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/b98e82dbd774eadf3972f0b58f2542a8b5599d97">b98e82d</a>
Specify &#x60;ErrorResponse&#x60; as interface to provide obvious
contract (near#10876)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/da57748644da6400e2d051b2aa004df47beda1cf">da57748</a>
fix(docs): add backticks to element names (near#10874)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f8194fdb8e371b715d29d30a82e04a82a7648e9b">f8194fd</a>
Handle case when session storage is blocked (near#10848)</li>
<li><a
href="https://snyk.io/redirect/github/remix-run/react-router/commit/f9b3dbd9cbf513366c456b33d95227f42f36da63">f9b3dbd</a>
chore: sort contributors list</li>
    </ul>

<a
href="https://snyk.io/redirect/github/remix-run/react-router/compare/13fb25a51184f66192e023e2e18be5ff00f37827...edd9ad4957321cfb260cee21ad98aab2becfe250">Compare</a>
  </details>
</details>
<hr/>

**Note:** *You are seeing this because you or someone else with access
to this repository has authorized Snyk to open upgrade PRs.*

For more information: <img
src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJlNTIxZTJlYi05MGNmLTRlZjEtYjljMC1iYTFlZTU2NjFjNzEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImU1MjFlMmViLTkwY2YtNGVmMS1iOWMwLWJhMWVlNTY2MWM3MSJ9fQ=="
width="0" height="0"/>

🧐 [View latest project
report](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)

🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?pkg&#x3D;react-router-dom&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)

<!---
(snyk:metadata:{"prId":"e521e2eb-90cf-4ef1-b9c0-ba1ee5661c71","prPublicId":"e521e2eb-90cf-4ef1-b9c0-ba1ee5661c71","dependencies":[{"name":"react-router-dom","from":"6.16.0","to":"6.17.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"98480bdc-d80b-4fd1-89d7-c4c56a706763","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":4,"publishedDate":"2023-10-16T15:50:05.302Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->

Co-authored-by: snyk-bot <[email protected]>
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.

4 participants