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 |