Toacin :. A Managed DAO Solution
TL;DR
ToAcin [toh-kuh n] is based on the Web 3.0 concept of a Token of Asset. Toacins serve to allow for real-world and/or digital assets to offer subscriptions (ie tokens), which facilitate a payable distribution of profit via an Ethereum Smart Contract.
ERC20 Token Standard, with the following additional specifications:
Toacins are based on Ethereum'sRequired
- isMaster (bool): Is this contract the current Master of the hierarchical chain?
- Parent (address): The address of the parent for this contract (if available).
- Child (address): The address of the child for this contract (if available).
Funding (Optional)
- isFunding (bool): Is this contract currently funding a Toacin?
- ToacinsPerEth (uint): Number of toacins received for each ether sent.
- FundingStart (uint): Date/time (in seconds since epoch) of the funding launch.
- FundingEnd (uint): Date/time (in seconds since epoch) of the funding completion.
(all amounts are denominated in bits)
Types of Toacin Funding
Funding Title | Duration | Description |
Traction Builder | < 30 days | Discounts based on remaining quantity of subscriptions. |
Daily Dutch | 30 - 60+ days | Daily lots awarded to the highest bidder(s). |
Campaign | 30 - 120+ days | Extended fundraiser with discounts based on date/time of subscription. |
Dutch Express | < 7 days | Timed (Hourly) lots awarded to the highest bidder(s). |
Solidity Contracts
There are a total of 7* files that make-up the Toacin Framework:
- Toacin_<type>.sol (published on-chain)
- ToacinDb.sol (published on-chain)
- ToacinFinance.sol (published on-chain)
- ToacinFramework.sol
- ToacinFuncs.sol
- ToacinMath.sol
- ToacinSettings.sol
* In theory, this structure would be greatly reduced with improved "upgradeability" of Ethereum contracts.
Code Snippet
function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
/* Check if sender has balance and for overflows. */
if (_balances[msg.sender] < _value) throw;
/* Subtract value from sender's balance. */
setBalance(msg.sender, ToacinMath.sub(_balances[msg.sender], _value));
/* Update the receiver's balance. */
setBalance(_to, ToacinMath.add(_balances[_to], _value));
/* Notify anyone listening that this transfer took place. */
Transfer(msg.sender, _to, _value);
}
Managed Decentralized Autonomous Organizations
coming soon...