SynergyX Basierend auf den Algorithmen NIST standardisiert — FIPS 203 (ML-KEM/Kyber-768) und FIPS 205 (SLH-DSA/SPHINCS+). Veröffentlicht am 15. Januar 2026. Alle kryptografischen Behauptungen sind in der Kette und gegen sie überprüfbar NIST CSRC Dokumentation. Null vor der Mine. Null ICO. Null VC. Keine Gründerzuteilung. 77,7 Millionen Hardcap. Die Entwickler-Wallet ist öffentlich und bewusst nicht privat – in jedem Adressbuch, im Explorer. Nichts davon verlangt von Ihnen, einer Person zu vertrauen.
Post-Quantum Wallet API Design: REST- und WebSocket-Muster
📅 Letzte Aktualisierung: 2. August 2026🎧 Hören: ~6 Min
Der Aufbau von APIs für Post-Quantum-Kryptowährungs-Wallets stellt einzigartige Herausforderungen dar: größere Nutzlasten aus Signaturen, neue Authentifizierungsparadigmen und Echtzeit-Aktualisierungsanforderungen. In diesem Leitfaden werden API-Entwurfsmuster behandelt, die für quantenresistente Kryptographie optimiert sind. Der SynX quantenresistente Geldbörse API veranschaulicht diese Muster.
API-Architekturübersicht
Eine vollständige Wallet API erfordert:
REST API: Standard-CRUD-Operationen für Adressen, Transaktionen, Einstellungen
WebSocket API: Echtzeit-Kontostandaktualisierungen und Transaktionsbestätigungen
Nutzlastoptimierung: Komprimierung, Paginierung für große Signaturen
REST API-Endpunkte
Adressverwaltung
ERHALTEN/API/v1/adressen
Listen Sie alle Adressen für das authentifizierte Wallet auf
POST/API/v1/addresses/derive
Neue Adresse am angegebenen Pfad ableiten
# Implementierung von Adressendpunkten (FastAPI)aus Fastapi Import FastAPI, Hängt davon ab, HTTPException
aus pydantisch Import Basismodell
aus Tippen Import Liste, optional
Import base64 app = FastAPI(title=„SynX Geldbörse API“, Version="1.0.0")
KlasseAdressantwort(Basismodell):
„““Adresse mit öffentlichen Post-Quantum-Schlüsseln““
Adresse: str Pfad: str kyber_public_key: str # Base64-codiert (1.184 Bytes)
sphincs_public_key: str # Base64-kodiert (32 Bytes)
Balance: int pending_balance: int erstellt_at: str
KlasseDeriveAddressRequest(BaseModel): Konto: int = 0 Änderung: int = 0 Index: Optional[int] = Keine # Automatisches Inkrementieren, wenn keine vorhanden ist@app.get(„/API/v1/addresses“, Response_Model=Liste[Adressantwort])
asynchrone Deflist_addresses( wallet_id: str = Depends(get_authenticated_wallet), überspringen: int = 0, limit: int = 50 ):
„““ Wallet-Adressen mit Guthaben auflisten. Hinweis: Die öffentlichen Kyber-Schlüssel sind groß (1,2 KB). Für die Auflistung sollten Sie erwägen, Schlüssel auszuschließen und sie separat abzurufen. „““
Adressen = erwarten address_service.list_addresses( wallet_id, skip=skip, limit=limit )
zurückkehren [
Adressantwort( address=addr.address, path=addr.path, kyber_public_key=base64.b64encode(addr.kyber_pk).decode(), sphincs_public_key=base64.b64encode(addr.sphincs_pk).decode(), balance=addr.balance, pending_balance=addr.pending_balance, erstellt_at=addr.created_at.isoformat() )
für Adr in Adressen ]
@app.post(„/API/v1/addresses/derive“, Antwortmodell=Adressantwort)
asynchrone Defabgeleitete_Adresse( Anfrage: DeriveAddressRequest, wallet_id: str = Depends(get_authenticated_wallet) ):
„Neue Adresse am angegebenen Ableitungspfad ableiten“
addr = erwarten address_service.derive_address( wallet_id, account=request.account, change=request.change, index=request.index )
zurückkehrenAdressantwort(...)
Transaktionsendpunkte
ERHALTEN/API/v1/transactions
Transaktionen mit Paginierung auflisten (Signaturen getrennt)
ERHALTEN/API/v1/transactions/{tx_id}
Erhalten Sie die vollständige Transaktion inklusive Unterschriften
POST/API/v1/transactions/build
Erstellen Sie eine nicht signierte Transaktion
POST/API/v1/transactions/broadcast
Signierte Transaktion übertragen
KlasseTransaktionsübersicht(Basismodell):
„“Transaktion ohne vollständige Signaturdaten (für Listen)““
tx_id: str Zeitstempel: str Inputs_count: int Outputs_count: int Betrag: int Gebühr: int Bestätigungen: int Status: str # „ausstehend“, „bestätigt“, „fehlgeschlagen“KlasseTransactionFull(Basismodell):
„““Vollständige Transaktion inklusive Unterschriften““
tx_id: str Version: int Zeitstempel: str Eingaben: Liste['TransactionInputSchema'] gibt aus: Liste['TransactionOutputSchema'] Gebühr: int Bestätigungen: int block_hash: Optional[str] raw_hex: str # Vollständig serialisierte TransaktionKlasseTransactionInputSchema(BaseModel): prev_tx_id: str prev_output_index: int Menge: int Adresse: str Signatur: str # Base64 (~10,5 KB für SPHINCS+-SHAKE-128s, 7.856 Rohbytes)
public_key: str # Base64 (44 Bytes für SPHINCS+)KlasseBuildTransactionRequest(BaseModel): Ausgaben: List['Ausgabespezifikation'] fee_rate: Optional[int] = Keine # Automatisch berechnen, wenn keine vorhanden ist
change_address: Optional[str] = Keine # Automatische Auswahl, wenn keineKlasseAusgabespezifikation(BaseModel): Empfänger: str Betrag: int Memo: Optional[str] = Keine
@app.get(„/API/v1/transactions“, Response_Model=Liste[Transaktionsübersicht])
asynchrone Deflist_transactions( wallet_id: str = Depends(get_authenticated_wallet), überspringen: int = 0, limit: int = 20, status: Optional[str] = None):
„““ Transaktionen auflisten (nur Zusammenfassungen). Signaturen werden aus Listenantworten ausgeschlossen, um die Nutzlast zu reduzieren. Verwenden Sie GET /transactions/{tx_id} für vollständige Transaktionen mit Signaturen. „““
txs = erwarten transaction_service.list_transactions( wallet_id, skip=skip, limit=limit, status=status )
zurückkehren [tx.to_summary() für tx in txs]
@app.get(„/API/v1/transactions/{tx_id}“, Antwortmodell=TransactionFull)
asynchrone Defget_transaction( tx_id: str, wallet_id: str = Depends(get_authenticated_wallet), include_signatures: bool = True ):
„““ Vollständige Transaktionsdetails abrufen. Setzen Sie include_signatures=false, um die Antwortgröße zu reduzieren, wenn Sie nur Transaktionsmetadaten benötigen. „““
tx = erwarten transaktion_service.get_transaction(wallet_id, tx_id)
wenn nicht tx:
erheben HTTPException(status_code=404, detail=„Transaktion nicht gefunden“)
zurückkehren tx.to_full_schema(include_signatures=include_signatures)
@app.post(„/API/v1/transactions/build“)
asynchrone Defbuild_transaction( Anfrage: BuildTransactionRequest, wallet_id: str = Depends(get_authenticated_wallet) ):
„““ Unsignierte Transaktion erstellen Gibt Transaktionsdaten zurück, die für die clientseitige Signatur bereit sind. Die Signierung erfolgt auf dem Client, um private Schlüssel vom Server fernzuhalten. „““
unsigned_tx = erwarten transaction_service.build_transaction( wallet_id, Outputs=request.outputs, fee_rate=request.fee_rate, change_address=request.change_address )
zurückkehren {
„unsigned_tx“: base64.b64encode(unsigned_tx.serialize_for_signing()).decode(),
„signing_message“: base64.b64encode(unsigned_tx.tx_hash()).decode(),
„inputs_to_sign“: [
{
"Index": i,
"Adresse": Eingangsadresse,
"Menge": Eingangsbetrag,
„Ableitungspfad“: inp.path }
für ich, inp in enumerate(unsigned_tx.inputs) ],
„estimated_fee“: unsigned_tx.fee,
„geschätzte_Größe“: unsigned_tx.estimated_size() }
Quantensichere Authentifizierung
Der SynX quantenresistente Geldbörse API verwendet ein hybrides Authentifizierungsschema:
# Authentifizierungsablauf mit Kyber + SPHINCS+Import oqs
Import Hashlib
Import hmac
aus Datum/Uhrzeit Import datetime, timedelta
KlasseQuantumSafeAuth:
„““ Quantensicherer API-Authentifizierungsablauf: 1. Client sendet öffentlichen Kyber-Schlüssel 2. Server kapselt Sitzungsschlüssel 3. Client entkapselt, um Sitzungsschlüssel zu erhalten 4. Mit HMAC signierte Anforderungen unter Verwendung des Sitzungsschlüssels „““def__init__(selbst): self.session_store = {} # Verwenden Sie in der Produktion Redis
self.session_duration = timedelta(hours=24)
asynchrone Definitiate_session( self, wallet_id: str, client_kyber_pk: bytes ) -> dict:
„““ Schritt 1: Der Client initiiert eine Sitzung mit dem öffentlichen Kyber-Schlüssel. Der Server kapselt ein Sitzungsgeheimnis in den Schlüssel des Clients. „““
kem = oqs.KeyEncapsulation(„Kyber768“) Chiffretext, shared_secret = kem.encap_secret(client_kyber_pk)
# Sitzungsschlüssel vom gemeinsamen Geheimnis ableiten
session_key = hashlib.shake_256( shared_secret + b„Sitzungsschlüssel“
).digest(32)
# Sitzungs-ID erstellen
session_id = hashlib.Blake2b( shared_secret + str(datetime.utcnow()).encode(), summary_size=16 ).hexdigest()
# Sitzung speichern (serverseitig)
self.session_store[session_id] = {
„wallet_id“: wallet_id,
„session_key“: session_key,
„expires_at“: datetime.utcnow() + self.session_duration,
„created_at“: datetime.utcnow() }
zurückkehren {
„session_id“: Sitzungs-ID,
„Geheimtext“: base64.b64encode(ciphertext).decode(),
„expires_at“: (datetime.utcnow() + self.session_duration).isoformat() }
defverify_request( self, session_id: str, request_signature: bytes, request_data: bytes, timestamp: int ) -> Optional[str]:
„““ Anforderungssignatur mithilfe des Sitzungsschlüssels überprüfen. Gibt wallet_id zurück, wenn gültig, sonst keine „““
session = self.session_store.get(session_id)
wenn nicht Sitzung:
zurückkehren Keiner
# Ablauf prüfenif datetime.utcnow() > Sitzung[„expires_at“]:
del self.session_store[session_id]
zurückkehren Keiner
# Zeitstempel prüfen (Wiedergabe verhindern)
request_time = datetime.fromtimestamp(timestamp)
if abs((datetime.utcnow() - request_time).total_seconds()) > 300:
zurückkehren Keiner # Mehr als 5 Minuten alt/zukünftig# Überprüfen Sie die HMAC-Signatur
erwartete_sig = hmac.new( Sitzung[„session_key“], request_data + str(timestamp).encode(), hashlib.Blake2b ).digest()
if hmac.compare_digest(request_signature, erwartete_sig):
zurückkehren Sitzung[„wallet_id“]
zurückkehren Keiner
# FastAPI-Abhängigkeit für authentifizierte Routen
auth_service = QuantumSafeAuth()
asynchrone Defget_authenticated_wallet( x_session_id: str = Header(...), x_signature: str = Header(...), x_timestamp: str = Header(...), request: Request = None ) -> str:
„Abhängigkeit, die die quantensichere Authentifizierung validiert“
Körper = erwarten request.body() wallet_id = auth_service.verify_request( session_id=x_session_id, request_signature=base64.b64decode(x_signature), request_data=body, timestamp=int(x_timestamp) )
wenn nicht wallet_id:
erheben HTTPException(status_code=401, detail=„Ungültige Authentifizierung“)
zurückkehren wallet_id
API-Dokumentation: Der SynX quantenresistente Geldbörse API enthält OpenAPI/Swagger-Dokumentation unter /docs Alle Endpunkte, Schemata und Authentifizierungsabläufe sind für eine einfache Integration dokumentiert.
Häufig gestellte Fragen
Wie gehe ich mit großen SPHINCS+-Signaturen in API-Antworten um?
Verwenden Sie die Base64-Codierung für Signaturen in JSON-Antworten, aktivieren Sie die gzip-Komprimierung (SPHINCS+-Signaturen werden um 40–50 % komprimiert) und berücksichtigen Sie beim Abrufen von Transaktionslisten separate Endpunkte für Signaturdaten. Die Paginierung ist für Endpunkte des Transaktionsverlaufs von entscheidender Bedeutung. Der SynX quantenresistente Geldbörse API schließt Signaturen standardmäßig aus Listenansichten aus.
Sollte ich Kyber für die API-Authentifizierung verwenden?
Ja, für die quantensichere API-Authentifizierung verwenden Sie den Kyber-basierten Schlüsselaustausch während des Sitzungsaufbaus und leiten dann symmetrische Schlüssel für die Anforderungssignierung ab. Dies bietet Vorwärtsgeheimnis gegen zukünftige Quantenangriffe auf den aufgezeichneten API-Verkehr. Der SynX quantenresistente Geldbörse verwendet dieses Muster für alle authentifizierten Endpunkte.
Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) aus der Genesis
Quantensicherheits-Score
95/100 — vs. Bitcoin 12/100, Ethereum 15/100, Monero 18/100
NIST-Standards
FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) – fertiggestellt im August 2024
Zeitleiste
Die Entwicklung begann September 2025 · Testnetz Januar 2026 · Mainnet April 2026
Maximales Angebot
77,7 Millionen SynX — Hard-Cap mit deflationärem Anflug
Verteilung
Null vor der Mine. Null ICO. Null VC. Keine Gründerzuteilung. Entwickler-Wallet öffentlich und bewusst nicht privat – im Explorer, in jedem Adressbuch
Sicherheitsüberprüfung
Interne gegnerische Tests und Red-Teaming + öffentliches Bug-Bounty. Vollständige unabhängige Prüfung bei die erste Halbierung, wenn die Quelle mit Audit-Trails geöffnet wird
Bergbau
Argon2id (2 GB Speicherfest) – Anti-ASIC, nur CPU
Privatsphäre
Kein KYC-, P2P-Austausch, rotierende Brenneradressen, Kyber-verschlüsselte Kommunikation
Ältere Wallets (Bitcoin, Ethereum, Monero) verwenden Kryptografie, die Quantencomputer knacken können. Über 469 Milliarden US-Dollar in exponierten Bitcoin-Adressen sind bereits gefährdet.