Expose ENR custody columns#6271
Conversation
| pub fn custody_columns(&self, spec: &ChainSpec) -> Vec<ColumnIndex> { | ||
| let enr = self.local_enr(); | ||
| let node_id = enr.node_id().raw().into(); | ||
| let custody_subnet_count = enr.custody_subnet_count::<E>(spec); |
There was a problem hiding this comment.
Just a small suggestion wrt Enr::custody_subnet_count, I think we should make that simply return an error on invalid/non existing enr instead of returning the default value. Basically change the function signature to
fn custody_subnet_count<E: EthSpec>(&self, spec: &ChainSpec) -> Result<u64, &'static str>;Swallowing the error at the accessor function and returning the default might lead to confusing errors.
There was a problem hiding this comment.
Good that you raised this again - we actually thought about this when this was initially implemented, and the original reason to swallow it is wanting to have the fallback logic in one place, and don't want to do any error handling due to invalid input from peers, but maybe there's better approach and may even be useful to log an error?
There was a problem hiding this comment.
We could just do the fallback logic at the calling site. The accessor function on that trait doesn't seem like the right place to do fallback logic.
Consider a situation where a client has a bug in their encoding for the enr custody subnet field, in that case, we would always swallow the error which isn't what we want to do.
|
The main |
Issue Addressed
Part of
dastounstable#6072Proposed Changes
custody_columnsmethod toNetworkGlobals