Skip to main content
Early Stage - Not Production Ready

Build the future of
Smart Contracts

Smart Contract Oriented Programming for ERC-2535 Diamonds

A smart contract library for building diamond-based systems with an on-chain standard library of facets. Write code that's designed to be understood, maintained, and scaled.

Why Compose

Rethinking Smart Contract Development

Forget traditional smart contract design patterns. Compose takes a radically different approach with Smart Contract Oriented Programming.

Read First

Code written to be understood first, not just executed. Every facet is self-contained and readable top-to-bottom.

Diamond-Native

Built specifically for ERC-2535 Diamonds. Deploy facets once, reuse them across multiple diamonds on-chain.

Composition Over Inheritance

Combine deployed facets instead of inheriting contracts. Build complex systems from simple, reusable pieces.

Intentional Simplicity

Smart Contract Oriented Programming (SCOP) - designed specifically for smart contracts, not general software.

On-Chain Standard Library

Access verified, audited facets deployed on multiple blockchains. ERC-20, ERC-721, access control, and more.

Community-Driven

Built with love by the community. Join us in creating the standard library for ERC-2535 Diamonds.

Shared Storage Architecture

Facets and Libraries Working Together

Both facets and libraries access the same storage in your diamond. Your custom facets can extend Compose functionality without inheritance.

Facets

Complete, reusable implementations

Libraries

Helper functions for custom facets

Shared Storage

Both work with the same data

Learn More
GameNFTFacet.sol
// Your custom facet uses LibERC721
import {LibERC721} from "compose/LibERC721.sol";

contract GameNFTFacet {
    function mintWithGameLogic(
        address player,
        uint256 tokenId
    ) external {
        // Your custom game logic
        require(
            playerHasEnoughPoints(player),
            "Not enough points"
        );

        // Use LibERC721 - same storage!
        LibERC721.mint(player, tokenId);

        // Standard ERC721Facet functions
        // work seamlessly
        updatePlayerStats(player);
    }
}
MIT
Open Source
ERC-2535
Diamond Standard
17+
Contributors
Community
Built with Love

Ready to build with Compose?

Start creating modular, maintainable smart contracts with our comprehensive documentation.