Part II. The OtoCo Ethereum smart contracts
The smart contract for the Delaware and Wyoming Masters together with all other OtoCo code is available in our GitHub.

An instant LLC for 39 DAI (~39 USD)

We initially let users spin up their LLC for free, knowing that there would be opportunities to upsell services once their LLC is activated.
We then decided to put the cost of activating a new LLC at 39 DAI so we would be able to cover both Masters' expenses of keeping a registered office in Delaware and Wyoming and pay the Annual Franchise tax on behalf of their respective Series.
In addition to the 39 DAI activation cost, users need to have small amount of Ether in their wallet to cover the gas cost of signing the first transaction.
All this is typically completed within 6 seconds.

Series deployment

The OtoCo suite consist of 3 smart contracts:

1. The Master smart contracts - OtoCorp.sol

The OtoCo Master smart contract is responsible for receiving payments and deploy the new Series.
Master Delaware:
0x24870e04F2573a132B695c48eB9ff2F3C8b0f410
Master Wyoming:
0x366e6a4e17875049670c9714CA33dC2F20cD1d37
Each contains a list of deployed Series.
Methods
  • constructor: Sets msg.sender as the manager of the contract.
  • getBalance: Gets the balance of the contract.
  • withdraw: Transfers the balance to the manager. (Only manager can do)
  • createSeries: Pay selected fee in (token) selected to create a Series(Contract) and set its name, symbol, total shares. Records its address to series array and a hashtable to the creator (msg.sender).
  • getMySeries: Get an address array of all my series.

2. The Series smart contract - Series.sol

This is the Series LLC itself.
The contract represents a legally binding agreement between a jurisdiction and a Company on Ethereum.
Methods
  • constructor: Sets some attribute to initialize a Series.
  • getName: Get series name.
  • owner: Get series current owner.

3. The Master Registry (Otoco Ledger) - MasterRegistry.sol

This contract contains the additional data for the Series. It is separated in 3 mappings:
  • plugins: Mapping of plugins used by Otoco to legally bind different plugins to Series. They are defined by Otoco itself allowing series Owners to add to their respective company.
  • records: Mapping of different plugins(address) that a company has. They are defined by an Index(uint8) and only the Series owner are allowed to change its values after initialized. If isn't initialized, plugins itself are allowed to modify values for their respective index.
  • contents: Mapping of different text values that coul be set to a company. Also defined by Indexes(uint8) and only series owners are allowed to change those values on behalf of a Company.
Methods
  • setPluginController: Set a plugin that control a specific plugin index. This is only set by the owner og Master Registry.
  • setRecord: Set new records on behalf of a Series contract, only Series owner, the own address or the plugin contract could change the entries. This record is referenced by index and represents a contract of the type of plugin.
  • getRecord: Get record on behalf of a Series contract. This record is referenced by index and represents a contract.
  • setContent: Set new records on behalf of a Series contract, only Series owner or the own address could change the entries. This record is referenced by index and represents a string.
  • getContent: Get record on behalf of a Series contract. This record is referenced by index and represents a contract.