Welcome to AssetFuse, where we redefine ownership by seamlessly bridging the physical and digital worlds. Our platform empowers you to transform your real-world assets—be it exquisite jewelry, watches, or high-end electronics—into secure and tradable digital tokens on the blockchain.
Why AssetFuse?
- Liquidity and Accessibility: Unlock liquidity and access a global digital marketplace.
- Security: Your asset information is encrypted and stored securely.
- Web3 Integration: Trade on our exchange or explore opportunities on major marketplaces like Opensea.
The business model for our dapp is quite simple: we charge sellers a flat 5% transaction fees for every NFT sold through our marketplace. In the future, we will also charge a monthly fees for vaulting/escrowing the items to the owners of the items once we have our physical vault set up.
*Notes regarding real-world assets tokenization:
- We're simplifying the app during this hackathon to just the technological aspect of the tokenization process.
- We understand that in real life, there are other steps in the tokenization process that will need to be carried out, including but not limited to assaying/valuing/verifying and escrow/vaulting. Assaying refers to the process of determining the value and quality of the actual real-world item. In the future, we plan to incorporate AI image recognition in the app in order to help with obtaining a relevant price. Escrow/vaulting is the process of holding the item in a secure place owned/managed by an independent third-party so that the owner of the item should only have access to either the NFT representation of the item or the actual physical item, but not both at the same time.
We aim to create the best consumer decentralized app to help onboard SME's into Web3 seamlessly. The customer journey for seller (shop owner) will be like this:
- User (shop owner or small business in this case) comes to the landing page of AssetFuse, they can read the description of the website. The website is made with Next.js (written in Typescript) and deployed on Vercel.
- Seller can connect their wallet to begin their journey. One of the following scenarios will happen:
2a. If seller is new to Web3 and doesn't have a wallet yet, he/she can sign up with just their email address or Gmail login through Safe Auth Kit Account-Abstraction. On the backend, the email will be linked to an Externally-Owned Account (EOA) that is linked to a Safe smart contract wallet.
2b. If seller already has existing wallet, he/she can log in with WalletConnect or Metamask or other login options.
- User can either take a picture with their mobile camera or upload a picture of the real-world valuable from their gallery.
3a. If user chooses to take a picture with the mobile camera, a QR code will pop up to inform user to scan with their mobile phone. After opening up the url with their phone, user can take a photo with their mobile phone and then the photo will be uploaded to IPFS and pinned down by Piñata.
- Once the image is submitted, user can proceed to fill out the detailed information for the item. The essential information is: item name, category, item condition, and detailed item description.
- Then user will specify the price he would like to have the item listed for in either USDC or ETH. The front-end will display the equivalent USD price. The live USD price is made possible thanks to API3 price data feeds on applicable testnets where API3 proxy contract addresses exist.
- After specifying all these conditions, user can decide to tokenize their item or not. If they want to tokenize it, a message will pop up asking for their permission to approve the minting transaction. Thanks to Safe Relay Kit and Gelato 1Balance, the transaction will be sponsored by our marketplace (AssetFuse) and it will not cost the seller any gas fees, improving the user experience.
- After the minting is complete, seller will receive the NFT in their wallet. The NFT will belong to a collection owned by the shop. Seller can proceed to list the NFT on our marketplace (AssetFuse), or they can also bring the NFT to other marketplaces like OpenSea.
- Thanks to Wallet Connect Web3Inbox, both buyers and sellers can subscribe to receive notifications.
The customer journey for buyer on the marketplace will be like this:
- Customer (buyer) comes to the marketplace website and browse the listed items.
- Buyer can create a new account or login with their existing wallet similar to the step 2. above for seller. For buyers who do not have any crypto on-chain yet, we have incorporated Unlimit UI in there so that buyers can on-ramp quickly and smoothly with credit card or debit card, subjecting to relevant laws and regulations of the buyer's country.
- Once buyer clicks on an item, he/she can either buy at the currently listed price, make an offer, or chat with the seller. The direct wallet-to-wallet chat is made possible thanks to Push Chat from Push Protocol. With the chat, buyer can ask questions about the item and negotiate directly with the seller.
- If buyer buys the item, then the NFT ownership will be transferred to the buyer. Then buyer and seller can communicate with one another to decide whether they want (this part is not shown during the hackathon demo):
4a. The physical item can be shipped to the buyer's desired address and the NFT will then be burned accordingly.
4b. The physical item can be shipped to our marketplace's warehouse where we will hold custody of the item and buyer can do what he/she wants with the NFT. Ideally, our marketplace will buy some insurance to insure the value of the goods in our warehouse.
For buyers who have already bought an item from a specific shop, then seller can create an NFT gated group chat where each participant in the chat must own an NFT from the seller's (shop's) collection. We use Push Protocol's Conditional Gating of group to carry this out.
Our smart contracts are written in Solidity using the Foundry framework. We have two main smart contracts:
- Smart contract for the marketplace on 7 different testnets. We have also verified these contracts.
- Smart contract for each of shop. This will represent each of the collection once it's deployed.
We have also written some unit tests for each of the smart contract to ensure that they are working properly.