본문으로 건너뛰기

Contract Reference

v1.2 soToken Contracts

v1.2 introduces the new soToken family:

ContractPurpose
SoTokenNativeV1_2ERC-20-compatible token plus LOA/BOA object ledger
SoTokenFactoryV1_2Launches native LOA/BOA contracts
SoTokenMarketV1_2Lists and sells active transferable objects
SoTokenITOInitial Token Offering for native soTokens
SoTokenMediaStorageV1_2Stores 50 KB on-chain media items
SoTokenRendererV1_2Returns metadata for image, animation, audio, and markdown objects

Base mainnet v1.2

ContractAddress
SoTokenFactoryV1_2Set after deploy
SoTokenMarketV1_2Set after deploy

Base Sepolia v1.2

ContractAddress
SoTokenFactoryV1_2Set after deploy
SoTokenMarketV1_2Set after deploy

Legacy BOA Contracts

The following deployed contracts remain supported as legacy BOA/BPeg infrastructure.

Base mainnet

ContractAddress
BpegFactoryV40xe3280D564f3248A532539365DcaCc3281791CD6A
BpegMarketV40xB16A75FD6D36360a6C370f86c2b6cBEfF7E7d859
BpegDefaultSeedModule0xd907FB49C092942c3c69fEB28498E5FBdd0b33fE
BpegUniswapV4SeedModule0xBE695E965cC464198B660fE38B4924a923752585
BpegNativeTokenDeployer0xaeD2c62C329774Ba57c773473B4bC1D1e27898E1
EpegLedgerDeployer0xC26a28d240fb344C26b9F15cfc3487FB15523fB1
Treasury0x3F40459c71e3BD0A8fE7952ED47DEDcfd8C279FC

Base Sepolia

ContractAddress
BpegFactoryV40x182796ccD77a601923c3945B1FaeB8E929a80f06
BpegMarketV40x65F35D2c8c4E299AA5575C34Bc02A9134D7efb9e
BpegDefaultSeedModule0xc001826EbE807A72d5795944dE3Bf266b5feC290
BpegUniswapV4SeedModule0xCbf8a774236018dA0cb6656314a95E0db4787750
BpegNativeTokenDeployer0x7D9E661592F68e5136823C422Fc673f661a0927B

v1.2 Ledger Interface

Core reads and writes:

function objectState(uint256 objectId) external view returns (ObjectState);
function ownerOfObject(uint256 objectId) external view returns (address);
function objectURI(uint256 objectId) external view returns (string memory);
function claim(uint256 amount, bytes calldata context) external returns (uint256[] memory);
function claimFor(address owner, uint256 amount, bytes calldata context) external returns (uint256[] memory);
function transferObject(address to, uint256 objectId) external;
function transferObjectFrom(address from, address to, uint256 objectId) external;
function setObjectApprovalForAll(address operator, bool approved) external;
function isApprovedForObject(address owner, address operator, uint256 objectId) external view returns (bool);

Compatibility aliases such as ownerOfBpeg and transferBpegFrom exist where needed for older app/market integrations.

Legacy Factory

BpegFactoryV4 deploys legacy BOA/BPeg-native tokens.

function createNativeBpegToken(
string calldata name,
string calldata symbol,
uint256 initialSupply,
uint256 interval,
uint256 maxObjects,
address renderer,
address seedModule,
uint16 royaltyBps
) external returns (address ledger);

If seedModule is zero, the factory uses BpegDefaultSeedModule.

Ledger interface

Core reads and writes:

function supportedCount(address owner) external view returns (uint256);
function activeCapacity(address owner) external view returns (uint256);
function objectsOf(address owner, uint256 cursor, uint256 limit) external view returns (uint256[] memory);
function ownerOfBpeg(uint256 objectId) external view returns (address);
function objectURI(uint256 objectId) external view returns (string memory);
function claim(uint256 amount, bytes calldata context) external returns (uint256[] memory);
function claimFor(address owner, uint256 amount, bytes calldata context) external returns (uint256[] memory);
function sync(address owner) external returns (uint256 removedCount);
function transferBpeg(address to, uint256 objectId) external;
function transferBpegFrom(address from, address to, uint256 objectId) external;
function setBpegApprovalForAll(address operator, bool approved) external;
function setBirthHook(address hook, bool approved) external;

Marketplace

BpegMarketV4 lists and sells Mirage-native objects:

function list(address ledger, uint256 objectId, uint256 price) external returns (uint256 listingId);
function buy(uint256 listingId) external payable;
function delist(uint256 listingId) external;
function activeListingId(address ledger, uint256 objectId) external view returns (uint256);
function getFees(address ledger, uint256 objectId, uint256 price)
external view returns (uint256 protocolCut, uint256 royaltyCut, uint256 sellerCut);

The market calls transferBpegFrom, not ERC-721 transfer functions.

Renderers

Renderers implement:

function objectURI(
uint256 objectId,
uint256 seed,
address owner,
uint256 sourceBalance,
uint256 interval
) external view returns (string memory);

BpegLayeredRendererV4 supports weighted on-chain layers and configurable canvas/profile values.

Legacy addresses

Legacy contractAddress
V3 BpegFactory0x4D9639AB37a9cA00E80B4Aca198aC649d02995c4
V3 BpegRouter0x856255bC5D79AdA826C0B187078bD64bb4416795
V3 BpegMarketplace0x07AAEEa34a6Dfdd0D2A527bAa7d992Bb6504a40D
PixelCats proto-BOA0xD7800C338228a6eeb37cF74133732Fb6aE05915F
ClankerCats renderer0x2fE5bf2aB284bc71B261Ea6d32aaadfcA987Eeb8
ClankerCats ERC-7210xbE76Ce3cE0966fedA606fCF70884dae8FBaa7FCF
CLKCAT0x84a5637CcAC19250156e582c5bF7C01Eee151b07