Create smart contract

Job ID: 35039518

Budget: $250 – $750 USD

NO UPFRONT PAYMENT (sorry, too many scammers)

We need a unified contract with the following features:
• Supports the following tokens:
o Native
o ER20Burnable
o ERC20 non-burnable (in this case send the burn value to the null address or the DEAD address)

• New tournament can be started from the contract by anyone

• The pglad redeeming function can be dropped (distribute part of the ticket size (defined GLAD_SHARE) among the users in the Whitelist contract)

• the active running tournaments should be enumerable (so the UI can list them)
• the expired but not yet claimed tournaments should be enumerable (so the UI can display the claim function to the winner, but below the active running tournaments)
• the expired and claimed tournaments should be enumerable (so the UI can display those but below the expired but not yet claimed tournaments)

• Add reentrancy guard

• Make statistics readable from tournament contract
o How many total bids in each tournament
o How many different bidding addresses in each tournament
o List of bidding addresses by number of bids in each tournament
o List of bidding addresses by number of bids total (

• For every tournament the creator address can claim all remaining funds from the specific tournament 33 days after expiration. For every tournament the owner (us) address can claim all remaining funds from the specific tournament 66 days after expiration.

• Blacklist function to which the owner can add addresses that will prevent a certain address to bid on any pot

From the user perspective:
On the UI the pots are listed as cards. Active, expired and closed separately. They have 1 button on them: Approve/Bid (if token is not native, it needs to approved and after approval the button transforms into bid button.)
Update the information on the cards every 5 seconds.

Create new pot:
Choose pot token: USDC/AVAX/WAVAX/WETH/BTC.b (pot is this currency)
Enter pot amount (must be > 0)
Choose pot token: USDC/AVAX/WAVAX/WETH/BTC.b (user bid with this currency)
Choose pricing model
1) fixed price (must be > 0)
2) % of pot (must be > 0)
3) increase with a multiplier after every bid. Choose starting amount, set multiplier (if 10% then bid price gets 110% of previous bid price. if 100% then bid price doubles and so on)
Set bid price distribution (total must add up to 100%
-2% goes to my wallet (I can edit) (user cannot edit it)
-x% goes to pot address (user can edit 0-98%)
-y% gets burnt (user can edit 0-98%)
-z% goes to previous bidder (address who bid beforehand) (user can edit 0-98%)
-a% goes to pool creator address (user can edit 0-98%)
-b/c/d% goes to addresses added by pool creator (maximum 98 addresses) (user can edit each address separately 0-98%)
Expiration time:
-Fixed: time gets reset to this amount after every bid
-Decreasing: time gets reset to latest start time -decreasing by minutes after every bid
Priority pool
Yes/no. If yes, user pays 10 AVAX to create pool. If no, user pays 0.5 AVAX to create pool.
When creating the pool the user must pay the pot amount as well

Do the UI in React.
Related categories: Blockchain Ethereum Solidity Smart Contracts Web3.js