Technical
Smart Contracts
All ArcaneFi core functionality runs through smart contracts deployed on Arc. Addresses are publicly verifiable on Arcscan at testnet.arcscan.app.
| Contract | Standard | Purpose |
|---|---|---|
| NFTFactoryV2 | Custom | Deploys ERC-721 collections for users. Maintains a registry of all collections via getAllCollections(). Used by the NFT Gallery scanner. |
| MarketplaceV2 | Custom | All listings, purchases, and offer logic. Enforces 2.5% platform fee and creator royalties. Atomic USDC β NFT swaps. |
| NFTCollectionV2 | ERC-721 | Template for each user collection. tokenURI, totalSupply, maxSupply, mint, ownerOf, tokenOfOwnerByIndex. |
| ArcFiSBT | ERC-5192 | Soulbound 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_KEYVerifying 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.