Stuart meets Satoshi: key rotation
The three sequences have the same start and the same end. Only the announcement is different. For the details, see Update and Deactivate, Beacons, and Resolve.
Singleton Beacon
Section titled “Singleton Beacon”Stuart signs the Beacon Signal alone. Stuart waits for 6 confirmations before the next update. Stuart can also publish the update on CAS instead of the Sidecar Data.
---
title: Key rotation with a Singleton Beacon
config:
sequence:
actorMargin: 20
width: 110
---
%% Before: Satoshi trusts the keys of Stuart at version N.
sequenceDiagram
autonumber
actor Stu as Stuart
participant BTC as Bitcoin
actor Sat as Satoshi
Stu->>Stu: BTCR2 Update: add the new key.<br/>Sign it with the old key.
Stu->>BTC: Beacon Signal:<br/>hash of the update
BTC-->>Stu: 6 confirmations
Stu->>Sat: Message signed with the new key,<br/>did, Sidecar Data
Sat->>BTC: Resolve the DID
BTC-->>Sat: Beacon Signal
Sat->>Sat: Check the update against<br/>the hash. Apply it.
Sat->>Sat: Verify the message.<br/>Trust the new key.
Source: key-rotation-singleton-beacon.mmd
CAS Beacon
Section titled “CAS Beacon”The cohort sees which DIDs have an update. The Beacon Signal needs the signatures of all n participants, or of k
participants if the cohort has a k-of-n fallback. See
n-of-n and k-of-n signatures.
---
title: Key rotation with a CAS 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: did, hash of the update
AS->>Stu: CAS Announcement
Stu->>Stu: Check the entry<br/>of the DID
Stu->>AS: Signature<br/>(all n, or k of n)
AS->>BTC: Beacon Signal: hash of<br/>the CAS Announcement
Stu->>Sat: Message signed with the new key,<br/>did, Sidecar Data
Sat->>BTC: Resolve the DID
Sat->>Sat: Find the DID in the CAS<br/>Announcement. Apply the update.
Sat->>Sat: Verify the message.<br/>Trust the new key.
Source: key-rotation-cas-beacon.mmd
SMT Beacon
Section titled “SMT Beacon”The Aggregation Service sees only hashes. The leaf value hides if Stuart has an update (SMT leaf values). Satoshi gets the SMT Proofs only from the Sidecar Data.
---
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.