Skip to content

EU Battery Regulation

Generated from the RDF ontology.

Regulation: (EU) 2023/1542 | Mode: Physical Mode | Blockchain fit: Strong

Protocol patterns

graph TB
    EU_Battery_Regulation{"📋 EU Battery Regulation"}
    Commitment_then_Submit{{"⚙️ Commitment-then-Submit"}}
    EU_Battery_Regulation --> Commitment_then_Submit
    Lifecycle_State_Machine{{"⚙️ Lifecycle State Machine"}}
    EU_Battery_Regulation --> Lifecycle_State_Machine
    MPT_per_Operator{{"⚙️ MPT-per-Operator"}}
    EU_Battery_Regulation --> MPT_per_Operator
    Operator_as_Aggregator{{"⚙️ Operator-as-Aggregator"}}
    EU_Battery_Regulation --> Operator_as_Aggregator
    Double_Signature{{"⚙️ Double Signature"}}
    EU_Battery_Regulation --> Double_Signature
    Baton_Pattern{{"⚙️ Baton Pattern"}}
    EU_Battery_Regulation --> Baton_Pattern
    Beacon_Gated_Attestation{{"⚙️ Beacon-Gated Attestation"}}
    EU_Battery_Regulation --> Beacon_Gated_Attestation
    Cross_Operator_Handoff{{"⚙️ Cross-Operator Handoff"}}
    EU_Battery_Regulation --> Cross_Operator_Handoff
    Reward_Distribution{{"⚙️ Reward Distribution"}}
    EU_Battery_Regulation --> Reward_Distribution
    Tiered_Access{{"⚙️ Tiered Access"}}
    EU_Battery_Regulation --> Tiered_Access

Parties

graph LR
    subgraph Regulator["Regulator"]
        European_Commission[["European Commission"]]
    end
    subgraph Operator["Operator"]
        Manufacturer["Manufacturer"]
        Importer["Importer"]
        Distributor["Distributor"]
        Recycler["Recycler"]
    end
    subgraph User["User"]
        Consumer(["Consumer"])
    end
    subgraph Verification_Body["Verification Body"]
        Market_Surveillance_Authority{{"Market Surveillance Authority"}}
        Notified_Body{{"Notified Body"}}
    end
    EU_Battery_Regulation{"📋 EU Battery Regulation"}
    EU_Battery_Regulation --> Regulator
    EU_Battery_Regulation --> Operator
    EU_Battery_Regulation --> User
    EU_Battery_Regulation --> Verification_Body
Actor Schema role Notes
European Commission Regulator
Manufacturer Operator Primary operator. Manages product passport trie. Pays all fees.
Importer Operator Secondary operator for imported batteries.
Distributor Operator
Consumer User Taps NFC to trigger SE050 SoH reading. No wallet.
Recycler Operator End-of-life operator. Receives handoff from original manufacturer.
Market Surveillance Authority Verification Body
Notified Body Verification Body

Constraint check

Constraint Result Justification
Data Cadence Pass SoH readings monthly at most. Lifecycle events are rare.
Sequential Access Pass One manufacturer per trie. Relay on repurposing.
Liveness Pass Penalties are set by Member States under Art. 93. Slot-based timeouts for readings remain enforceable at protocol level.
Fee Alignment Pass Manufacturers pay ~$0.10-0.15 per reading. Compliance value far exceeds cost.
Identity Delegation Pass NFC secure element (SE050) signs readings. Consumer taps phone, no wallet.

Obligations

graph LR
    State_of_Health_reading["State of Health reading"]
    Commitment_then_Submit{{"⚙️ Commitment-then-Submit"}}
    State_of_Health_reading -->|Monthly at most — event-driven on tap| Commitment_then_Submit
    Dynamic_dt["Dynamic"]
    State_of_Health_reading -.-> Dynamic_dt
    Carbon_footprint_per_kWh["Carbon footprint per kWh"]
    Static_dt["Static"]
    Carbon_footprint_per_kWh -.-> Static_dt
    Recycled_content_percentages["Recycled content percentages"]
    Recycled_content_percentages -.-> Static_dt
    Detailed_composition["Detailed composition"]
    Detailed_composition -.-> Static_dt
    Supply_chain_audit_trail["Supply chain audit trail"]
    Event_driven_dt["Event-driven"]
    Supply_chain_audit_trail -.-> Event_driven_dt
    Repurposing_record["Repurposing record<br/><i>Art 77(3) — new battery passport for repurposed batteries</i>"]
    Cross_Operator_Handoff{{"⚙️ Cross-Operator Handoff"}}
    Repurposing_record -->|At repurposing event| Cross_Operator_Handoff
    Repurposing_record -.-> Event_driven_dt
    End_of_life_declaration["End of life declaration<br/><i>Art 77(5) — passport ceases to exist on recycling</i>"]
    Lifecycle_State_Machine{{"⚙️ Lifecycle State Machine"}}
    End_of_life_declaration -->|At recycling| Lifecycle_State_Machine
    End_of_life_declaration -.-> Event_driven_dt
Obligation Legal basis Deadline Pattern Data type Access
State of Health reading Monthly at most — event-driven on tap Commitment-then-Submit Dynamic Restricted
Carbon footprint per kWh At manufacturing — static Static Public
Recycled content percentages At manufacturing — static Static Public
Detailed composition At manufacturing — static Static Authorized Operators
Supply chain audit trail Event-driven Event-driven Authorities Only
Repurposing record Art 77(3) — new battery passport for repurposed batteries At repurposing event Cross-Operator Handoff Event-driven Public
End of life declaration Art 77(5) — passport ceases to exist on recycling At recycling Lifecycle State Machine Event-driven Public

Trust model

graph LR
    Manufacturer["Manufacturer"]
    Consumer["Consumer"]
    Manufacturer -- "Low: SoH manipulation" --> Consumer
    European_Commission["European Commission"]
    Manufacturer -- "Medium: Selective reporting" --> European_Commission
    Consumer -- "None: Counterfeit resale" --> Consumer
    Consumer -- "Medium: Analog tampering" --> Consumer
Party A Party B Trust Risk Mitigation
Manufacturer Consumer Low SoH manipulation Immutable on-chain history
Manufacturer European Commission Medium Selective reporting Completeness proofs via MPT
Consumer Consumer None Counterfeit resale On-chain provenance
Consumer Consumer Medium Analog tampering Hardware SE — tampering is expensive, destructive

Validator

graph TB
    subgraph Actions["Redeemer Actions"]
        RegisterItem["RegisterItem"]
        AssignReporter["AssignReporter"]
        ReassignReporter["ReassignReporter"]
        CreateCommitment["CreateCommitment"]
        SubmitReading["SubmitReading"]
        TransferOwnership["TransferOwnership"]
        Repurpose["Repurpose"]
    end
    subgraph Universal["Universal Guards"]
        Manufacturer_signature_present{{"✓ Manufacturer signature present"}}
    end
    Actions --> Universal
    subgraph Specific["Action-Specific Guards"]
        Manufacturer_key___identity_trie("Manufacturer key ∈ identity trie")
        Standing___suspended__regulation_trie_("Standing ≠ suspended (regulation trie)")
        No_existing_leaf_at_hash_itemPubKey_("No existing leaf at hash(itemPubKey)")
        Metadata___empty("Metadata ≠ empty")
        MPT_insert_proof_valid("MPT insert proof valid")
        reporter___Nothing("reporter = Nothing")
        nextReward___0("nextReward > 0")
        MPT_update_proof_valid("MPT update proof valid")
        commitment___Nothing("commitment = Nothing")
        reporter___Nothing("reporter ≠ Nothing")
        validFrom___validUntil__validFrom___lower_slot("validFrom ≤ validUntil, validFrom ≥ lower slot")
        commitment___Nothing("commitment ≠ Nothing")
        COSE_Sign1_signature_valid__Ed25519_or_secp256k1_("COSE_Sign1 signature valid (Ed25519 or secp256k1)")
        Payload_validFrom_validUntil_match_commitment("Payload validFrom/validUntil match commitment")
        validFrom___current_slot___validUntil("validFrom ≤ current_slot ≤ validUntil")
        Reporter_key_matches_assignment("Reporter key matches assignment")
        Reporter_signature_present__actor_auth_("Reporter signature present (actor auth)")
        MPT_transition_proof_valid__two_leaf_update_("MPT transition proof valid (two-leaf update)")
        Seller_signature_present("Seller signature present")
        Buyer_signature_present("Buyer signature present")
        Fresh_COSE_Sign1_BMS_reading_valid("Fresh COSE_Sign1 BMS reading valid")
        CIP_68_user_token_moves_seller___buyer("CIP-68 user token moves seller → buyer")
        New_operator_key___identity_trie("New operator key ∈ identity trie")
        New_operator_qualified__regulation_trie_("New operator qualified (regulation trie)")
        Back_link_Merkle_proof_valid_against_original_root("Back-link Merkle proof valid against original root")
    end
    RegisterItem --> Manufacturer_key___identity_trie
    AssignReporter --> Manufacturer_key___identity_trie
    ReassignReporter --> Manufacturer_key___identity_trie
    CreateCommitment --> Manufacturer_key___identity_trie
    RegisterItem --> Standing___suspended__regulation_trie_
    RegisterItem --> No_existing_leaf_at_hash_itemPubKey_
    RegisterItem --> Metadata___empty
    RegisterItem --> MPT_insert_proof_valid
    AssignReporter --> reporter___Nothing
    AssignReporter --> nextReward___0
    ReassignReporter --> nextReward___0
    AssignReporter --> MPT_update_proof_valid
    ReassignReporter --> MPT_update_proof_valid
    CreateCommitment --> MPT_update_proof_valid
    TransferOwnership --> MPT_update_proof_valid
    ReassignReporter --> commitment___Nothing
    CreateCommitment --> commitment___Nothing
    TransferOwnership --> commitment___Nothing
    Repurpose --> commitment___Nothing
    CreateCommitment --> reporter___Nothing
    CreateCommitment --> validFrom___validUntil__validFrom___lower_slot
    SubmitReading --> commitment___Nothing
    SubmitReading --> COSE_Sign1_signature_valid__Ed25519_or_secp256k1_
    SubmitReading --> Payload_validFrom_validUntil_match_commitment
    SubmitReading --> validFrom___current_slot___validUntil
    SubmitReading --> Reporter_key_matches_assignment
    SubmitReading --> Reporter_signature_present__actor_auth_
    SubmitReading --> MPT_transition_proof_valid__two_leaf_update_
    TransferOwnership --> Seller_signature_present
    TransferOwnership --> Buyer_signature_present
    TransferOwnership --> Fresh_COSE_Sign1_BMS_reading_valid
    Repurpose --> Fresh_COSE_Sign1_BMS_reading_valid
    TransferOwnership --> CIP_68_user_token_moves_seller___buyer
    Repurpose --> New_operator_key___identity_trie
    Repurpose --> New_operator_qualified__regulation_trie_
    Repurpose --> Back_link_Merkle_proof_valid_against_original_root

Penalties

Description Maximum fine
Art. 93 Member State penalties, plus market restriction or withdrawal measures under the regulation Member State defined — includes product ban