avatarMehak Adlakha

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

2023

Abstract

overy system delivers a seamless user design with the high accessibility users have come to expect. If a user forgets their password on Mogul, they go through a familiar front-end experience similar to resetting an email or social media password. They click on a ‘Forgot Password’ button, a link is sent, they receive an email, click the link, and the password is reset. However, on the back-end, Mogul built a smart wallet system using smart contracts for decentralized wallet recoverability. When users reset a wallet, they actually create a new authentication wallet that is programmed to have the capabilities of interacting with the smart wallet. Yet, on the front-end to the user, it looks like a simple password reset.</p><ul><li><b>Manual Transaction Signatures Eliminated:</b></li></ul><p id="f765">Users can send free and frictionless transactions within the platform without manual signatures. When you use other DeFi wallets, you generally have to interact with a Web 3 interface to manually confirm a transaction and pay a costly gas fee, especially as the network congests. For example, with Metamask and Web3, a user needs to give permissions to access their wallet and then the user needs to confirm the transaction:</p><figure id="5453"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*2Mf9SQSXGWdh9ndV"><figcaption></figcaption></figure><p id="333b">This process would need to happen for each action on Mogul. Not everyone who could benefit from Mogul’s technology is able to understand the nuances involved in a blockchain transaction, so Mogul offers sponsored, frictionless in-platform actions.</p><p id="5ebc">While other wallets require tech-savviness just to maneuver around, Mogul has re-engineered an incredibly complex system in a very simple way.</p><h1 id="8d0a">Smart Wallet Recovery Done Right</h1><figure id="ec20"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*DL3FUoeScVR5WMIa"><figcaption></figcaption></figure><p id="c212">Our wallet recovery process u

Options

ses the Mogul Guardian by default, which allows for safe and secure decentralized recoverability. This system provides a user with a new authentication wallet through a standard password reset flow.</p><p id="4c95">The system delivers a new authentication wallet to communicate with user funds.</p><p id="c638">A Mogul user can choose between using the default Mogul Guardian system, or reset their guardian(s) to their preference where more than one Guardian can be chosen. Guardians could be friends, hardware wallets, or a mixture of both. Thus, users can create a multi-channel authentication system for decentralized password and key recovery.</p><p id="c957">For example, if a user doesn’t want to use the Mogul Guardian, that user can designate Tracy (or Tracy, Bob, and Alice) as the guardian(s) and thereby make them the only entity that can change the authentication wallet, requiring their wallet’s permissions to do so.</p><p id="732c">The film industry can benefit from the Mogul Smart Wallet because it is easy-to-use and does not require the tech know-how that was asked from previous generations of blockchain wallets.</p><p id="a531">Mogul removes major points of friction to deliver a seamless end-user experience that makes using blockchain technology feel as natural as using the Internet when browsing the web.</p><p id="eaf7">We are always listening to our users. We welcome suggestions and feedback through our <a href="https://mogulproductions.com/contact">contact page</a>.</p><p id="c69c"><b>ABOUT MOGUL PRODUCTIONS (MOGUL)</b> <i>Mogul Productions, established 2019, is a blockchain-based film financier and production company with a presence in Canada, the United States of America and Europe.</i></p><p id="ed5a"><i>The Mogul platform connects contributors, film industry professionals and fans through technology that allows all users to engage and participate with each project throughout theirs entire lifecycle, from financing through to production and distribution.</i></p></article></body>

Exploring Beyond SOLID: A Dive into Essential Software Design Principles 🚀💻

💡 Did you know that when it comes to Design Principles, it’s not just about SOLID? Recently I came across so many more and decided to share them with everyone to enhance our Software Engineering skills! 🚀💻

1. SOLID Principles Revisited:

  • S — Single Responsibility Principle: A class should have only one responsibility to improve refactoring and code clarity.
  • O — Open-Closed Principle: Design software entities to be open for extension but closed for modification, allowing for flexibility without breaking existing code.
  • L — Liskov Substitution Principle: Subtypes should be substitutable for their base types, ensuring consistency and compatibility.
  • I —I nterface Segregation Principle: Clients should not be forced to depend on interfaces they don’t use to promote modularity and reduce coupling.
  • D — Dependency Inversion Principle: Depend on abstractions, not concrete implementations, to achieve loose coupling and flexibility.

2. Beyond SOLID: More Design Principles to Embrace 🌟

  • KISS (Keep It Simple, Stupid): Embrace simplicity in system design to keep code clean and easy to understand.
  • DRY (Don’t Repeat Yourself): Eliminate code duplication through abstraction and common code encapsulation.
  • YAGNI (You Ain’t Gonna Need It): Avoid adding unnecessary functionalities, focusing on delivering what’s required.
  • Composition over Inheritance: Favor object composition for flexibility, reusability and improved testability.
  • LoD (Law of Demeter/Principle of Least Knowledge): Limit an object’s knowledge to reduce coupling, promoting modular designs.
  • POLA (Principle of Least Astonishment): Design software to align with user expectations, ensuring intuitive and predictable behaviour.
  • SoC (Separation of Concerns): Divide the system into distinct parts, each responsible for a specific concern, improving code organization and maintenance.
  • DI (Dependency Injection): Inject dependencies from the outside, promoting loose coupling, testability and reconfigurability.
  • Law of Conservation of Complexity: Acknowledge that complexity cannot be eliminated but can be managed and distributed effectively.
  • CQS (Command-Query Separation): Separate methods into commands (modification) and queries (retrieve information) to enhance code clarity and maintainability.
  • Principle of Modularity: Design software as independent, self-contained modules for improved understanding, maintainability, and testing.
  • Principle of Abstraction: Hide implementation details, providing high-level concepts for ease of understanding and use.
  • Principle of Encapsulation: Conceal the internal state of objects, enhancing robustness and maintainability.
  • Principle of Low Coupling & High Cohesion: Minimize dependencies between modules (coupling) and ensure strong internal focus within each module (cohesion).

Quick Question for You:

Which design principles have you seen violated the most? Share your thoughts and experiences in the comments.

📚 Recommended Reading:

  1. Software Design Principles: DRY, YAGNI
  2. A Quick Intro to Dependency Injection
  3. Software Design Principles: Abstraction, Extensibility, Cohesion
  4. Favouring Composition Over Inheritance in Java
  5. Design Principles: Favor Composition Over Inheritance

Thank me later. 😊

Software Development
Technology
Programming
Professional Development
Women In Tech
Recommended from ReadMedium