Ein Casino-Backend, das Slots, Live Dealer und Tischspiele von vielen Providern anbindet, braucht eine einzige Aggregationsschicht: vom Betreiber vergebene Sessions, Guthaben-Callbacks, die Retries und Rollbacks überstehen, Runden, die möglicherweise nach der Session abgeschlossen werden, und einen täglichen Abgleich mit dem eigenen Report jedes Providers. Hier steht, wie diese Schicht aufgeteilt ist und wo Provider-Integrationen üblicherweise brechen.
Ein Betreiber, der sein eigenes Casino-Backend baut und Slots, Live Dealer und Tischspiele von vielen Providern anbindet, hat am Ende so viele Integrationsverträge wie Provider: unterschiedliche Start-Flows, unterschiedliche Wallet-Aufrufe, unterschiedliche Vorstellungen davon, was eine Runde ist. Die Aggregationsschicht macht daraus einen einzigen internen Vertrag, sodass Wallet, Lobby, Boni, Limits und Reporting einmal geschrieben werden und jeder Provider an sie angepasst wird.
Was folgt, zeigt, wie diese Schicht üblicherweise aufgeteilt ist: was beim Provider bleibt, wie Sessions vergeben werden, wie Guthaben-Callbacks Retries und Rollbacks überstehen, wie Runden erfasst werden, wenn sie nach der Session abgeschlossen werden, und wie das Ergebnis mit den eigenen Zahlen des Providers abgeglichen wird.
Die kurze Antwort ist ein interner Vertrag mit einem Adapter pro Provider. Der Betreiber vergibt die Session; jede Belastung, jede Gutschrift und jedes Rollback trägt die Transaktions-ID des Providers als Idempotenz-Schlüssel, abgegrenzt nach Provider und Aufruftyp; ein Rollback für eine Transaktion, die die Wallet nie gesehen hat, wird gespeichert, sodass ein verspätetes Original abgelehnt wird; Runden werden als Zustand erfasst, der nach dem Ende der Session abgeschlossen werden kann; und der eigene Report jedes Providers wird jeden Tag gegen das Wallet-Ledger abgeglichen.
Der Provider betreibt das Spiel: Zufallszahlengenerierung, Spielmathematik, der Spiel-Client und seine Zertifizierung durch ein Prüflabor. Der Betreiber behält alles, was den Spieler und das Geld berührt: Identität, Guthaben, Limits, Boni, die Lobby und die Aufzeichnungen, die eine Aufsichtsbehörde oder ein Streitfall mit einem Spieler verlangen kann. Die Aggregationsschicht sitzt dazwischen und sollte der einzige serverseitige Code sein, der die API des jeweiligen Providers spricht.
Provider werden auf eine von zwei Arten an das Geld eines Betreibers angebunden. Bei einer Seamless Wallet bleibt das Guthaben beim Betreiber, und der Provider ruft für jeden Einsatz und jeden Gewinn die Wallet des Betreibers auf. Bei einer Transfer Wallet überträgt der Betreiber vor dem Spiel Geld in ein Guthaben, das auf der Seite des Providers geführt wird, und überträgt es erst zurück, wenn er es anfordert.
Der Rest dieses Artikels geht von einer Seamless Wallet aus, weil dort jeder Einsatz und jeder Gewinn ein Wallet-Aufruf ist.
Ein Spielstart beginnt auf der Seite des Betreibers. Das Backend prüft, ob dieser Spieler dieses Spiel jetzt spielen darf, was den Kontozustand, die Selbstsperre, Limits und die Frage umfasst, ob das Spiel in der Jurisdiktion des Spielers angeboten werden darf. Danach erzeugt es eine Session, die an den Spieler, das Spiel und die Währung gebunden ist, und übergibt dem Provider beim Start ein opakes Token. Wenn der Server des Providers zurückruft, identifiziert dieses Token, um wessen Guthaben es bei dem Aufruf geht.
Veröffentlichte Dokumente für Betreiber sagen das deutlich. Die Wallet-API von Hub88 sagt, dass die Token-Gültigkeit bei Gewinnen und Rollbacks nicht validiert werden darf, da diese eintreffen können, nachdem der Einsatz gespielt wurde. VeliGames sagt, dass der Betreiber den Gewinn einer Runde nicht ablehnen darf, auch wenn die Session abgelaufen ist.
Jeder Aufruf zwischen zwei Servern kann in ein Timeout laufen, nachdem die Arbeit auf der anderen Seite erledigt war. Der Provider kann eine fehlgeschlagene Belastung nicht von einer Belastung unterscheiden, deren Antwort verloren gegangen ist, also wiederholt er den Aufruf oder storniert die Transaktion. Aufgabe der Wallet ist es, beides sicher zu machen.
Veröffentlichte Integrationsdokumente zeigen, wie hartnäckig die Wiederholungen sind. Die Betreiber-Wallet-API von Hub88 wertet einen Einsatz als fehlgeschlagen, wenn sie kein HTTP 200 erhält, erzeugt ein Rollback und wiederholt dieses Rollback bis zu 500-mal mit exponentiellem Backoff. Gamomat wiederholt eine fehlgeschlagene Request zweimal im Abstand von 500 ms, startet dann ein Rollback und wiederholt es in Intervallen, die von einer Sekunde auf 30 Minuten anwachsen. Das Wallet-Timeout von Tom Horn Gaming beträgt 10 Sekunden, danach wird automatisch ein Rollback gesendet. Eine Wallet, die einige Minuten ausfällt, trifft bei ihrer Rückkehr auf eine Queue aus Wiederholungen und Rollbacks, nicht auf Stille.
Auch die erwartete Antwort auf eine Wiederholung folgt keinem Standard. Hub88 verlangt, dass Requests mit derselben Transaktions-ID nicht zweimal verarbeitet werden und dass die Antwort für alle Duplikate dieselbe ist; VeliGames fordert einen Fehler mit HTTP status 409 und DUPLICATE_TRANSACTION; Tom Horn Gaming hat einen separaten Ergebniscode für eine doppelte Referenz. Der Adapter antwortet jedem Provider in dessen eigener Form, und das Ledger darunter bleibt dasselbe.
Das Rollback einer unbekannten Transaktion lässt sich leicht falsch umsetzen. Wenn die Wallet nichts festhält, trifft eine Belastung, die unterwegs nur verzögert wurde, einen Moment später ein und ist erfolgreich, und der Spieler zahlt für einen Einsatz, den der Provider bereits storniert hat. Das Rollback zuerst zu speichern und unter dem Konto-Lock der Belastung darauf zu prüfen, schließt diese Lücke.
Provider halten diese Regel in ihren eigenen Dokumenten fest. Die Betreiber-API von St8 sagt: Erhält der Betreiber eine Transaktions-ID für eine Stornierung, die er zuvor nicht verarbeitet hat, muss die ID gespeichert werden, um zu verhindern, dass sie später verarbeitet wird. Tom Horn Gaming erwartet den eigenen Ergebniscode für unbekannte Transaktionen, wenn die Wallet die Abbuchung, auf die sich ein Rollback bezieht, nie verarbeitet hat.
Eine Runde ist die Spieleinheit des Providers, und sie entspricht selten einer einzelnen Transaktion. Ein Slot-Spin ist oft eine Belastung und eine Gutschrift, manchmal in einem einzigen Aufruf gesendet. Blackjack kann Belastungen für einen Split oder ein Verdoppeln hinzufügen. Live-Roulette nimmt während einer Setzphase Einsätze vieler Spieler an und rechnet sie alle ab, sobald das Ergebnis feststeht. Freirunden können eine Serie von Gewinnen erzeugen, die zusammengehören.
Die Rundenhistorie ist das, womit ein Streitfall mit einem Spieler beigelegt wird. Führen Sie jede Ledger-Buchung mit dem Provider, dem Spiel, der Runde, den Beträgen, dem Guthaben davor und danach sowie zwei Zeitstempeln, dem des Providers und dem der Wallet, und verlinken Sie die eigenen Rundendetails des Providers, wo seine API sie anbietet. Damit wird eine Frage zum Geld in einem Spin aus den Aufzeichnungen beantwortet.
Aufsichtsbehörden legen das Minimum fest, das diese Historie abdecken muss. GLI-19, der Standard für interaktive Glücksspielsysteme von Gaming Laboratories International, verlangt für den Spieler eine Game-Recall-Funktion, entweder als Nachstellung oder als Beschreibung. Die technischen Standards der britischen Glücksspielbehörde (UK Gambling Commission) für Remote-Glücksspiel verlangen mindestens drei Monate Konto- und Spielhistorie ohne Kontaktaufnahme mit dem Lizenzinhaber und mindestens 12 Monate auf Anfrage. Die Spielerschutzrichtlinie der maltesischen Glücksspielbehörde (Malta Gaming Authority) gibt dem Spieler Zugang zu seiner Spielhistorie der unmittelbar vorangegangenen sechs Monate.
Slots verteilen die Last über die Zeit, weil jeder Spieler seine Spins in seinem eigenen Takt auslöst. Live-Dealer-Tische synchronisieren die Spieler: Die Einsätze aller Spieler an einem Tisch treffen in den Sekunden vor dem Ende der Setzphase ein, und die Gewinne aller treffen gemeinsam ein, sobald das Ergebnis feststeht. Ein beliebter Tisch wiederholt das für jeden Spieler, der gesetzt hat.
Adapter sind der Ort, an dem die Unterschiede zwischen Providern leben, und sie sollten der einzige Ort dafür sein. Jeder Adapter übernimmt:
Der interne Vertrag bleibt klein: eine Session öffnen, das Guthaben lesen, belasten, gutschreiben, in einem Aufruf belasten und gutschreiben, ohne Einsatz auszahlen, ein Rollback ausführen, eine Runde abschließen und ein fester Satz von Fehlern, die die Wallet zurückgeben kann. Ein neuer Provider ist dann ein Adapter und eine Testsuite, selten eine Änderung an der Wallet.
Jeder Provider führt eigene Aufzeichnungen über jede Runde und stellt dem Betreiber auf dieser Grundlage Rechnungen. Das Ledger der Aggregationsschicht ist die Betreiberseite desselben Geldes. Gleichen Sie beide jeden Tag ab, nach Tagesgrenze und Zeitzone des jeweiligen Providers, pro Provider, Währung und Spiel:
Wie lange diese Nachweise aufbewahrt werden müssen, ist Teil der Integration. Hub88 fordert, dass jede Transaktions-ID zu Abgleichszwecken auf beiden Seiten mindestens vier Monate lang gespeichert wird, und die Betreiber-API von Gamomat liefert Abgleichsdaten für einen Datumsbereich oder für eine einzelne Runde.
Auf die Frage gibt es drei Arten von Antworten, und sie verkaufen verschiedene Dinge. Aggregatoren und Plattformanbieter vermieten dem Betreiber ihre Schicht: ein Vertrag, viele Provider, ihre kommerziellen Konditionen. Turnkey- und White-Label-Plattformen enthalten die Schicht innerhalb einer Plattform, die dem Anbieter gehört. Engineering-Firmen bauen die Schicht im Backend des Betreibers, und der Betreiber schließt seine Provider-Verträge selbst ab.
Mit welcher Art Sie auch sprechen, diese Fragen zeigen, ob ein Team das schon einmal gebaut hat:
Eine Antwort, die bei den ersten beiden allgemein bleibt, heißt, dass die Sonderfälle in Produktion gefunden würden.
amBrain ist ein Softwareentwicklungsunternehmen mit Spezialisierung auf Trading-Plattformen, Matching Engines, Real-Time-Bidding-Systeme und Casino-Plattform-Engineering. amBrain entwickelt seit 2019 Software.
Im iGaming sind die Zahlen, die amBrain als gemessen veröffentlicht, 500+ Integrationen von Drittanbietern und 12 Betreiber im Live-Betrieb.
amBrain arbeitet in drei Formaten: vollständige Umsetzung, ein dediziertes Team oder in Ihr Team eingebettete Entwickler. Der Kunde behält das volle Eigentum an Produkt und Code, ausgenommen die wiederverwendbaren Komponenten von amBrain.
Dieser Artikel erklärt, wie eine Aggregationsschicht funktioniert; er ist keine Case Study und nennt keine Kunden.
Die erste Entscheidung ist also nicht, welche Provider unter Vertrag genommen werden. Es ist der interne Vertrag, an den jeder Provider angepasst wird, mit seinen Fehlerfällen schriftlich festgehalten, bevor der erste Adapter existiert.
Bringen Sie Ihre aktuelle Architektur und den Fehlerfall mit, der Sie beunruhigt - wir gehen ihn in einer halben Stunde gemeinsam durch.