Frequently Asked Questions

Why isn't Remix working?

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.

I clicked the button but nothing happened!

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.

Why isn't MetaMask sending my transaction?

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.

I hacked your contract, where's my flag!?

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 IRC.

My connection is always timing out!

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.

Why doesn't the bytecode in my deployed contract match my locally compiled bytecode?

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.