Submission for the OKX Hackathon (March 2023). We are transforming fantasy sports with value-preserving athlete NFTs.
There are three smart contracts:
- Athlete NFT - NFTs that represent the performance of real-life athletes
- Freeda Pass - The NFT that allows you to play the prediction game
- ERC-20 Token - Used for purchasing the Athlete NFT and Freeda Pass (in realistic scenarios, these NFTs will be purchased with USDC)
- Athlete NFTs are bought with a configurable ERC-20 token
- You will get back the full amount of these tokens if you decide to sell your NFT back to the contract
- Athlete NFTs can be purchased only when the soccer season is active
- There is a buy-back period after the season where users can sell NFTs back to Freeda (but not buy)
- Each using can only hold up to one of each NFT
- Different NFTs can have different supply caps and purchase values
- Freeda Pass NFTs grant access to the prediction game
- These NFTs are also purchased with a configurable ERC-20 token
- Each user can only buy up to one Freeda Pass
Clone the repository then cd
into the okc_contracts
folder. Install truffle
and @openzeppelin/contracts
:
npm install truffle -g
npm install @openzeppelin/contracts
The truffle-config.js
file comes configured with the OKC Testnet. Make sure to put the deploying wallet's mnemonic in the wallet_mnemonic.txt
file and then run:
truffle migrate --network okctestnet
to deploy all three contracts to the testnet. This command also configures 3 athlete NFTs with ids 0
, 1
, and 42
. If you'd like to interact with the contracts manually in the console, run
truffle console --network okctestnet
.
The AthleteNft
, FreedaPass
, and DummyErc20
global variables will be present to represent the deployed contracts.
The addresses of the deployed contracts on the testnet are:
- Athlete NFT:
0xb479E4bcD1c45245997c83887c75B89f642436d8
- Freeda Pass:
0x00cA3FeC394D8472A25B2e7358823ECC1946Bf01
- ERC-20 Token:
0xBcB82aa4f0931D4cec6dB412c5d8740843489AbA
The contracts are also deployed on OKC Mainnet:
- Athlete NFT:
0x37b0004d4B8e902F87FfE420b0E4AC3571cc5646
- Freeda Pass:
0x5fc3EC968fF81dDD406Dc27B4AaACd76A6058Fb3
- ERC-20 Token:
0xe4bACedEce4C7798A121AC6BF2dDD7ab14045a92
This project also comes with a webserver to interact with the deployed contracts. The webserver is automatically configured to point to the above testnet contract addresses.
- Simple UI and UX
- Includes all contract methods that users would interact with (i.e. buy/sell athlete NFT, buy Freeda Pass)
- Easy deployment
Make sure to cd
into the webserver
folder, and install the required libraries:
$ npm install parcel --save-dev
$ npm install @uauth/js --save
Then, start the parcel
webserver:
npx parcel index.html -p 80
.
Go to http://localhost
to interact with the webserver. You should also install OKX Wallet for your browser to interact with the smart contract. To obtain the test ERC-20 token (to purchase Athlete NFT and Freeda Pass), click on your "USDC" balance in the top right corner of the app and it will start a contract interaction to mint you 100 test ERC-20 coins.
We have deployed an instance of this webserver to a DigitalOcean droplet at http://143.244.153.222/
.