Decentralized Carbon Credits in an ERC20 by neetsec
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
David E. Perez Negron Rocha bcf24dfb70 Merge branch 'hotfix/Fix_Integer_Overflow/Underflow' 3 years ago
build/contracts First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 4 years ago
contracts Fix Integer Overflow / Underflow 3 years ago
migrations First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 4 years ago
test Tested and Audited appendWeeks function 3 years ago
uml Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 3 years ago
.gitignore Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 3 years ago
.gitlab-ci.yml Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 3 years ago
DISCLAIMERS Adding DISCLAIMERS 3 years ago
LICENSE Updates Ready for Master, NOTE: includes the integration of the previously audited function updateCCDBAddress 3 years ago
README.md Update CI build at README.md 3 years ago
package.json update version 3 years ago
run-rpc.sh First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 4 years ago
truffle.js First Functional version, added pause and test scripts, ToDO: Remove TransferAnyERC20 and from test 4 years ago

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