---
title: Key rotation with an SMT Beacon
config:
  sequence:
    actorMargin: 20
    width: 110
---

%% Before: Satoshi trusts the keys of Stuart at version N.
%% Stuart is a participant of an Aggregation Cohort with n participants.

sequenceDiagram
    autonumber
    actor Stu as Stuart
    participant AS as Aggregation<br/>Service
    participant BTC as Bitcoin
    actor Sat as Satoshi

    Stu->>Stu: BTCR2 Update: add the new key.<br/>Sign it with the old key.
    Stu->>AS: Leaf value at hash(did)
    AS->>Stu: SMT Proof
    Stu->>Stu: Check the SMT Proof
    Stu->>AS: Signature<br/>(all n, or k of n)
    AS->>BTC: Beacon Signal:<br/>SMT root
    Stu->>Sat: Message signed with the new key,<br/>did, Sidecar Data
    Sat->>BTC: Resolve the DID
    Sat->>Sat: Check the SMT Proof.<br/>Apply the update.
    Sat->>Sat: Verify the message.<br/>Trust the new key.
