Hi Fellow Ethereum geeks,
I am in the process of designing a smart contract for issuance of my own crypto-currency (ERC-20 token) on the Ethereum Network based on specific rules I want to code into the smart contract. The criteria for when I mint and issue my currency will be different for different target market segment or population, although, once the rule is satisfied, the same number of tokens are issued for every case. I have a client application that is expected to trigger the code in the admin wallet and in turn the smart contract. I am thinking of doing the following:
1. Create 3 Smart Contracts:
2. Smart Contract A - Mint and Transfer tokens. The number of currencies issued each time it is called will be a constant and a global smart contract variable.
3. Smart Contract B - One smart contract for every market segment that controls the rules for that segment. Say for example, I have a segment of 18-30 year olds. Another for 30 - 50 years and so on. I will not have all the segment contracts written initially, but, will write and register them as I roll out to the corresponding segment. This essentially determines if the rule that initiated the smart contract call is a valid rule or not for the given market population. I am using the smart contract in this scenario to increase trust in the issuance and ensure consistency in the currency. The ethereum unique address for this contract is stored outside the blockchain.
4. Smart Contract C - Controller Contract - it will be called from the Wallet along with the addresses of the smart contract for the segment of the 'wallet user', address of the issuer and the destination wallets. It then calls the corresponding smart contract defined by the address, calls the minting smart contract and transfer it.
5. A wallet that is called from an external application to trigger the smart contract. Of course, the Wallet is used also at a later stage if the users want to transfer their tokens to someone else or if the admin wants to airdrop the tokens to someone.
Is this a viable design? Is there a better way of doing this? Please PM me if I can clarify anything related to this.