Inspiration

I was inspired to build this project because of shortcomings I saw in the Theta NFT marketplace. That is the lack of liquidity and market information.

The purchase price for NFTs is spurious. Being able to sell the NFTs you own is a major issue. A lot of times you will see people offering to sell several NFTs, in some discord channel, then the trade takes place behind the scenes, so the true worth of the NFTs is not known.

I envisioned a possible solution to this problem. A marketplace where users can put what they are offering out there, then others can show what they will offer for it. If an offer is accepted, then a trade between the two user's wallets occours. A boon for people looking to purchase NFTs and boon for those wanting to sell.

The result is greater ease of transaction in the markeplace and a better understanding of what the true worth of an NFT is.

What it does

A user connects their wallet. After that they have the ability to create what is called a basket. After creating the basket, the user can add NFTs and Tfuel to it. At that point, the user can offer the basket in exchange for other created baskets, that have have allowed offers (explained below).

Once you create a basket, you have the option to "allow offers". If you do, then others can offer there baskets. If you do not allow offers, you can stll offer your basket to those that do. Once an offer is made on a basket that allows offers, that basket cannot be modified. The user will need to reject all offers on the basket, in order to modify it, or just delete it.

If an offer on a basket is accepted, the NFTs and Tfuel in the basket are exhcanged between wallets.

How I built it

There is a smart contract that establishes the baskets and holds the NFTs and Tfuel. It is also responsible for implentation of the exchange between the two wallets.

The front end is built using React and a popular UI Framework Chakra UI. It communicates with the smart contract, and gets the approval to lock up and offer and accept the basket contents.

There is also a middle and backend. These are APIs that communicate with the database, in order to keep track of track of offers and keep track of baskets and what is in them. This allows for faster interaction, when using the web app.

Challenges I ran into

A big challenge has been getting all the pieces to coordinate. This project requires a few different technologies to come together.

Assets are being locked up and approval of transfering those assets that need to be verified. Deiciding what needs to be kept on the block chain and what can be stored off it, was a consideration. The blockchain does a good job of verification and keeping things safe, while being trackable. However, the processing is not very fast. And storing data there is not always very efficient. So there is a delimination of tasks between what technology gets levereged.

Development of the smart contract was a challange too. creating a process and iterations to implement the baskets and keeping track of what wallet owns what. This is my first time working with smart contracts, so understanding new types of data structures, such as mappings and the unique envieronment of the block chain was a challenge.

Testing was a major challenge. I was not able to find any way to debug and run tests for the smart contract I created. So, a lot of the testing involved, deploying, trial and error. Frankly, I think I still need a lot of help on testing.

Accomplishments that I am proud of

Being able to observe a problem in the marketplace. Having a concept to solve it and taking it to a working prototype.

Building and deploying a smart contract, was a big accomplishment for me.

What I learned

There is a lot that can be done utilizing the blockchain. Considering what is already out there. There is so much that can be built to build upon these things and make them work better.

I learned to program in Solidaty and build a working smart contract.

What's next for Theta Deal Maker

First, I want to see if the concept itself has any traction. Then, a lot of testing and iterations, that will make the experience more user freindly. Hopefully, I can get the contract audited at one point, and have a working site on mainnet. After that, build out features that enhance the current functionality.

Share this project:

Updates