-
Notifications
You must be signed in to change notification settings - Fork 622
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
Conversation
cd40791
to
9c34503
Compare
9c34503
to
3651a5e
Compare
Codecov ReportAttention: Patch coverage is
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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
3651a5e
to
46a410a
Compare
There was a problem hiding this 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 :)
} | ||
|
||
#[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] | ||
pub struct SignedChunkStateWitness { |
There was a problem hiding this comment.
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
?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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) { |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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_id
field 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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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.
3b29f73
to
fa24d81
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm 👍
metrics::CHUNK_STATE_WITNESS_TOTAL_SIZE | ||
.with_label_values(&[&chunk_header.shard_id().to_string()]) | ||
.observe(signed_witness.witness_bytes.size_bytes() as f64); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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( |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good point, done: 815be9d
self.handle_orphan_state_witness( | ||
witness, | ||
signed_witness.witness_bytes.size_bytes(), | ||
)?; |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
// 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), | ||
), | ||
)); |
There was a problem hiding this comment.
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:
pub author: PeerId, |
There was a problem hiding this comment.
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) { |
There was a problem hiding this comment.
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_id
field 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.
fa24d81
to
815be9d
Compare
<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 'main' 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 '' or '/' (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 `ErrorResponse` 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=github&utm_medium=referral&page=upgrade-pr) 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?utm_source=github&utm_medium=referral&page=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=react-router&utm_source=github&utm_medium=referral&page=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]>
<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 'main' 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 '' or '/' (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 `ErrorResponse` 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=github&utm_medium=referral&page=upgrade-pr) 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/ecp88/project/98480bdc-d80b-4fd1-89d7-c4c56a706763/settings/integration?utm_source=github&utm_medium=referral&page=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=react-router-dom&utm_source=github&utm_medium=referral&page=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]>
This PR is a preparation for introducing state witness compression as part of #10780.
It addresses the following issues:
ChunkStateWitness
is renamed toSignedChunkStateWitness
and now it holds raw bytes ofChunkStateWitnessInner
(now renamed to justChunkStateWitness
).handle_orphan_state_witness
and then instart_validating_chunk
, it would be nice to avoid that. This is addressed by introducing redundant fields as part ofChunkStateWitness
:chunk_producer
account id andepoch_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 ofshard_id
), so duplicated logic is moved out of orphan witness handling topartially_validate_state_witness_in_epoch
.chunk_producer
field ofChunkStateWitness
.