Erstellen einer sicheren Architektur und eines Auszahlungsprozesses

Ich habe hier viele wertvolle Fragen und Antworten studiert, aber ich habe immer noch einige Zweifel.

Fall - einfaches Spiel (beruhigen Sie sich - ich bin keiner der Neulinge, die einen Austausch erstellen, wie hier zu sehen ist), mit dem Sie für ein Spiel bezahlen können. Der Charakter des Gameplays zwingt uns dazu, für jeden Spieler ein virtuelles Gleichgewicht zu schaffen und Auszahlungen auf täglicher Basis/Anfrage zu erstellen.

Was ist getan:

  • Der kompilierte Bitcoin-Client läuft auf einer verschlüsselten Brieftasche im Hintergrund
  • Anlegen eines Adresspools im Voraus
  • Zuweisung einer kostenlosen Adresse an registrierte Benutzer
  • auf eingehende Transaktionen/Bestätigungen warten
  • Bei der 6. Bestätigung fügen wir die Transaktion dem Benutzerguthaben hinzu

Wo ich Anleitung / professionelle Beratung benötige:

  • Entfernen Sie meinen laufenden Bitcoin-Client mit Brieftasche davon, private Schlüssel zu halten (ich habe darüber gelesen, weiß aber nicht, wie ich es richtig erreichen soll)
  • Viele Anleitungen raten, den Bitcoin-Client auf einem anderen Computer auszuführen - aber wie richtet man eine sichere Kommunikation zwischen zwei Computern ein (VPN?), Wenn jemand Zugriff auf den Spieleserver erhält, spielt es keine Rolle, wo sich der Client befindet (richtig?)
  • Da private Schlüssel gespeichert werden, wie kann ich mit Auszahlungsanfragen umgehen? Gibt es bekannte Praktiken in diesem Bereich? Ich habe https://bitcoinsecurityproject.org/SecureApplicationArchitecture/ gelesen , kann mir aber kein Beispiel/Prozess aus der realen Welt vorstellen

Zu guter Letzt – wenn Benutzer Coins an private Adressen senden, die in einer Brieftasche erstellt wurden, welcher private Schlüssel sollte eine Transaktion signieren? Wie Sie wahrscheinlich sehen, bin ich nach der Recherche hier mit einigen "Grundlagen" verwirrt :)

BEARBEITEN

Ich habe Schritte gefunden, um Transaktionen offline zu signieren ( http://people.xiph.org/~greg/signdemo.txt ). Ist dies in realen Apps vorzuziehen?

Antworten (1)

Sie werden ein paar lustige Sachen machen, wenn Sie ein komplexes System brauchen.

Der einfache Weg

Verwenden Sie einfach Bitcoind zusammen mit seinen walletnotifyArgumenten blocknotify. Siehe hier. Sobald Sie eine walletnotify erhalten, speichern Sie diese in einer Datenbank und vergewissern Sie sich, dass txid eindeutig ist. Walletnotify wird während der Lebensdauer einer Transaktion mehrmals ausgelöst. Überprüfen Sie die Datenbank in jedem Block und suchen Sie nach unverarbeiteten Transaktionen mit 6 Bestätigungen. Diejenigen, die dies tun, sollten als "bearbeitet" markiert oder aus der Datenbank gelöscht werden.

Der Hardcore-Weg

Wenn Sie die Funktionalität wie beschrieben benötigen. Erwägen Sie die Verwendung einer der vielen Bibliotheken, die einige Bitcoin-Features und -Funktionen implementieren. Schauen Sie sich Bitcoinj (Java), Libbitcoin (C++), Gocoin (Go) und die vielen Python-Bibliotheken an, die über die Suche gefunden werden können. Diese Bibliotheken können es viel einfacher machen, einen feiner kontrollierten und spezialisierten Knoten zu betreiben.

Danke für den Input, Zahlungseingänge haben wir bereits erledigt. Ich habe die größten Zweifel, wenn es um Auszahlungen geht, bei denen hohe Sicherheit ein Muss ist ...
Mein Fehler, aber Auszahlungen sind auf der Bitcoin-Seite schwer zu spielen, sobald Sie Ihre Transaktion vorantreiben, ist es ein abgeschlossenes Geschäft. Achten Sie jedoch auf Dinge wie Rennbedingungen, bei denen ein Benutzer Ihnen in einem kurzen Zeitrahmen Hunderte von Anfragen senden kann. Stellen Sie sicher, dass Ihre Datenbank und Ihr Code diese atomar verarbeiten.