not connected
FRENT (beta) Building onchain tools

BUILDERS / DIRECT CHAIN READS

Builder RPC reference

Active FRENT collections are standard EVM contracts. Builders should read them directly through a chain RPC; FRENT does not need to sit between an application and public blockchain data.

Why there is no generic FRENT RPC proxy

A proxy would add another dependency, duplicate public RPC infrastructure, and require arbitrary-call abuse protection. Direct eth_call requests are read-only, require no wallet signature, and keep the contract as source of truth.

Collection reads

name() returns (string)
symbol() returns (string)
owner() returns (address)
maxSupply() returns (uint256)
totalMinted() returns (uint256)
launchTime() returns (uint64)
mintPrice() returns (uint128)
payoutWallet() returns (address)
feeRecipient() returns (address)
protocolFeePerPaidMint() returns (uint256)
metadataFrozen() returns (bool)
artworkCount() returns (uint256)
tokenURI(uint256 tokenId) returns (string)
tokenSVG(uint256 tokenId) returns (string)
attributesJSON(uint256 tokenId) returns (string)
contractURI() returns (string)

Read with viem

import { createPublicClient, http } from "viem";

const client = createPublicClient({ transport: http(chainRpcUrl) });
const totalMinted = await client.readContract({
  address: collectionAddress,
  abi: [{
    type: "function",
    name: "totalMinted",
    stateMutability: "view",
    inputs: [],
    outputs: [{ type: "uint256" }],
  }],
  functionName: "totalMinted",
});

Factory discovery

Each supported mainnet has its own FrentPixelArtFactory. Index the CollectionDeployed event to discover collections without depending on the FRENT database.

event CollectionDeployed(
  address indexed collection,
  address indexed owner,
  address feeRecipient,
  address payoutWallet,
  uint64 launchTime,
  uint128 mintPrice,
  uint256 protocolFeePerPaidMint,
  string name,
  string symbol,
  uint256 maxSupply
)

Writes stay wallet-signed

Deploying a collection, minting, changing the payout wallet, freezing metadata, or pausing minting are transactions. A builder should send those directly to the contract through the user's connected wallet. FRENT never accepts private keys through an API.

factory.deployCollection(...)
collection.mint(quantity)
collection.setPayoutWallet(wallet)
collection.setTokenDataBatch(tokenIds, svgs, attributesJson)
collection.freezeMetadata()
collection.pause()
collection.unpause()