83414e1780 | ||
---|---|---|
build/contracts | ||
contracts | ||
migrations | ||
test | ||
uml | ||
.gitignore | ||
.gitlab-ci.yml | ||
DISCLAIMERS | ||
LICENSE | ||
README.md | ||
package.json | ||
run-rpc.sh | ||
truffle.js |
README.md
Decentralized Carbon Credits ERC20
Decentralized Carbon Credits in an ERC20 by Neetsec
Table of Contents
[[TOC]]
DECA Project Tree
|-- LICENSE
|-- README.md
|-- contracts
|-- build
| |-- contracts
| |-- Context.json
| |-- DECA.json
| |-- ERC20.json
| |-- IERC20.json
| |-- Migrations.json
| |-- Ownable.json
| `-- SafeMath.json
| |-- DECA.sol
| `-- Migrations.sol
|-- migrations
| |-- 1_initial_migration.js
| `-- 2_deploy_contracts.js
|-- package.json
|-- run-rpc.sh
|-- test
| `-- DECA.js
|-- truffle.js
|-- .gitignore
|-- .gitlab-ci.yml
Requirements
- Node.js >= 12
- @openzeppelin/contracts = 2.4.0
Global install
- ganache-cli >= 6.9.1
- truffle = 5.1.3
Instalation
Download and install Node.js v12.x and npm.
- Node.js
Using Ubuntu
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt-get install -y nodejs
Using Debian, as root
$ curl -sL https://deb.nodesource.com/setup_12.x | bash -
$ apt-get install -y nodejs
Clone the repo
$ git clone https://gitlab.com/deca-currency/dcc.git
$ cd dcc
Install the dependencies
$ npm install
Install ganache-cli
$ sudo npm install -g ganache-cli
Install truffle
$ sudo npm install -g truffle@5.1.3
Testing the Smart Contract:
- can see the test in pipelines or you can run it locally
Running locally
- open shell and execute "./run-rpc.sh" (remember change /usr/local/bin/ganache-cli to your path)
$ ./run-rpc.sh
- open second shell, and execute
$ truffle tests
Class Diagram ERC20 Token generated with sol2uml
Specification
Methods
Apart from the ERC20 standard methods that our token complies, we introduce some improvements, either for security or others that match DECA specific requirements.
Notes:
- The following specifications use syntax from Solidity (0.5.12)
owner
Returns the address of the current owner.
function owner() public view returns (address payable)
isOwner
Returns true if the caller is the current owner.
function isOwner() public view returns (bool)
transferOwnership
Can only be called by the current owner.
function transferOwnership(address payable newOwner) public onlyOwner
updateCCDBAddress
Updates the official orbitDB address for carbon credits.
Can Only be updated by the current owner
function updateCCDBAddress(string memory newCCDBAddress) public onlyOwner
transferAnyERC20Token
Owner can transfer out any accidentally sent ERC20 tokens
function transferAnyERC20Token(address payable tokenAddress, uint tokens) public onlyOwner returns (bool success)
getETH
Close down the ICO and claim the Ether.
function getETH() public onlyOwner { require(now >= endDate); owner().transfer(address(this).balance); }
DECA Promotion Dates
Now, based on the total Ethereums we got by the ICO (ETHTS) and considering our promodates which are:
PROMO | TIME (weeks) | DECA TOKENS PER ETH |
---|---|---|
preICO | 1 | 300 |
Bonus1 | 2 | 275 |
Bonus2 | 3 | 250 |
ICO | 5 | 225 |