/Docsv1.0Built on Arc Β· by Circle
Technical

Smart Contracts

All ArcaneFi core functionality runs through smart contracts deployed on Arc. Addresses are publicly verifiable on Arcscan at testnet.arcscan.app.

ContractStandardPurpose
NFTFactoryV2CustomDeploys ERC-721 collections for users. Maintains a registry of all collections via getAllCollections(). Used by the NFT Gallery scanner.
MarketplaceV2CustomAll listings, purchases, and offer logic. Enforces 2.5% platform fee and creator royalties. Atomic USDC ↔ NFT swaps.
NFTCollectionV2ERC-721Template for each user collection. tokenURI, totalSupply, maxSupply, mint, ownerOf, tokenOfOwnerByIndex.
ArcFiSBTERC-5192Soulbound Token. One deployment per milestone. Non-transferable. Treasury-only mint. revoke() for ToS violations.

ArcFiSBT Contract

The ArcFiSBT contract implements ERC-5192 (soulbound standard) on top of ERC-721. Each milestone gets its own deployed contract instance. The treasury wallet is the only address that can call mint().

Solidity Interface
// ERC-5192 Soulbound Token β€” one deployment per milestone
interface IArcFiSBT {
  // Mint one SBT to recipient β€” onlyOwner
  function mint(address recipient) external returns (uint256 tokenId);
  
  // Bulk airdrop β€” onlyOwner
  function batchMint(address[] calldata recipients) external;
  
  // Revoke (burn) a token β€” onlyOwner, resets hasClaimed
  function revoke(uint256 tokenId) external;
  
  // ERC-5192 β€” always returns true (non-transferable)
  function locked(uint256 tokenId) external view returns (bool);
  
  // Check if wallet has already claimed
  function hasClaimed(address wallet) external view returns (bool);
  
  // Get original recipient of a token
  function tokenRecipient(uint256 tokenId) external view returns (address);
  
  // Get block timestamp when token was minted
  function mintedAt(uint256 tokenId) external view returns (uint256);
}

Deploy Script (Foundry)

Each SBT milestone contract is deployed via Foundry with a parameterised script. Edit four constants at the top before each deploy:

Bash β€” Deploy Command
cd amm && source .env

forge script script/DeployArcFiSBT.s.sol \
  --rpc-url https://rpc.testnet.arc.network \
  --broadcast \
  --private-key $PRIVATE_KEY

Verifying Contracts

All deployed contracts can be inspected on Arcscan at https://testnet.arcscan.app. Paste any contract address to view deployment transactions, source code (if verified), and all contract interactions.