🌎
Liquid Earth
  • What is Liquid Earth?
  • Smart Contracts
    • Overview
      • Integrated Project Intro and Business Proposition
      • Fantom Blockchain
      • The Role of Digital Assets
      • Token Supply
    • Smart Contracts Overview
      • Roles and Access Control within Liquid Earth Contracts
      • Fees
      • Payment System
      • Deployment Sequence
    • Smart Contract Repos
      • FantomAddressRegistry.sol
      • FantomArtion.sol
      • FantomAuction.sol
      • FantomBundleMarketplace.sol
      • FantomMarketplace.sol
      • FantomPriceFeed.sol
      • FantomTokenRegistry.sol
      • Verifiable.sol
Powered by GitBook
On this page
  1. Smart Contracts
  2. Smart Contract Repos

FantomBundleMarketplace.sol

Documentation for FantomBundleMarketplace.sol


Overview

The FantomBundleMarketplace contract facilitates the bundling and selling of multiple Digital Assets in a single transaction on the Fantom blockchain. It offers features such as creating bundles, listing them for sale, buying bundles, placing and accepting offers, and more.

Key Features

  • Creating Digital Asset bundles

  • Listing bundles for sale

  • Buying bundles

  • Placing offers on bundles

  • Accepting bundle offers

  • Cancelling listings and offers

  • Collecting platform fees in ERC20 tokens

  • Transferring bundles

  • Reentrancy prevention

Structs

  • Listing: Contains information such as the Digital Assets in the bundle, their quantities, and the price in ERC20 tokens.

  • Offer: Contains details about an offer made for a bundle, including the offered price in ERC20 tokens.

Mappings

  • listings: Maps the owner and bundle ID to a Listing struct.

  • owners: Maps a bundle ID to an owner's address.

  • offers: Maps a bundle ID and its creator to an Offer struct.

  • bundleIdsPerItem: Keeps track of which bundles contain a specific Digital Asset.

  • nftIndexes: Maps a bundle ID and a Digital Asset to its index within the bundle.

Events

  • ItemListed: Emitted when a new bundle is listed.

  • ItemUpdated: Emitted when a bundle's listing is updated.

  • ItemSold: Emitted when a bundle is sold.

  • OfferCreated: Emitted when a new offer is made.

  • OfferCanceled: Emitted when an offer is canceled.

Methods

  • listItem: Lists a new bundle for sale, collecting a listing fee in ERC20 tokens.

  • cancelListing: Cancels a bundle listing and refunds the listing fee in ERC20 tokens.

  • updateListing: Updates the price of a bundle listing.

  • buyItem: Purchases a listed bundle, transferring the price in ERC20 tokens.

  • createOffer: Makes an offer on a bundle, locking the offered ERC20 tokens.

  • cancelOffer: Cancels an existing offer and unlocks the offered ERC20 tokens.

  • acceptOffer: Accepts an offer on a bundle the caller owns, transferring the offered ERC20 tokens.

Access Control

  • Admin Only: Can update the address registry.

  • External Contract Only: validateItemSold is called by the marketplace upon a sale.

  • Public: Can query bundle listing details.

  • Owner Only: Can cancel listings, update listings, and accept offers on owned bundles.

  • KYC Only: Allowed to list bundles, buy bundles, make offers, and cancel offers.

Payment System and Fees

  • Tokens for Payments: The contract exclusively uses approved ERC20 tokens for transactions.

  • Fees: Fees such as platformFee and royaltyFee are handled during transactions in ERC20 tokens.

ERC-20 Token Initialization

The contract does not initialize ERC-20 tokens itself. It uses the IERC20 and SafeERC20 interfaces from OpenZeppelin for safe ERC-20 token interactions. The specific ERC-20 token to be used for payments is typically set when bundles are listed or offers are made.


PreviousFantomAuction.solNextFantomMarketplace.sol

Last updated 8 months ago