Under Construction This DApp is in development

Functional Capabilities

OmniSocial integrates creator-first social features directly into smart contracts to enable on-chain monetization, supporter interactions, and token-gated content.

These features are modular and composable, allowing developers and creators to build flexible monetization experiences across the platform.

💸 Tipping System

The tipping system allows users to send any ERC-20 or native tokens directly to a creator’s smart wallet.

✅ Smart Contract: TippingModule

Key Function:

function tip(address recipient, address token, uint256 amount, string memory message) external payable;
  • recipient: OmniWallet address of the content creator

  • token: Address of ERC-20 (or address(0) for native MATIC)

  • amount: Amount of tokens or ETH sent

  • message: Optional supporter note

🔔 Event:

event TipSent(address indexed sender, address indexed recipient, address token, uint256 amount, string message);

Example Use:

tipping.tip(creatorAddress, address(0), 0.1 ether, "Love your work!");

Tipping can be triggered via UI buttons on posts or profiles.

🔓 Token-Gated Content

Creators can require users to own a specific token or NFT to unlock content.

Smart Logic:

  • Off-chain content URL is encrypted.

  • Viewer sends a zero-cost tx to verifyAccess(address contentId) to prove NFT/token ownership.

  • Backend or frontend decrypts content if the call succeeds.

✅ Access Check Hook:

function hasAccess(address user, bytes32 contentId) public view returns (bool);

contentId links to metadata with required token addresses and minimum holdings.

🖼️ EditionDropFactory (ERC-1155)

Creators can launch limited-edition token drops with built-in access control, pricing, and whitelist support.

✅ Smart Contract: EditionDropFactory

Function: createEditionDrop(...)

function createEditionDrop(
  string memory name,
  string memory symbol,
  string memory baseURI,
  uint256 pricePerToken,
  uint256 maxSupply,
  address paymentToken,
  address[] calldata whitelist
) external returns (address dropAddress);
  • name/symbol: NFT collection metadata

  • baseURI: Metadata template (e.g. ipfs://.../metadata/{id}.json)

  • pricePerToken: Cost per NFT

  • maxSupply: Total supply

  • paymentToken: Token accepted (ERC-20 or address(0))

  • whitelist: Optional allowlist (can be empty)

🔧 Configure a Drop: Example

dropFactory.createEditionDrop(
  "Creator Drop",
  "DROP",
  "ipfs://Qm123abc/",
  10e18, // 10 OMNI
  100,
  OMNI_TOKEN_ADDRESS,
  [0xUser1, 0xUser2]
);

After deployment, the creator can share the drop link. Users who mint are automatically granted access to gated content tagged to that edition.

🧠 Best Practices

  • Use .omni aliasing in UI to simplify addresses for both tips and drops.

  • Combine tipping + edition drops for "support to unlock" campaigns.

  • Subgraph indexing allows querying all TipSent or EditionDrop events to build analytics dashboards.

📊 Subgraph Query (Recent Tips)

query GetRecentTips {
  tipSents(first: 10, orderBy: timestamp, orderDirection: desc) {
    sender
    recipient
    token
    amount
    message
  }
}

Last updated

Was this helpful?