Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
88 lines (68 sloc) 2.76 KB

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.

Toacins are based on Ethereum's ERC20 Token Standard, with the following additional specifications:

Required

  • 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:

  1. Toacin_<type>.sol (published on-chain)
  2. ToacinDb.sol (published on-chain)
  3. ToacinFinance.sol (published on-chain)
  4. ToacinFramework.sol
  5. ToacinFuncs.sol
  6. ToacinMath.sol
  7. 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...

View the FIRST100 Toacins →