SummeSchool1

Workshopergebnis: “Smart Contracts: Token Creation with ERC20”

Von am 08.07.2024

Im Rahmen des Workshops “Smart Contracts: Token Creation with ERC20” während der Summer School 2024 wurde eine dezentralisierte Sportwetten-Plattform entwickelt, die auf der Ethereum-Blockchain basiert. Ziel des Projekts war es, eine sichere und transparente Wettumgebung zu schaffen, in der Nutzer Wetten auf Sportereignisse platzieren können, ohne einer zentralen Autorität vertrauen zu müssen.

Projektübersicht

Die Plattform besteht aus zwei Hauptkomponenten:

  1. Smart Contract: Implementiert in Solidity, um die Logik der Sportwetten und die Verwaltung der Wetten zu gewährleisten.
  2. Frontend: Erstellt mit Angular, um eine benutzerfreundliche Schnittstelle zur Interaktion mit dem Smart Contract bereitzustellen.

Implementierung des Smart Contracts

Zuerst muss man die einzelnen Komponenten des Smart Contracts erklären, um einen besseren Überblick zu haben. Diese sind:

struct Event {
        uint256 id;
        string name;
        uint256 betEndTime;
        bool isActive;
        uint256 totalBetA;
        uint256 totalBetB;
        uint256 totalBetDraw;
        address[] participantsA;
        address[] participantsB;
        address[] participantsDraw;
    }

    struct Bet {
        uint256 amount;
        uint8 outcome; // 0: not set, 1: BetA, 2: BetB, 3: Draw
    }

Ein Event bezieht sich auf ein Sportereignis, auf das man wetten kann. Hier sind die Variablen eines Events und eine Erklärung dazu:

  • id: Die Id ist ein Identifier, damit man die Events voneinander unterscheiden kann.
  • name: Dies ist der Titel eines Events
  • betEndTime: Der Endzeitpunkt eines Events. Dieser wird benötigt, damit man weiß, ab wann man nicht mehr auf das Event wetten kann.
  • isActice: Diese Variable speichert den Zustand des Events, ob es noch aktiv ist oder nicht.
  • totalBetXYZ: Diese Variablen werden benötigt, um die Summe der Ergebnisse zu speichern.
  • participantsXYZ: Diese Variablen speichern die Benutzer des jeweiligen getippten Ergebnisses.

Eine Bet ist eine Wette, dessen Variablen so aussehen:

  • amount: Der Betrag, mit dem gewettet wird.
  • outcome: Hier wird das Ergebnis gespeichert, auf das man gewettet hat.

Der Smart Contract wurde in Solidity geschrieben und umfasst folgende Hauptfunktionen:

  • createEvent(string memory _name, uint256 _duration) public onlyAdmin: Ermöglicht es dem Administrator, neue Sportereignisse zu erstellen. Hierbei wird der Endzeitpunkt bestimmte, indem der aktuelle Zeitpunkt mit der _duration (in Sekunden) addiert wird.
  • placeBet(uint256 _eventId, uint8 _outcome) public payable: Ermöglicht es Nutzern, Wetten auf ein bestimmtes Ereignis zu platzieren. Der Parameter _outcome spezifiziert das Ergebnis (Team A, Team B oder Unentschieden). Es kann nur ein Mal pro Nutzer auf ein Event gewettet werden und ein Event muss dabei noch aktiv sein und noch nicht vergangen sein.
  • closeEvent(uint256 _eventId, uint8 _outcome) public onlyAdmin: Schließt ein Ereignis und verteilt die Gewinne an die Gewinner basierend auf dem angegebenen Ergebnis. Dies kann nur der Administrator durchführen.

Frontend Integration

Die Frontend-Anwendung wurde mit Angular entwickelt und nutzt ethers.js, um mit dem Ethereum-Netzwerk zu interagieren. Nutzer können über die Anwendung Ereignisse erstellen, Wetten platzieren und Details zu den Ereignissen einsehen.

Die wichtigsten Schritte in der Angular-App:

  • Initialisierung von ethers.js und Verbindung zum Smart Contract.
  • Laden der vorhandenen Ereignisse und Darstellung in der Benutzeroberfläche.
  • Ermöglichung von Wetten durch Interaktion mit dem Smart Contract.

Entwicklungsumgebung

Die gesamte Entwicklung wurde in Visual Studio Code gemacht. Hierbei wurden unterschiedliche Bibliotheken und Tools verwendet. Hier eine Auflistung mit etwaigen Links:

Smart Contract

Frontend

MetaMask

Gemachten Erfahrungen

Positive Erfahrungen

  • Transparenz und Sicherheit: Durch die Verwendung der Ethereum-Blockchain konnten wir eine transparente und sichere Umgebung schaffen, in der alle Transaktionen nachvollziehbar sind.
  • Automatisierte Prozesse: Die Automatisierung der Wettannahme und der Gewinnausschüttung reduzierte menschliche Fehler und verbesserte die Effizienz.

Herausforderungen

  • Smart Contract-Entwicklung: Die Entwicklung des Smart Contracts erforderte eine genaue Kenntnis der Solidity-Syntax und der Sicherheitsbestimmungen, um sicherzustellen, dass der Vertrag sicher und fehlerfrei ist.
  • Blockchain-Integration: Die Integration der Blockchain-Technologie in die Angular-Anwendung war herausfordernd, insbesondere bei der Handhabung von asynchronen Aufrufen und der Sicherstellung, dass die Benutzeroberfläche stets aktuell ist.

Fazit

Darstellung der Erkenntnisse

  • Technische Kompetenz: Durch die Arbeit an diesem Projekt konnten wir tiefere Einblicke in die Blockchain-Technologie, insbesondere Ethereum und Solidity, gewinnen.
  • Integration von Frontend und Blockchain: Wir haben gelernt, wie man eine dezentrale Anwendung entwickelt, die eine nahtlose Integration zwischen einem Smart Contract und einer modernen Webanwendung gewährleistet.

Abschließende Bewertung der Arbeit

  • Erfolgreiche Umsetzung: Das Projekt wurde erfolgreich umgesetzt, und die Plattform erfüllt die Anforderungen an eine sichere und transparente Sportwetten-Umgebung.
  • Lernfortschritt: Die Arbeit an diesem Projekt hat erheblich zu unserem Verständnis der Blockchain-Technologie und der Entwicklung dezentraler Anwendungen beigetragen.

Weiterführende neue Fragen

  • Skalierbarkeit: Wie kann die Plattform skaliert werden, um eine größere Anzahl von Nutzern und Wetten zu unterstützen, ohne die Performance zu beeinträchtigen?
  • Benutzerfreundlichkeit: Welche zusätzlichen Funktionen könnten implementiert werden, um die Benutzerfreundlichkeit und Attraktivität der Plattform zu verbessern?
  • Regulierung und Rechtliches: Welche rechtlichen Herausforderungen könnten bei der Einführung einer dezentralen Sportwetten-Plattform in verschiedenen Ländern auftreten, und wie können diese bewältigt werden?

Anhang

Video von Projektergebnis (🇬🇧)

Projektergebnis

The comments are closed.