Decentralized Carbon Credits in an ERC20 by neetsec
Go to file
David E. Perez Negron Rocha bcf24dfb70 Merge branch 'hotfix/Fix_Integer_Overflow/Underflow' 2020-06-19 18:57:35 -05:00
build/contracts First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 2020-02-17 23:18:07 -06:00
contracts Fix Integer Overflow / Underflow 2020-06-19 18:57:01 -05:00
migrations First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 2020-02-17 23:18:07 -06:00
test Tested and Audited appendWeeks function 2020-06-08 14:39:52 -05:00
uml Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 2020-05-08 20:20:18 -05:00
.gitignore Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 2020-05-08 20:20:18 -05:00
.gitlab-ci.yml Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 2020-05-08 20:20:18 -05:00
DISCLAIMERS Adding DISCLAIMERS 2020-06-04 22:52:59 -05:00
LICENSE Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 2020-05-08 20:20:18 -05:00
README.md Update CI build at README.md 2020-05-08 20:32:16 -05:00
package.json update version 2020-05-09 22:47:36 -05:00
run-rpc.sh First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 2020-02-17 23:18:07 -06:00
truffle.js First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 2020-02-17 23:18:07 -06:00

README.md

Decentralized Carbon Credits ERC20

build Gitter License: GPL v3

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