Skip to content

Create a fungible token with the use of Solidity blockchain, ethereum and OpenZeppelin.

Notifications You must be signed in to change notification settings

juzcho/Fungible_Token_Crowdsale

Repository files navigation

Fungible Token Crowdsale with REMIX and Solidity

Table of Contents

Fungible Token Crowdsale

Technologies

Installation Guide

Evaluation Evidence

Contributors

License


Fungible Token Crowdsale

This project allows us to create a fungible token that is ERC-20 compliant and that will be minted by using a Crowdsale contract from the OpenZeppelin Solidity library.

The crowdsale contract that you create will manage the entire crowdsale process, allowing users to send ether to the contract and in return receive KSI, or KaseiCoin tokens. Your contract will mint the tokens automatically and distribute them to buyers in one transaction.


Technologies

This project leverages python version 3.8.5 with the following packages and modules:

  • pandas - version 1.3.2 - This was used to be able to easily manipulate dataframes and create dataframes.

  • hashlib- This module implements a common interface to many different secure hash and message digest algorithms. In our application, we use SHA256 to return a hexdigest.

  • Solidity - This is used to create the smart contract and implement the joints saving application to work with ether.

  • Remix IDE - This is used to be able to write and edit solidity formatted code, and this is where the joints saving application will be launched.

  • MetaMask - This is a digital wallet and a gateway for the Ethereum blockchain.

  • Ganache - This is a tool that allows us to quickly set up a local blockchain, which we can use to test and develop smart contracts.

  • OpenZeppelin - OpenZeppelin library provides a wide variety of contracts that are related to the ERC-20 token standard. This also allows us to access the imports for the ERC-20 tokens on the .sol files.


Installation Guide

1. Install MetaMask and create an account. You can also add a Google Chrome extension for this.

2. Install Ganache on your desktop.

3. Open the REMIX IDE to view and edit the KaseiCoin.sol and KaseiCoinCrowdsale.sol file.

  • Make sure to git clone the file first from this repository.

4. Then when on the REMIX IDE, click on the left icon logo, and then click Open file and navigate to where the git clone files are locally saved on your machine.

  • This should open the file through this IDE for you to compile the smart contract.

Remix IDE Open

5. Let's compile the KaseiCoin.sol and KaseiCoinCrowdsale.sol file and make sure that the compiler is version 0.5.7 (or at least anything above version 0.5.5).

Remix IDE Compile

6. Deploy the Contract in the "Injected Web3" environment.


Evaluation Evidence

1. Successful compilation of the KaseiCoin.sol Contract, the KaseiCoinCrowdsale.sol Contract and the KaseiCoinCrowdsale Deployer Contract.

Remix IDE Compile

2. Deploy the crowdsale to a local blockchain with Remix, MetaMask, and Ganache.

  • Deploy the KaseiCoinCrowdsale.sol with KaseiCoin Crowdsale Deployer Contract using Injected Web3 environment (which by default the Metamask extension will pop-up). Add the following variables needed such as the Kasei, KSI, and Wallet address, then click Deploy. Crowdsale Deployer

3. Test the functionality of the crowdsale by using test accounts to buy new tokens and then checking the balances associated with those accounts. After purchasing tokens with one or more test accounts, view the total supply of minted tokens and the amount of wei that has been raised in the crowdsale contract.

  • Go back to the settings and change the contract to KaseiCoin Crowdsale Contract. Copy the wallet address under Crowdsale shown on the KaseiCoin Crowdsale Deployer Contract (after deploying) and paste that on the At Address.

  • After that, (scroll down) copy and paste the wallet address from Ganache, (scroll up) add the number of ether to buy, then click Transact. The weiRaised supply should have the same number of ETH that was bought. KaseiCoin Crowdsale Once you buy the tokens, check your Ganache and Metamask transactions. Buying tokens transaction with Ganache

  • Go back to the settings and change the contract to KaseiCoin Contract. Copy the wallet address under Token shown on the KaseiCoin Crowdsale Deployer Contract (after deploying) and paste that on the At Address. After that, scroll down to the totalSupply it should have the same number as the weiRaised supply and with the same number of ETH that was bought. KaseiCoin token

4. Optional Challenge:

  • To buy tokens: After compiling both KaseiCoin and KaseiCoinContract, go to the KaseiCoin Crowdsale Deployer Contract, then put in the necessary information. After deploying, scroll down and copy the address under crowdsale:

    Name: Kasei 
    Symbol: KSI
    Wallet: <your hash address>
    Goal: 10000000000000000000 wei or 10 ETH (or whatever goal you prefer)
    
  • Scroll up, and change the contract to KaseiCoin Crowdsale Contract. Paste that crowdsale address onto the At Address, then proceed to add the number of ETH (based on your goal earlier), in this case, we are buying 10ETH, and then fill out the beneficiary address on the buyTokens, then click transact. The Metamask should pop-up, then confirm that. You can check your isOpen, if still true then it means your contract has not been finalized. Wait another few minutes (assuming your code for close time is for now + 5 minutes) before clicking finalize. After a few minutes, click the finalize (the orange button), and your Metamask should pop-up again.

  • Check your isOpen which should say false.

  • You can check your balanceOf and it should have the same amount of wei from your goal.

  • You can also check goalReached and it should say true which means it has met the goal initially added on the KaseiCoin Crowdsale Contract Deployer.

  • Below is gif to show instructions above: KaseiCoin token


Contributors

Contributed by: Justine Cho

Email: chojustine0@gmail.com

Linkedin LinkedIn


License

MIT License

Copyright (c) [2021] [Justine Cho]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Create a fungible token with the use of Solidity blockchain, ethereum and OpenZeppelin.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published