DS03 — Quy trình chữ ký (Accept/Deny/Sign)

Yếu tố kích hoạt S2

Sau khi Signatur-Doc (DS02) đã được định nghĩa, người kiểm tra đặt ra câu hỏi đúng: Vậy cuối cùng đã quyết định điều gì? Một Signatur-Doc chỉ nói rằng: "E1 ký Doc X." Quy trình — chấp nhận (Accept), từ chối (Deny), ký (Sign), rút lại (Withdraw) — là một sự kiện riêng với dòng thời gian riêng của nó.

Máy trạng thái của quy trình chữ ký

Một quy trình đi qua một máy trạng thái tất định:

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% stateDiagram-v2 [*] --> drafted: Quell-Dokument erstellt drafted --> offered: Signatur angefordert offered --> accepted: Empfänger nimmt zur Kenntnis (Accept) offered --> denied: Empfänger lehnt ab (Deny) accepted --> signed: Zeichner zeichnet (Sign) signed --> withdrawn: Zeichner zieht zurück (Withdraw, vor Frist) denied --> [*] withdrawn --> [*] signed --> [*]

Mỗi thay đổi trạng thái là một Event-Artefakt trong Repo — một tài liệu JSON theo schema signature-event-1.0:

{
  "$schema": "https://gitcover.org/schemas/signature-event-1.0.schema.json",
  "uuidV7": "<deterministische uuidV7>",
  "type": "signature-event",
  "event": "sign",
  "actor": {
    "name": "Erich Mustermann",
    "role": "Geschäftsführer",
    "capacity": "handelnd für PARTNER-ORG"
  },
  "on": {
    "signature_doc_sha256": "<SHA-256 des Signatur-Docs (DS02)>",
    "target_doc_sha256": "<SHA-256 des Quell-Dokuments>"
  },
  "prev_event_sha256": "<SHA-256 des vorherigen Events, null beim ersten>",
  "statement": "Ich zeichne das Dokument in der angegebenen Funktion und bestätige den in der Textform übermittelten Wortlaut.",
  "evidence": {
    "facsimile_ref": {
      "file": "E1.Signature.transparent.FES.svg",
      "sha256": "8fcffe0b313f8a1e5b44c1c33cd8073e699b338b6450aa1ba9f33f5587501006",
      "guid_stamp": "01a09b48-4580-76f9-b789-024691b989c5"
    },
    "timestamp_utc": "2026-09-13T15:20:00Z"
  }
}

Sự nối chuỗi: prev_event_sha256

Mỗi Event tham chiếu đến Event liền trước của nó — lịch sử chữ ký tạo thành một chuỗi SHA-256 (nguyên tắc prev_sha256 của GCPN, ở đây trên cấp Event):

offered (event 1) ──► accepted (event 2) ──► signed (event 3)
     │                      │                     │
   sha256                 sha256                sha256
     └── prev=null ─────────┴── prev=sha(ev1) ───┴── prev=sha(ev2)

Người kiểm tra có thể xác minh toàn bộ lịch sử chỉ với ba lệnh:

sha256sum ev1.json                       # stimmt mit prev in ev2?
jq -r '.event' ev*.json | sort           # Zustandsfolge korrekt?
jq -r '.actor.name' ev*.json | sort -u   # Zeichner konsistent?

Các loại Event

Event Ý nghĩa Giá trị chứng cứ
offered Đã yêu cầu ký (tài liệu được trình để ký) Điểm bắt đầu thời hạn, tính công bằng của thủ tục
accepted Người nhận đã ghi nhận (xác nhận quyền truy cập theo Textform) § 126b (1): Đã chứng minh quyền truy cập
denied Người nhận từ chối (kèm lý do) Ghi nhận việc từ chối — quan trọng khi có các phiên bản mâu thuẫn nhau
sign Người ký ký tên (tham chiếu Facsimile/khóa) § 371a ZPO: Kèm tên + thông báo hình thức
withdraw Người ký rút lại (trước khi xảy ra Verwirkung) Rút lại đáng tin cậy cho soát xét thay vì xóa im lặng

Không có nguyên tắc xóa im lặng: Một Event không bao giờ bị xóa hoặc ghi đè. Việc rút lại là một Event withdraw — lịch sử vẫn còn nguyên vẹn (nguyên tắc của GoBD: khả năng truy vết).

Multi-Signatur: Hai người ký, một tài liệu nguồn

Với một GVB có hai dòng chữ ký, mỗi người ký tạo ra chuỗi Event riêng của mình trên cùng một tài liệu nguồn:

Quell-Dokument (sha256 T)
   ├── E1: offered → accepted → signed (Kette A)
   └── PARTNER-1: offered → accepted → signed (Kette B)

Việc xác minh (DS04) kiểm tra cả hai chuỗi một cách độc lập — và GCPN-Container (DS05) gộp cả hai lại dưới một Container-ID.

Tính tất định

Mỗi Event đều có thể được mô tả một cách tất định: uuidV7 từ dấu thời gian + SHA-256 của Event, máy trạng thái không có chuyển trạng thái nào không xác định, không có văn bản tự do ngoài khai báo statement. Đó chính là chất lượng Saga: Quy trình có thể được bất kỳ người kiểm tra nào tái hiện và hiểu được mà không cần kiến thức bối cảnh.

Tóm tắt


Đã tạo: 260913 | Phần I, bài DS03 | Loạt bài: digital-signage