🖥️

Developer Take Home Fall 2023

Dear candidate,

Thanks so much for your interest in Illini Blockchain! Web3 is a quickly evolving industry, so we’re looking for developers that are comfortable picking up new tools and frameworks. As a part of the interview process, we want to offer the opportunity to demonstrate this important quality with our Developer Take Home.

For this task, you’ll be deploying your own smart contract and interacting with our own contract on an Ethereum test network. Please read these instructions carefully:

📜 Our contract

The IlliniBlockchainDevTask contract is deployed at 0xc843fa98f3D1f040234196d7D955d855E774C83B on the Goerli test network. You can find the verified source code and ABI on Etherscan.

🖥️ Development tooling

Remix is a popular in-browser smart contract IDE that makes it easy to create and deploy basic smart contracts. We recommend using Remix, especially if you are new to smart contract development.

Metamask is a wallet you will connect to to deploy your contract. This can be downloaded as a chrome extension. Don’t worry, you won’t need to add your own money!

You can get free ETH for the Goerli test network using a faucet. We recommend the following: Paradigm faucet, Alchemy faucet, authenticated faucet, PoW faucet.

📌 The task

You will be deploying a smart contract that calls a function in the IlliniBlockchainContract to send us a message! Here are the steps:

  1. Create a solidity file on the Remix IDE and paste the source code of the Illini Blockchain contract, you will need to import it later.
  2. Create another solidity file in the workspace. This is where we will write our smart contract.
  3. Write the contract. We have included an outline of the contract below, replace the comments with the necessary steps.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;

import "hardhat/console.sol";

// import the Illini Blockchain Contract
contract DevTask {
    
    // create an address variable to store the contract

    constructor() {
				// set the contract address 
    }

    function sendTask(string calldata data) public {
        //construct a new instance of the IlliniBlockchain contract 
       //call the function to send the task        
    }
}

3. Deploy the contract on the WalletConnect network, make sure you have

4. Call the sendTask function and pass in a message telling us your favorite spot you’ve eaten on campus. Encrypt your message via encryptWithPublicKey in eth-crypto, using the public key displayed on our smart contract (28706b427adad45a7bac73c8040e6701748658da). You don't need to sign your message. You will need to run this in a Node.js environment. Hint: Be sure to cipher.stringify() the encrypted result. Note: If you get stuck on encrypting the message, skip it. It’s totally acceptable not to get everything on the task completed, We just want to see your process, and get you introduced to web3 programming!

5. When you are finished, you should see an event for your application on the etherscan/events view. Just submit your source code to this form so that we can see what you did, even if you didn’t fully complete the task.

6. You’re done!

🔑 Tips

General smart contract resources: Ethereum Docs (checkout prerequisites if you’re new to Ethereum), Breaking Down Smart Contracts

Solidity resources: Solidity Docs, Solidity by Example

Don’t overthink the code! This take home is mainly about the tooling.

If you need help, you are always welcome to reach out. We won’t answer questions if we think you should be able to figure out the answer on your own, but you’re free to ask!

Best of luck!

Illini Blockchain Developers