Search projects, hackathons, sponsors and tech

    ← All projects

    ORDAO Fractal App: Onchain Democratic Coordination

    Democratic Community Decisions, Onchain Execution

    Demo

    About

    The problem it solves ORDAO Fractal App solves the critical problem of making decentralized governance both accessible and effective for communities. Communities seeking to coordinate their actions on blockchain face a fundamental challenge: how to make decisions together without relying on centralized authorities. Traditional voting systems require high participation to be secure, yet most communities struggle with voter apathy. This creates an impossible choice between operational paralysis or security compromises. ORDAO addresses this through an innovative approach called [OREC (Optimistic Respect-based Executive Contract)](https://github.com/sim31/ordao/blob/main/docs/OREC.md). Instead of requiring majority participation for every decision, it allows proposals to proceed with minimal support unless explicitly rejected by the community. This enables: 1. **Efficient operations** even when most members are passive, as routine decisions can move forward quickly 2. **Robust security** as contentious proposals can be easily blocked during a dedicated veto period 3. **True decentralization** by eliminating the need for trusted operators or multisig arrangements The system came about out by solving a real need for onchain communities, called “fractals” which play the Respect Game to distribute an onchain token called Respect. The resulting system could be used by any DAO which has a non-transferrable reputation-like token. ORDAO has already been used by the Optimism Fractal community for more than 6 months now, but so far it had to rely on complex command-line interfaces for most of its features. The new ORDAO frontend, with it’s intuitive graphical user interface, now makes this system easily accessible to all! It provides a governance interface that enables decentralized communities to execute onchain actions democratically, overcoming voter apathy while maintaining high security and liveness. By solving both the governance mechanism challenge and the accessibility barrier, ORDAO Fractal App enables truly democratic coordination for decentralized communities in a way that's practical, secure, and inclusive.

    How it's made

    Challenges we ran into Page initialization involves several moving parts. On the homepage, the proposal list must load by fetching data from both the blockchain node (RPC endpoint) and a backend service (a NodeJS app) that stores off-chain metadata (hashed on-chain). The orclient library I built handles this process, but it needs to know RPC endpoint to be initialized. If the user is logged in, we want to use the wallet-provided RPC endpoint to reduce trust requirements. But if the user isn’t logged in, we still show the proposal list (with limited interactivity), using a fallback endpoint configured in the app. The challenge is that during page load, Privy (auth/wallet provider) takes some time to initialize and sometimes even reporting a user as authenticated while failing to return a wallet object. This makes synchronizing wallet detection, orclient initialization, and proposal loading tricky—we want the user to always see a meaningful app state. The solution includes: - [React Provider pattern](https://medium.com/@vitorbritto/react-design-patterns-provider-pattern-b273ba665158) to create orclient provider that takes care of initializing the right orclient object; - It waits for wallet connection from privy for a couple of seconds and initializes orclient as soon as it is received. If it is not received backup orclient (with pre-configured RPC endpoint) is used; - [Tanstack Router’s data loading](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading) to show "Loading" component at appropriate times. It also adds a caching layer, so that user sometimes is shown old data while new one is retrieved. - [Tanstack Router’s context features](https://tanstack.com/router/latest/docs/framework/react/guide/router-context) and helper components ensure the right type of orclient is used by downstream components—or show alternatives when not available.