iToverDose/Software· 11 MAI 2026 · 00:04

Midnight-Netzwerk: Schritt-für-Schritt-Anleitung für ein tokenbasiertes DApp mit geschützten Transaktionen

Erfahren Sie, wie Sie eine vollständig abgeschirmte Token-DApp auf dem Midnight-Netzwerk entwickeln – von der Compact Smart Contracts-Implementierung bis zur interaktiven React-Oberfläche. Alle Schritte mit Praxisbeispielen erklärt.

DEV Community4 min0 Kommentare

Die Entwicklung dezentraler Anwendungen (DApps) mit geschützten Transaktionen stellt Entwickler vor besondere Herausforderungen. Das Midnight-Netzwerk ermöglicht nun die Erstellung von Token-DApps, bei denen alle Transaktionsdetails verschlüsselt bleiben. In dieser Schritt-für-Schritt-Anleitung erfahren Sie, wie Sie eine vollständige Shielded-Token-DApp aufbauen – von der Implementierung eines Compact Smart Contracts bis zur Integration in eine React-Oberfläche.

Die Besonderheit dieser Lösung liegt im Schutz der Privatsphäre: Während öffentliche Blockchain-Explorer nur aggregierte Daten wie das Gesamtangebot an Tokens anzeigen können, bleiben individuelle Transaktionsbeträge, Empfänger und die Transaktionshistorie für Außenstehende unsichtbar. Lediglich der Wallet-Besitzer kann die Beträge lokal entschlüsseln. Die Korrektheit der Transaktionen wird dabei durch Zero-Knowledge-Proofs sichergestellt, ohne sensible Daten preiszugeben.

Grundlagen: Was macht Shielded Tokens aus?

Shielded Tokens unterscheiden sich grundlegend von herkömmlichen Token-Implementierungen. Während bei regulären Token alle Transaktionen öffentlich einsehbar sind, bietet das Midnight-Netzwerk eine Lösung, die folgende Merkmale vereint:

  • Vollständige Verschlüsselung: Alle Transaktionsbeträge und Empfängeradressen bleiben verborgen.
  • Zero-Knowledge-Proofs: Die Korrektheit von Transaktionen wird mathematisch bewiesen, ohne die eigentlichen Daten offenzulegen.
  • Privater Zustand: Individuelle Wallet-Bestände sind nur für den Besitzer einsehbar.
  • Öffentliche Aggregatdaten: Gesamtangebot und verbrannte Tokens werden transparent angezeigt, während Details privat bleiben.

Ein zentrales Konzept ist die Verwendung des Zswap-Protokolls, das Shielded Tokens durch kryptografische Commitments und Zero-Knowledge-Proofs sicherstellt. Jeder Shielded Token besteht aus einer Commitment, die in einem Merkle-Baum gespeichert wird. Erst wenn der Besitzer nachweist, dass er berechtigt ist, kann er die Tokens ausgeben.

Voraussetzungen für die Entwicklung

Bevor Sie mit der Implementierung beginnen, stellen Sie sicher, dass Ihre Entwicklungsumgebung die folgenden Komponenten enthält:

  • Node.js in Version 20 oder höher
  • Eine Midnight-Wallet (z. B. 1AM oder Lace)
  • Test-Tokens aus dem Midnight Preprod-Faucet
  • Ein entsprechend konfiguriertes package.json mit allen benötigten Abhängigkeiten wie:
  • @midnight-ntwrk/compact-runtime
  • @midnight-ntwrk/dapp-connector-api
  • @midnight-ntwrk/ledger-v8
  • @midnight-ntwrk/midnight-js-contracts
  • React und React-DOM in aktuellen Versionen
  • zustand für das State-Management
  • semver für Versionsvergleiche

Die vollständige Liste der Abhängigkeiten finden Sie in der offiziellen Dokumentation zu Midnight-Apps.

Schritt 1: Compact Smart Contract für Shielded Tokens entwickeln

Das Herzstück Ihrer DApp ist der Compact Smart Contract, der in der Datei contracts/Token.compact definiert wird. Dieser Contract verwaltet sowohl öffentliche als auch private Daten und nutzt die Zswap-Primitiven für die Erstellung, Übertragung und Vernichtung von Tokens.

Öffentliche Zähler für Transparenz

Der Contract definiert zwei öffentliche Zähler, die das Gesamtangebot und die verbrannten Tokens erfassen:

export ledger totalSupply: Uint<64>;
export ledger totalBurned: Uint<128>;

Diese Zähler sind für jeden einsehbar, da sie keine sensiblen Informationen enthalten. Sie dienen lediglich der transparenten Darstellung der Token-Ökonomie.

Zufallszahlen für die Einmaligkeit von Tokens

Jeder Shielded Token benötigt eine eindeutige Nonce, um Doppelausgaben zu verhindern. Diese wird durch einen lokalen Witness bereitgestellt:

witness localNonce(): Bytes<32>;

Diese Nonce wird bei jeder Token-Erstellung generiert und in den Zero-Knowledge-Proof integriert.

Token-Erstellung mit createShieldedToken

Die Funktion createShieldedToken ermöglicht das Prägen neuer Shielded Tokens. Sie akzeptiert den Betrag, den Empfänger und generiert automatisch eine Nonce:

export circuit createShieldedToken(
  amount: Uint<64>,
  recipient: Either<ZswapCoinPublicKey, ContractAddress>
): ShieldedCoinInfo {
  const domain = pad(32, "shielded:token");
  const nonce = localNonce();
  const coin = mintShieldedToken(
    disclose(domain),
    disclose(amount),
    disclose(nonce),
    disclose(recipient)
  );
  totalSupply = (totalSupply + disclose(amount)) as Uint<64>;
  return coin;
}

Wichtig ist die Verwendung von disclose(), um dem Ledger die Empfängeradresse mitzuteilen. Nur der Empfänger kann später den tatsächlichen Betrag entschlüsseln.

Atomare Token-Erstellung und -Übertragung

Die Funktion mintAndSend kombiniert die Erstellung und sofortige Übertragung eines Tokens in einem einzigen Schritt. Dies ist besonders effizient, da keine zusätzliche Merkle-Prüfung erforderlich ist:

export circuit mintAndSend(
  amount: Uint<64>,
  recipient: Either<ZswapCoinPublicKey, ContractAddress>
): ShieldedSendResult {
  const domain = pad(32, "shielded:token");
  const nonce = localNonce();
  
  // Token zunächst im Contract prägen
  const coin = mintShieldedToken(
    disclose(domain),
    disclose(amount),
    disclose(nonce),
    right<ZswapCoinPublicKey, ContractAddress>(kernel.self())
  );
  
  // Sofortige Übertragung ohne Merkle-Prüfung
  const result = sendImmediateShielded(
    disclose(coin),
    disclose(recipient),
    disclose(amount) as Uint<128>
  );
  
  totalSupply = (totalSupply + disclose(amount)) as Uint<64>;
  return result;
}

Das Ergebnis enthält sowohl die gesendete Münze als auch gegebenenfalls Wechselgeld.

Merkle-Baum-Integration für spätere Transaktionen

Während die mintAndSend-Funktion Token sofort übertragbar macht, erfordert die reguläre Übertragung von Tokens die Einbindung in den Merkle-Baum. Die Funktion transferShielded zeigt dies:

export circuit transferShielded(
  coin: QualifiedShieldedCoinInfo,
  recipient: Either<ZswapCoinPublicKey, ContractAddress>,
  amount: Uint<128>
): ShieldedSendResult {
  const result = sendShielded(
    disclose(coin),
    disclose(recipient),
    disclose(amount)
  );
  return result;
}

Hier wird eine QualifiedShieldedCoinInfo erwartet, die den mt_index enthält – einen Index im Merkle-Baum, der die Existenz des Tokens im aktuellen Zustand bestätigt.

Schritt 2: React-Oberfläche für die Interaktion mit Shielded Tokens

Die Implementierung des Smart Contracts bildet nur die Hälfte der Lösung. Für eine vollständige Benutzererfahrung benötigen Sie eine React-basierte Oberfläche, die folgende Funktionen bietet:

  • Anzeige des privaten Token-Bestands
  • Erstellung neuer Shielded Tokens
  • Übertragung von Tokens an andere Wallets
  • Verbrennung von Tokens

Die Oberfläche kommuniziert über die Midnight-DApp-Connector-API mit dem Netzwerk und nutzt die generierten Zero-Knowledge-Proofs für sichere Transaktionen. Ein zentraler Bestandteil ist das State-Management mit zustand, das die privaten Wallet-Daten verwaltet und mit dem Smart Contract synchronisiert.

Schritt 3: Zero-Knowledge-Proofs für die Sicherheit

Ein kritischer Aspekt der Shielded Tokens ist die Erzeugung und Überprüfung von Zero-Knowledge-Proofs. Diese Beweise stellen sicher, dass:

  • Der Sender tatsächlich über ausreichend Tokens verfügt
  • Die Transaktionsbeträge korrekt sind
  • Die Empfängeradresse gültig ist

Die Proof-Generierung erfolgt in der Wallet oder im DApp-Connector und wird gemeinsam mit der Transaktion an das Netzwerk gesendet. Die Verifizierung der Proofs erfolgt durch die Knoten im Midnight-Netzwerk, ohne dass sensible Daten offengelegt werden müssen.

Fazit: Shielded Tokens für die nächste Generation der Privatsphäre

Die Entwicklung von DApps mit Shielded Tokens auf dem Midnight-Netzwerk markiert einen wichtigen Schritt in Richtung datenschutzfreundlicher Blockchain-Technologien. Durch die Kombination von Compact Smart Contracts, Zero-Knowledge-Proofs und einer benutzerfreundlichen React-Oberfläche entsteht eine Lösung, die sowohl Entwicklern als auch Endnutzern neue Möglichkeiten eröffnet.

Die hier vorgestellten Konzepte und Code-Snippets bieten einen fundierten Einstieg in die Entwicklung solcher Anwendungen. Mit fortschreitender Reife des Midnight-Ökosystems werden weitere Optimierungen und Erweiterungen möglich sein – insbesondere in den Bereichen Skalierbarkeit und Benutzerfreundlichkeit.

KI-Zusammenfassung

Midnight blok zincirinde gizli token uygulaması oluşturmanın püf noktalarını keşfedin. Compact sözleşme, ZK-proofs ve React arayüzüyle adım adım rehber.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #OUBGTV

0 / 1200 ZEICHEN

Menschen-Check

2 + 7 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.