Bonifaceebuka / SmartEsop

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Employee Stock Option Plan Smart Contract Challenge

Task

You are tasked with designing and implementing a smart contract for an Employee Stock Option Plan (ESOP) on the Ethereum blockchain. The ESOP allows a company to grant stock options to its employees, define vesting schedules, and enable employees to exercise their vested options. Your goal is to create a secure, efficient, and user-friendly smart contract, named EmployeeStockOptionPlan, that manages the ESOP.

Smart Contract Specifications

  • Smart Contract Language: Solidity (version 0.8.0 or higher)
  • Blockchain Platform: Ethereum

Employee Stock Option Plan Functionality

Implement the following functionalities in the EmployeeStockOptionPlan smart contract:

3.1. Granting Stock Options

  • Implement a function, grantStockOptions, that allows the company (contract owner) to grant stock options to an employee by specifying their address and the number of options.
  • Emit an event, StockOptionsGranted, to log the grant of stock options.

3.2. Vesting Schedule

  • Implement a function, setVestingSchedule, that allows the company to set the vesting schedule for an employee's options.

3.3. Exercising Options

  • Implement a function, exerciseOptions, that allows an employee to exercise their vested options.

3.4. Tracking Vested and Exercised Options

  • Implement functions, getVestedOptions and getExercisedOptions, to retrieve the number of vested and exercised options for an employee.

3.5. Security and Permissions

  • Implement appropriate access control to ensure that only authorized employees can exercise their options.

3.6. Ownership and Transferability

  • Implement a function, transferOptions, that allows employees to transfer their vested options to other eligible employees, subject to any transfer restrictions specified in the vesting schedule.

Your Task

Design and implement the EmployeeStockOptionPlan smart contract based on the provided skeleton code in the file EmployeeStockOptionPlan.sol. Your implementation should fulfill the following requirements:

4.1. Functionality

The smart contract should correctly handle the granting of stock options, setting of vesting schedules, exercising of options, and tracking of vested and exercised options.

4.2. Security

Ensure the smart contract follows best practices for security, including protection against common attacks like reentrancy, overflow/underflow, and unauthorized access.

4.3. Documentation

Include comprehensive documentation that explains the design decisions, contract architecture, and usage instructions. Code comments should be provided where necessary to improve code readability and maintainability.

Use the provided skeleton code in the file EmployeeStockOptionPlan.sol as a starting point for your implementation. Feel free to modify and expand the code as needed to fulfill the requirements.

Evaluation Criteria

Your solution will be evaluated based on the following criteria:

5.1. Correctness

The smart contract should implement the specified functionality accurately and without any critical bugs.

5.2. Documentation

Include comprehensive documentation that explains the design decisions, contract architecture, and usage instructions. Code comments should be provided where necessary to improve code readability and maintainability.

Please note that the provided skeleton code is a starting point and may require further modifications and additions based on your implementation strategy and requirements.

Submission Guidelines

Please follow the below guidelines for your submission:

  1. Fork this repository.
  2. Create a new branch for your solution.
  3. Implement your solution in the file EmployeeStockOptionPlan.sol.
  4. Provide the required documentation and instructions.
  5. Commit and push your changes to your forked repository.
  6. Submit a pull request (PR) to this repository.

Please make sure to include all the necessary files and information in your submission.

Good luck with your implementation! If you have any questions, feel free to ask.

About


Languages

Language:Solidity 100.0%