Requirements Specification
(To be reviewed)
Principles
Modular Design: Each component should be designed as a separate module with clear interfaces and interactions. This allows for independent development and testing of each component, improving the maintainability and extensibility of the system.
Decentralized Architecture: Shaga's architecture should be decentralized to align with its P2P nature and blockchain integration. This means that there's no central server handling game streaming or transactions, and instead, each node (Shaga-Sunshine or Shaga-Moonlight) directly interacts with other nodes and the Solana blockchain.
Blockchain Integration: The system architecture should incorporate seamless interaction with the Solana blockchain. The design should ensure that blockchain transactions are securely and efficiently handled, and the system should respond appropriately to transaction confirmations and errors.
Scalability and Performance: The architecture should be designed for scalability and performance, ensuring that it can handle the growth in users and transactions over time without performance degradation.
Functional Requirements for Shaga:
User Authentication: The system must be able to verify user identities using Solana wallet public key addresses.
Game Discovery: The system must be capable of displaying available games hosted on Shaga-Sunshine nodes to users.
Connection Establishment: The system must securely establish a connection between Shaga-Moonlight clients and Shaga-Sunshine hosts.
Payment Transactions: The system must manage and record payment transactions for gaming sessions on the Solana blockchain.
Compressed NFT Renting: The system must manage the renting of compressed NFTs representing gaming sessions.
Reputation System: The system must enable users to rate their experience with Shaga-Sunshine hosts and record these ratings on the blockchain.
Staking Mechanism: The system must interact with Solana's staking mechanism.
Session Management: The system must manage the gaming sessions for connected Shaga-Moonlight clients.
Rental Management: The system should handle the creation, updating, and termination of rental agreements on the Solana blockchain.
Dispute Resolution: The system should provide a mechanism for resolving disputes between users.
Non-Functional Requirements for Shaga:
Security: Given the decentralized nature of the application and the involvement of financial transactions, security is paramount. The system must adhere to the best security practices to protect user data and financial transactions.
Scalability: The system must be designed to scale and accommodate an increasing number of users, hosts, and transactions.
Performance: The system should be able to process transactions and requests swiftly to provide an optimal user experience.
Reliability: The system must be reliable, ensuring minimal downtime and smooth operation.
Usability: The system must be user-friendly, with a well-designed interface that simplifies navigation and usage for users of different skill levels.
Interoperability: The system must be interoperable with various wallets, games.