[Feature] Automated Token Issuance - Smart Contract | Advanced

uport-project

meshconnect, uport-project, uport, smart contract, web3

# User Story As a product developer I need to include automated ERC20 token issuance in the MeshConnect Project to demonstrate token incentive mechanics for a non-technical audience. # Technical Information The MeshConnect project contains the `PunchTheClock.sol` smart contract located in the `/contracts' folder. The smart contract is designed to emulate an physical punch clock system. However, unlike an original Punch Clock system, the `PunchTheClock.sol` smart contract has constraints for successfully completing the `depart` function. Instead of forcing people to interact with a Punch Clock system, token incentives will be made available for decentralized identities willing to participate. A similar system will be also be implemented for events and meetups. ``` function depart() public isApproved isTimeMinimum isTimeMaximum { departList[departuresCount].eid = msg.sender; departList[departuresCount].time = now; entityList[msg.sender].isActive = false; entityList[msg.sender].departures++; entityList[msg.sender].timeDeparted = now; departuresCount++; } ``` The `isTimeMinimum` and ` isTimeMaximum` modifiers ensure a decentralized identity has met the time requirements for departure. For example if it's decided staff should incentivized to stay in the office between 6-8 hours a day a developer could set the `timeMin` and `timeMax` variables to match those requirements. If those departure requirements are the PunchTheClock should issue X amount of tokens when a person has met the criteria for departure. For inspiration to complete this issue/bounty I recommend reviewing Zeppelin's Crowdsale Smart Contract. https://github.com/OpenZeppelin/zeppelin-solidity/tree/master/contracts/crowdsale # Acceptance Criteria - [ ] Add `addressToken` to set external ERC20 smart contract. - [ ] Add `adminEditAddressToken` administrator function to change ERC20 token reference - [ ] Issue defined (X amount) of ERC20 tokens in `depart` function.