Skip to content

Instantly share code, notes, and snippets.

@aomwara
Created March 22, 2021 15:46
Show Gist options
  • Save aomwara/a710c56f65df84bbca7ce3aef353b090 to your computer and use it in GitHub Desktop.
Save aomwara/a710c56f65df84bbca7ce3aef353b090 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.2+commit.661d1103.js&optimize=false&runs=200&gist=
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
pragma solidity ^0.8.2;
contract Token{
mapping(address => uint) public balances;
mapping(address => mapping(address => uint)) public allowance;
uint public totalSupply = 10000 * 10 ** 18 ;
string public name = "CPE Token";
string public symbol = "CPE";
uint public decimals = 18;
event Transfer(address indexed from, address indexed to, uint value);
event Approve(address indexed owner, address indexed spender, uint value);
constructor(){
balances[msg.sender] = totalSupply;
}
function balanceOf(address owner) public view returns(uint){
return balances[owner];
}
function transfer(address to, uint value) public returns(bool){
require(balanceOf(msg.sender) >= value, 'balance too low');
balances[to] += value;
balances[msg.sender] -= value;
emit Transfer(msg.sender, to, value);
return true;
}
function transferFrom(address from, address to, uint value) public returns(bool){
require(balanceOf(from) >= value, 'Balance too Low');
require(allowance[from][msg.sender] >= value, 'Allowance too Low');
balances[to] += value;
balances[from] -= value;
emit Transfer(from,to,value);
return true;
}
function approve(address spender, uint value) public returns(bool){
allowance[msg.sender][spender] = value;
emit Approve(msg.sender, spender, value);
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment