-
Notifications
You must be signed in to change notification settings - Fork 222
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
BlockValidator can sometimes drop responders without responding #4619
Comments
Hi Vibrant Casper's Dev community ! 💯 _In the Cardano blockchain, the BlockValidator is designed to handle such scenarios to prevent the issue you described. Here's a simplified explanation of how it might be handled:
In the specific case of Cardano, the Ouroboros protocol, which is the consensus mechanism used by Cardano, is designed to handle such scenarios. However, the exact details of how this is done would depend on the specific implementation of the BlockValidator and the rest of the Cardano node software. For the most accurate information, it would be best to refer to the official Cardano documentation or the source code of the Cardano node software._ May it help/inspires @SaiProServ . If not i send all my luck and best wishes to hard working dev and Casper's community. Best, Simon |
4649: casper_updater compatibility with Condor and version bumps r=sacherjj a=sacherjj Removed chainspec.toml updates as we do not use for activation point. Added binary_port Removed json_rpc Corrected for reorganization Bumping versions for release 4650: Fix a bug in the BlockValidator r=fizyk20 a=fizyk20 Closes #4619 This is a simple, slightly hacky approach to solving the issue - but a less hacky one involving adding more variants to `BlockValidationState` and storing the state immediately after receiving a request turned out to become quite complex, which is why I chose this way eventually. Co-authored-by: Rafał Chabowski <rafal@casperlabs.io> Co-authored-by: Joe Sacher <321623+sacherjj@users.noreply.github.com> Co-authored-by: casperlabs-bors-ng[bot] <82463608+casperlabs-bors-ng[bot]@users.noreply.github.com> Co-authored-by: Ed Hastings <ed@casperlabs.io> Co-authored-by: Alexandru Sardan <alexandru@casperlabs.io> Co-authored-by: Bartłomiej Kamiński <bart@casperlabs.io>
4645: Binary port balance query r=jacek-casper a=jacek-casper This PR adds a new request to the binary port that allows querying for balance directly. - I've added some additional types to `binary_port`, they're very similar to the existing `storage` types, with some slight adjustments to adapt them to the binary port: - added `BalanceResponse` for the new response payload type - added `PurseIdentifier` for specifying what balance to query, it's basically `BalanceIdentifier`, but without PenalizedAccount and Internal variants (these two look like they're for internal use only) - added `GlobalStateRequest::BalanceByStateRoot`, which has a state identifier, a purse identifier and a timestamp for holds lookup, it uses a `Timestamp` unlike the `storage` types which use `HoldsEpoch`, because `HoldsEpoch` requires a chainspec value to construct (balance hold interval) - added `GlobalStateRequest::BalanceByBlock`, which has a block identifier and a purse identifier, the holds timestamp is derived from the block Also: - boxed the `GetRequest::State` variant because it started triggering a lint - added some missing handling for `WasmV1Result` Related sidecar changes: casper-network/casper-sidecar#274 4650: Fix a bug in the BlockValidator r=fizyk20 a=fizyk20 Closes #4619 This is a simple, slightly hacky approach to solving the issue - but a less hacky one involving adding more variants to `BlockValidationState` and storing the state immediately after receiving a request turned out to become quite complex, which is why I chose this way eventually. 4653: Use custom Serialize/Deserialize for EntityAddr r=jacek-casper a=jacek-casper The existing Serialize/Deserialize impls encode the address as a JSON array of bytes instead of the formatted string format. This PR fixes that. There was also an issue with the schema, which I addressed here as well. Co-authored-by: Jacek Malec <145967538+jacek-casper@users.noreply.github.com> Co-authored-by: Bartłomiej Kamiński <bart@casperlabs.io>
4645: Binary port balance query r=jacek-casper a=jacek-casper This PR adds a new request to the binary port that allows querying for balance directly. - I've added some additional types to `binary_port`, they're very similar to the existing `storage` types, with some slight adjustments to adapt them to the binary port: - added `BalanceResponse` for the new response payload type - added `PurseIdentifier` for specifying what balance to query, it's basically `BalanceIdentifier`, but without PenalizedAccount and Internal variants (these two look like they're for internal use only) - added `GlobalStateRequest::BalanceByStateRoot`, which has a state identifier, a purse identifier and a timestamp for holds lookup, it uses a `Timestamp` unlike the `storage` types which use `HoldsEpoch`, because `HoldsEpoch` requires a chainspec value to construct (balance hold interval) - added `GlobalStateRequest::BalanceByBlock`, which has a block identifier and a purse identifier, the holds timestamp is derived from the block Also: - boxed the `GetRequest::State` variant because it started triggering a lint - added some missing handling for `WasmV1Result` Related sidecar changes: casper-network/casper-sidecar#274 4650: Fix a bug in the BlockValidator r=fizyk20 a=fizyk20 Closes #4619 This is a simple, slightly hacky approach to solving the issue - but a less hacky one involving adding more variants to `BlockValidationState` and storing the state immediately after receiving a request turned out to become quite complex, which is why I chose this way eventually. Co-authored-by: Jacek Malec <145967538+jacek-casper@users.noreply.github.com> Co-authored-by: Bartłomiej Kamiński <bart@casperlabs.io>
4650: Fix a bug in the BlockValidator r=fizyk20 a=fizyk20 Closes #4619 This is a simple, slightly hacky approach to solving the issue - but a less hacky one involving adding more variants to `BlockValidationState` and storing the state immediately after receiving a request turned out to become quite complex, which is why I chose this way eventually. Co-authored-by: Bartłomiej Kamiński <bart@casperlabs.io>
4650: Fix a bug in the BlockValidator r=fizyk20 a=fizyk20 Closes #4619 This is a simple, slightly hacky approach to solving the issue - but a less hacky one involving adding more variants to `BlockValidationState` and storing the state immediately after receiving a request turned out to become quite complex, which is why I chose this way eventually. Co-authored-by: Bartłomiej Kamiński <bart@casperlabs.io>
If the BlockValidator receives two requests for validating the same block in quick succession (a valid scenario if we learn of new holders of the same proposal), it is possible that the second one will arrive before the state for the first one is inserted into validation_states, in which case both will be processed as new requests and the responder and holder for the first one will end up being dropped.
The text was updated successfully, but these errors were encountered: