diff --git a/hubzilla/addon/cry01/contracts/attestation-v1.json b/hubzilla/addon/cry01/contracts/attestation-v1.json new file mode 100644 index 0000000..2ed3979 --- /dev/null +++ b/hubzilla/addon/cry01/contracts/attestation-v1.json @@ -0,0 +1,19 @@ +{ + "_meta": { + "contract": "cry01-g1-attestation", + "version": "1.0", + "purpose": "Duniter-compatible attestation document for SASE-to-Ğ1 web of trust certification." + }, + "_header": { + "operator_g1_pubkey": "The operator's Ğ1 public key — the certifier.", + "participant_g1_pubkey": "The participant's Ğ1 public key — the certifiee.", + "participant_xchan": "The participant's Hubzilla xchan hash — links to SASE record.", + "association_slug": "The association whose SASE membership is the basis of certification.", + "attested_at": "ISO 8601 timestamp of attestation document generation.", + "sase_admitted_at": "ISO 8601 timestamp of SASE admission — from pgrp_member record." + }, + "_payload": { + "attestation_statement": "This participant has been verified as a current resident member of the named association through the SASE process, which requires real-name, real-address verification by the association channel operator.", + "duniter_cert_document": "The raw Duniter certification document, generated by cry01_chain.php in the Duniter document format, ready for operator signature and broadcast." + } +} diff --git a/hubzilla/addon/cry01/contracts/ots-v1.json b/hubzilla/addon/cry01/contracts/ots-v1.json new file mode 100644 index 0000000..857388d --- /dev/null +++ b/hubzilla/addon/cry01/contracts/ots-v1.json @@ -0,0 +1,20 @@ +{ + "_meta": { + "contract": "cry01-ots", + "version": "1.0", + "purpose": "OpenTimestamps proof envelope anchoring a diagnostic result to the Bitcoin blockchain." + }, + "_header": { + "document_hash": "SHA-256 hash of the document being timestamped.", + "hash_algorithm": "sha256", + "timestamped_at": "ISO 8601 timestamp of OTS submission to calendar server.", + "calendar_url": "The OTS calendar server used.", + "addon": "The addon that generated this document (cry01, poll01, etc.)", + "association_slug": "The association this document pertains to." + }, + "_payload": { + "ots_proof_base64": "Base64-encoded .ots proof file. Verifiable offline with the ots tool.", + "bitcoin_block": "Bitcoin block number in which the timestamp was confirmed. Null until confirmed.", + "confirmed_at": "ISO 8601 timestamp of Bitcoin confirmation. Null until confirmed." + } +} diff --git a/hubzilla/addon/cry01/contracts/signal-v1.json b/hubzilla/addon/cry01/contracts/signal-v1.json new file mode 100644 index 0000000..785914b --- /dev/null +++ b/hubzilla/addon/cry01/contracts/signal-v1.json @@ -0,0 +1,26 @@ +{ + "_meta": { + "contract": "cry01-signal", + "version": "1.0", + "purpose": "Capacity signal registration by a verified SASE participant." + }, + "_header": { + "addon": "cry01", + "association_slug": "The association this signal is registered against.", + "participant_xchan": "The xchan hash of the signaling participant.", + "submitted_at": "ISO 8601 timestamp.", + "node_token_hash": "SHA-256 of the node token — not the token itself." + }, + "_payload": { + "g1_pubkey": "The participant's Ğ1 public key. Required — this is the payment address.", + "capacity_description": "Plain-language description of what is being offered or sought.", + "g1_denomination": "The amount in Ğ1 the participant considers fair exchange.", + "duration_days": "How many days this capacity is available from submission date.", + "category_id": "One of the operator-defined signal_categories ids from config.json.", + "direction": "offer or seek — whether the participant is providing or requesting this capacity." + }, + "_credentials": { + "vc": "W3C Verifiable Credential issued for this signal. See CRY01-SPEC.md contracts/vc-v1.json.", + "ots": "OpenTimestamps proof anchoring this signal to Bitcoin. See CRY01-SPEC.md contracts/ots-v1.json." + } +} diff --git a/hubzilla/addon/cry01/contracts/vc-v1.json b/hubzilla/addon/cry01/contracts/vc-v1.json new file mode 100644 index 0000000..43f3af1 --- /dev/null +++ b/hubzilla/addon/cry01/contracts/vc-v1.json @@ -0,0 +1,26 @@ +{ + "_meta": { + "contract": "cry01-vc", + "version": "1.0", + "purpose": "W3C Verifiable Credential envelope for Civic Infrastructure diagnostic results." + }, + "_note": "The actual VC is a JSON-LD document signed by the operator. The credentialSubject.claim field contains the claim specific to the issuing addon.", + "vc_structure": { + "@context": ["https://www.w3.org/2018/credentials/v1"], + "type": ["VerifiableCredential"], + "issuer": "did:web:directory.diagnostics.kane-il.us", + "issuanceDate": "ISO 8601 timestamp", + "credentialSubject": { + "id": "did:web:directory.diagnostics.kane-il.us/channel/{xchan}", + "association": "association slug", + "claim_type": "signal | ballot | poll_result | sase_admission", + "claim": "addon-specific structured claim — see issuing addon spec" + }, + "proof": { + "type": "Ed25519Signature2020", + "created": "ISO 8601 timestamp", + "verificationMethod": "did:web:directory.diagnostics.kane-il.us#operator-key", + "proofValue": "base58-encoded signature" + } + } +}