Make sure you've selected the correct compiler version (0.4.24+commit.e67f0147), are logged into
MetaMask, and have Injected Web3 selected as your provider.
Remix does not currently support MetaMask's
privacy mode. Click on your account icon in the upper right corner of the extension window, select
Settings -> Security & Privacy and turn Privacy Mode off. This just enables your public account
information to be injected into the webpage on load.
Firefox is known to have issues with Remix at the
moment, try a different web browser if you run into unknown errors.
Check your MetaMask extension. Every transaction is added to a queue for
MetaMask users to verify. If you navigated to another page before accepting
the transaction in MetaMask, decline any current transactions
and attempt to deploy/check completion again through the challenge page.
MetaMask occasionally leaves the gas fee field blank when presenting
the transaction to the user to confirm. Make sure you have a gas fee set before sending the transaction. Use
MetaMask's suggested gas fee or check
Ropsten Etherscan for up to date gas prices.
This site verifies you've completed the challenge by recovering your address from a signed message.
Challenge completion is checked by calling a smart contract with your public address and challenge number,
which calls the isComplete function on your deployed contract. Check that isComplete()
returns true on your Ropsten net challenge contract, then, once you've verified it worked, click
Check Completion and then Get Flag to retrieve the flag to submit to CTFd. If you believe
there is a mistake and your challenge has been completed, refresh the page or contact us on
Blockchain is still a relatively new technology. Speeds for transactions to be picked up from a single node to
the network can be anywhere from a few seconds to few minutes. Be patient, wait for
MetaMask to get the transaction receipt, then
refresh the page to see if the challenge has been deployed/completed.
Our website deploys light weight proxy contracts for each competitor to keep our on chain footprint lower
and handle updating challenges more smoothly. The proxy contract competitors interact with acts as the storage
layer for the challenges, the logic for a challenge is hosted in a single on chain contract. Mismatching
bytecode is not a hint in any way.