Troptions

Security & credentials

The program separates storage security (encryption, access policy) from presentation security (BBS+ selective disclosure on BLS12-381). Ruby documents the architecture; Legacy implements issuance and verification APIs.

BBS+ & VCDM 2.0

GemAssetCredential claims are signed with BBS+ on the BLS12-381 curve. Holders can derive presentations that disclose only lender-relevant fields while withholding certificate CIDs.

Interactive proof demo

Proof request (demo)

Select claims a collateral desk would request. Output is a sample BBS+ lender VP JSON — not sent to Legacy in v1.

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://schema.fthtrading.com/gem/v1"
  ],
  "id": "urn:uuid:00000000-0000-4000-8000-lender-vp-sample-001",
  "type": [
    "VerifiablePresentation",
    "BBSSelectiveDisclosurePresentation"
  ],
  "holder": "did:web:legacy.fthtrading.com:spv:allure-holdings",
  "verifiableCredential": [
    {
      "id": "urn:uuid:00000000-0000-4000-8000-gem-vc-sample-001",
      "type": [
        "VerifiableCredential",
        "GemAssetCredential"
      ],
      "issuer": "did:web:legacy.fthtrading.com:spv:allure",
      "credentialSubject": {
        "type": "GemAsset",
        "titleStatus": "in_custody",
        "valuationThresholdMet": true
      }
    }
  ],
  "proof": {
    "type": "BbsBlsSignatureProof2020",
    "created": "2026-06-04T12:00:00.000Z",
    "challenge": "lender-collateral-desk-nonce-SAMPLE-2026-06-04",
    "proofPurpose": "authentication",
    "verificationMethod": "did:web:legacy.fthtrading.com:spv:allure#bbs-key-1",
    "ciphersuite": "BLS12-381-SHA-256",
    "disclosedMessageIndexes": [
      8,
      24
    ],
    "mock": true
  },
  "_demoNote": "Sample only — live proofs via Legacy POST /api/vc/present/bbs. No dollar NAV in disclosed claims."
}

Encryption & custody

Laboratory PDFs and custody receipts are encrypted client-side before private IPFS upload. Public GitHub indexes reference labels and hashes only.

View manifest sample on stack page →