/daco

DACO - Decentralized autonomous charity organization

DACO 💚 Decentralized Autonomous Charity Organization

"charity with benefits, charity in a new blockchain way"

Our platform unites charity organizations, businesses and donators in new way. Charity organizations creates new social project that needs to be financed. Open heart people donate money for project that they like Socially responsible businesses that also want to take part in charity project offer donators discounts for their services or products. Charity organization get needed money, businesses expands their client base, donators receives discounts and a plus in their karma that is much more important.

Workflow Demo

DACO Workflow Demo

How to use

We use Rinkeby Test Network

🔗 DACO smart contract address - 0xc19D435E84B921f268B465d36651AC6CB82888bB
🔗 DACO Token smart contract address - 0x0fa0ff095762aa1c612797a6a49f576ae677944c

DACO API

contract DACOMain is Ownable:

Improved congress contract by Ethereum Foundation.

function DACOMain(
    address congressLeader
) public { ... }
  • congressLeader - wallet address of DACO Creator

methods:

Append new congress member:

function addMember(
    address targetMember, 
    string memberName
) public onlyOwner { ... }
  • targetMember - member account address
  • memberName - member full name

Proposal voting:

function vote(
    uint256 id
) public onlyMembers { ... }
  • id - proposal identifier

Create a new campaign:

function newCampaign(
    address _wallet, 
    uint256 _amount, 
    string  _description
) public onlyMembers { ... }
  • _wallet - beneficiary wallet address
  • _amount - hardCap value in Wei
  • _description - campaign description string

Change rules of voting:

function changeVotingRules(
    uint256 minimumQuorumForProposals,
    uint256 minutesForDebate,
    uint256 marginOfVotesForMajority
) public onlyOwner { ... }
  • minimumQuorumForProposals - minimal count of votes
  • minutesForDebate - debate deadline in minutes
  • marginOfVotesForMajority - majority margin value

Remove congress member:

function removeMember(
    address targetMember
) public onlyOwner { ... }
  • targetMember - member account address

Create a new proposal:

function newProposal(
    address wallet,
    uint256 amount,
    string  description
) public returns (uint256 id) { ... }
  • wallet - beneficiary account address
  • amount - transaction value in Eth
  • description - job description string

Set new rate value:

function setRate(
    uint256 _rate
) public onlyOwner returns (bool) { ... }
  • _rate - factor of convertion wei -> daco token

contract DACOTokenCrowdsale is Ownable:

Contract that allows to donate funds to compaign and to close compaign.

function DACOTokenCrowdsale(
    uint256 _mainSaleWeiCap, 
    uint256 _rate, 
    address _token, 
    address _wallet, 
    string _description
) public { ... }
  • _mainSaleWeiCap the amount required to be collected under this company
  • _rate - wei to token rate
  • _token - DACO token address
  • _wallet - wallet where to the donate should be translated

methods:

Low level token purchase function:

function donate(
   address investor
) payable { ... }
  • investor - donator account address

Campaign finalization:

function setFinalized() public onlyOwner { ... }

contract KARMAToken is MintableToken:

Special kind of token that used for user reputation managing. It is generated when donator makes a donation. It's equivalent to donate money amount.

methods:

function transfer(
    address _to, 
    uint256 _value
) public returns (bool) {
    // Transfering is prohobited
    return false;
}

contract DACOToken is MintableToken:

Kind of token that is used for getting a discount.

methods:

Create compaign for fund-raising:

function addCampaign(
   address _campaign
) onlyOwner public { ... }
  • _campaign - campaign organization account address

Remove compaign:

function removeCampaign(
   address _campaign
) public onlyOwner { ... }
  • _campaign - campaign organization account address

Send funds for company maker:

function transfer(
    address _to, 
    uint256 _value
) public returns (bool) { ... }
  • _to - campaign organization account address
  • _value - amount of wies to send