Use Ord for ForkName in pubsub

This commit is contained in:
dapplion
2024-06-18 19:46:12 +02:00
parent 7521f97ca5
commit 4d3edfeaed

View File

@@ -158,18 +158,19 @@ impl<E: EthSpec> PubsubMessage<E> {
GossipKind::BeaconAggregateAndProof => { GossipKind::BeaconAggregateAndProof => {
let signed_aggregate_and_proof = let signed_aggregate_and_proof =
match fork_context.from_context_bytes(gossip_topic.fork_digest) { match fork_context.from_context_bytes(gossip_topic.fork_digest) {
Some(ForkName::Base) Some(&fork_name) => {
| Some(ForkName::Altair) if fork_name >= ForkName::Electra {
| Some(ForkName::Bellatrix) SignedAggregateAndProof::Electra(
| Some(ForkName::Capella) SignedAggregateAndProofElectra::from_ssz_bytes(data)
| Some(ForkName::Deneb) => SignedAggregateAndProof::Base( .map_err(|e| format!("{:?}", e))?,
SignedAggregateAndProofBase::from_ssz_bytes(data) )
.map_err(|e| format!("{:?}", e))?, } else {
), SignedAggregateAndProof::Base(
Some(ForkName::Electra) => SignedAggregateAndProof::Electra( SignedAggregateAndProofBase::from_ssz_bytes(data)
SignedAggregateAndProofElectra::from_ssz_bytes(data) .map_err(|e| format!("{:?}", e))?,
.map_err(|e| format!("{:?}", e))?, )
), }
}
None => { None => {
return Err(format!( return Err(format!(
"Unknown gossipsub fork digest: {:?}", "Unknown gossipsub fork digest: {:?}",
@@ -184,18 +185,19 @@ impl<E: EthSpec> PubsubMessage<E> {
GossipKind::Attestation(subnet_id) => { GossipKind::Attestation(subnet_id) => {
let attestation = let attestation =
match fork_context.from_context_bytes(gossip_topic.fork_digest) { match fork_context.from_context_bytes(gossip_topic.fork_digest) {
Some(ForkName::Base) Some(&fork_name) => {
| Some(ForkName::Altair) if fork_name >= ForkName::Electra {
| Some(ForkName::Bellatrix) Attestation::Electra(
| Some(ForkName::Capella) AttestationElectra::from_ssz_bytes(data)
| Some(ForkName::Deneb) => Attestation::Base( .map_err(|e| format!("{:?}", e))?,
AttestationBase::from_ssz_bytes(data) )
.map_err(|e| format!("{:?}", e))?, } else {
), Attestation::Base(
Some(ForkName::Electra) => Attestation::Electra( AttestationBase::from_ssz_bytes(data)
AttestationElectra::from_ssz_bytes(data) .map_err(|e| format!("{:?}", e))?,
.map_err(|e| format!("{:?}", e))?, )
), }
}
None => { None => {
return Err(format!( return Err(format!(
"Unknown gossipsub fork digest: {:?}", "Unknown gossipsub fork digest: {:?}",
@@ -281,18 +283,19 @@ impl<E: EthSpec> PubsubMessage<E> {
GossipKind::AttesterSlashing => { GossipKind::AttesterSlashing => {
let attester_slashing = let attester_slashing =
match fork_context.from_context_bytes(gossip_topic.fork_digest) { match fork_context.from_context_bytes(gossip_topic.fork_digest) {
Some(ForkName::Base) Some(&fork_name) => {
| Some(ForkName::Altair) if fork_name >= ForkName::Electra {
| Some(ForkName::Bellatrix) AttesterSlashing::Electra(
| Some(ForkName::Capella) AttesterSlashingElectra::from_ssz_bytes(data)
| Some(ForkName::Deneb) => AttesterSlashing::Base( .map_err(|e| format!("{:?}", e))?,
AttesterSlashingBase::from_ssz_bytes(data) )
.map_err(|e| format!("{:?}", e))?, } else {
), AttesterSlashing::Base(
Some(ForkName::Electra) => AttesterSlashing::Electra( AttesterSlashingBase::from_ssz_bytes(data)
AttesterSlashingElectra::from_ssz_bytes(data) .map_err(|e| format!("{:?}", e))?,
.map_err(|e| format!("{:?}", e))?, )
), }
}
None => { None => {
return Err(format!( return Err(format!(
"Unknown gossipsub fork digest: {:?}", "Unknown gossipsub fork digest: {:?}",