This project involves creating a new cryptocurrency named KaseiCoin (where "Kasei" means "Mars" in Japanese), which will be a fungible ERC-20 token. The token will be minted via a crowdsale, allowing users to convert their money to KaseiCoin as part of a larger initiative to facilitate transactions for those moving to Mars.
- KaseiCoin Token Contract: An ERC-20 compliant fungible token.
- KaseiCoin Crowdsale Contract: A smart contract managing the entire crowdsale process, allowing users to send ether in exchange for KaseiCoin tokens.
- KaseiCoin Deployer Contract: A contract to deploy both the token and crowdsale contracts.
- Evaluation Evidence: A set of screenshots or a video demonstrating the successful deployment and functionality of the contracts.
- Import the provided
KaseiCoin.sol
starter file into the Remix IDE. - Import the following contracts from the OpenZeppelin library:
ERC20
ERC20Detailed
ERC20Mintable
- Define a contract named
KaseiCoin
that inherits from the three imported contracts. - Add a constructor with parameters:
name
,symbol
, andinitial_supply
. Call theERC20Detailed
constructor withname
,symbol
, and18
(for decimals). - Compile the contract using version 0.5.5 of the compiler.
- Debug any errors, if present.
- Take a screenshot of the successful compilation and add it to the Evaluation Evidence section.
- Import the provided
KaseiCoinCrowdsale.sol
starter code into the Remix IDE. - Have the contract inherit from the following OpenZeppelin contracts:
Crowdsale
MintedCrowdsale
- In the constructor, provide parameters for the crowdsale features:
rate
,wallet
, andtoken
. Configure these as needed. - Compile the contract using version 0.5.5 of the compiler.
- Debug any errors, if present.
- Take a screenshot of the successful compilation and add it to the Evaluation Evidence section.
- Uncomment the
KaseiCoinCrowdsaleDeployer
contract in the providedKaseiCoinCrowdsale.sol
starter code. - Add variables to store the addresses of the KaseiCoin and KaseiCoinCrowdsale contracts.
address public kasei_token_address;
address public kasei_crowdsale_address;
- In the constructor, add the parameters
name
,symbol
, andwallet
. - Complete the constructor by:
- Creating the KaseiCoin token with an initial supply of 0.
- Storing the token's address in
kasei_token_address
. - Creating the KaseiCoinCrowdsale contract with appropriate parameters.
- Storing the crowdsale contract's address in
kasei_crowdsale_address
. - Setting the KaseiCoinCrowdsale contract as a minter and renouncing the minter role of the deployer.
- Compile the contract using version 0.5.5 of the compiler.
- Debug any errors, if present.
- Take a screenshot of the successful compilation and add it to the Evaluation Evidence section.
- Deploy the crowdsale to a local blockchain using Remix, MetaMask, and Ganache.
- Test the crowdsale functionality by:
- Using test accounts to buy tokens.
- Checking balances to ensure correct token distribution.
- Review the total supply of minted tokens and the amount of wei raised by the crowdsale.
- Record a short video or take screenshots that illustrate these steps as evidence.
- If using screenshots, add them to the Evaluation Evidence section.
- If using a video, upload it to a hosting platform and include the link in the README.md file.
- Import the following contracts from OpenZeppelin:
CappedCrowdsale
TimedCrowdsale
RefundablePostDeliveryCrowdsale
- Modify the
KaseiCoinCrowdsale
contract to inherit from these contracts. - Update the constructor to include parameters for
goal
,open
, andclose
times. - Adjust the
KaseiCoinCrowdsaleDeployer
contract to handle the new crowdsale contract. - Compile, test, and ensure that the updated contract meets the desired functionality.
- Record the deployment and testing steps as evidence.