Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AIP2 : Organizational Structure #2

Open
activescott opened this issue Mar 28, 2018 · 19 comments
Open

AIP2 : Organizational Structure #2

activescott opened this issue Mar 28, 2018 · 19 comments

Comments

@activescott
Copy link
Contributor

This is the beginnings of a proposal for the organizational structure to support our Decentralized Exchange. Based primarily on discussions with @BigBrother and @activescott

Goals

  • Avoid centralized control that gives a single member ability to make unilateral decisions such as removing the rights of other members.
  • SEC:
    • Issuing a token that promises a future return is possibly going to require some sort of SEC compliance.
    • Collecting trading fees on an exchange is likely going to require some sort of SEC compliance.
    • SEC compliance is expensive to acheive and maintain and puts additional constraints on an organization.
  • Limiting liability of members: This means potentially unlimited legal liability for participants, even if the smart contract code or the DAO's promoters say otherwise. - https://en.wikipedia.org/wiki/Decentralized_autonomous_organization

Options

  • Pure DAO: Essentially no actual legal entity.
  • Co-operative (or similar registered legal entity)
  • Hybrid of a Legal Entity with DAO-like contract for policy/decision making

How are policies formally determined?

  • Leaning towards voting on structural changes (adding/removing members, how profits are distributed, other policies, etc.) happening via DAO but having a legal entity registered.
  • Elected Board of Directors or Partners as "governing members"
  • One person one vote vs one token one vote
  • Tokens issued to members:
    • Up front monetary investment/cost for founding members
  • Consider allowing "governing" members to be added by vote of other members
    • Consider having most members terms' expire without re-vote
    • Consider removal of members before term expires

Proposals

  1. Use a legal entity registered in the US, such as a Cooperative but use a DAO/Contract with a voting policy to make decisions.
  • Have a named board of directors that agree to execute the actions voted on according to a DAO/Contract
    • Board of directors to be elected by DAO for terms.

Open Issues / Questions

  • What type of legal entity best accomplishes our goals?
  • Biggest concern is that in traditional DAO models, a user could easily make multiple accounts to give themselves more voting rights.
    • Set up a DAO where other members have to approve new members. This could be how to prevent the attack vector of one member making multiple accounts to increase their voting rights.
  • We need to make sure voting on one little thing doesn't take weeks.
  • Select a license agreement for all new code (for existing/forked code we'll honor existing licenses).

Discussions

  • Are there existing DAO contracts that we can use as is or derive from?
  • What other goals shall we have?
  • how can you enforce voting that has happened on chain? For example, we are voting to merge a PR in GitHub. DAO vote is a resounding yes. Whose responsibility is it to do the actual PR merge?
    • IMHO we require an elected group of members that make a commitment to doing what the DAO says -@activescott

References & Citations

  • According to the SBA, a Cooperative is indeed a recognized legal entity in the US: A cooperative is a business or organization owned by and operated for the benefit of those using its services. Profits and earnings generated by the cooperative are distributed among the members, also known as user-owners. Typically, an elected board of directors and officers run the cooperative while regular members have voting power to control the direction of the cooperative. Members can become part of the cooperative by purchasing shares, though the amount of shares they hold does not affect the weight of their vote.
@Ebonsignori
Copy link
Member

Ebonsignori commented Mar 28, 2018

Excellent.

Itemized for organization:

Centralized Control

I just tested the following with a GitHub organization: give two members “ownership” privileges. Either owner can now remove the other.

Here there is room for potential sabotage.

Additionally, if we host a centralized order book, only one person owns that hosting. Perhaps we could “split power” in a checks and balances sense. That the current board of DAO elected comittee each control a seperate cog in the product’s machine.

I say this, not because I don’t trust one person, like @BigBrother to hold everything, but because Freeatnet controlled the owner account of everything (Reddit, Discord, Hosting, GitHub) and was able to dictatorially remove BigBrother. To be able to say that can never happen again would be comforting.

Getting Things Done

Perhaps add a timeout / expiration on votes that forces a current tally count after X amount of time has passed? Where X is higher or lower based on the importance level given to an issue?

Additional goals

Requirements to become a member? Based on contributions, money, both?

Distribution of profits (if any profits)

How much goes back into the company / is invested in other companies? How much goes to members and how is that distribution decided?

Removal of Membership

We need to lay out guidelines that if broken lead to being removed or suspended from voting and/or contributing or if the DAO prompts for the expulsion of a member, how is that resolved?

@JonathonDunford
Copy link
Member

RChain's coop process may lend us with some ideas on how to run our organization: https://github.com/rchain/reference/blob/master/faq.md

Ethereum has a standard DAO contract that we can edit: https://www.ethereum.org/dao

My opinion on the matter is that, while a pure DAO is a novel idea, it isn't practical in terms of SEC oversight with an exchange. Certain aspects of a DAO lend itself to manipulation and I do not agree with the "voting with money" concept. Also, DAO issuances could easily be considered securities by the SEC.

I personally think the best course of action would be some sort of combined Coop/DAO:

  • The registered legal entity would be a coop.
  • Membership could be "purchased" for a small price similar to the Rchain link I listed above.
  • All current contributors would have the opportunity to take part in this initial membership sans proper KYC modules
  • New Membership could have to be approved by the majority of existing members OR some sort of KYC could be put in place to prevent manipulation of users creating more than 1 voting account
  • Each member would get 1 vote in company matters regardless of recent contributions or money invested
  • All structural changes would be proposed / enforced via a DAO contract
  • Leadership would be elected on a term basis and be responsible for executing on approved XIPs (AIP1 : Proposal Process #1)
  • Each leadership "tier" would have multiple people in it for checks and balances
  • Leadership can be voted out prematurely by a large vote (unanimous? >70%? majority?). In cases where leadership is voted out before their term ends, someone must be elected to fill that role for the remaining time period. There will be no removal of leadership without someone elected to immediately fill the empty role. This would prevent leaders from voting out other people in their "tiers" which could consolidate "power".

Some things I think need to be figured out:

We need to decide a timeframe on different types of issues. For example, structural changes should have several weeks for voting while small issues like listing tokens should have less than a week. I think enforcing a stricter timeline on issues that can/should be handled more quickly will make sure that voting on issues doesn't drag out for tremendous amounts of time.

"Profit" distribution should also be determined. In my opinion, this could be different from voting rights. Given a scenario where the exchange starts generating more revenue than its operating costs, how should those extra profits be distributed? How do we fairly "pay" contributors?

Does anyone else have any preferences on licensing?

GitHub "owner" status could be granted to the elected board officials and removed when the officials are no longer in their post. However, Evan has a point. Owners can remove other owners. Is there any way we can prevent this from happening?

Checks and balances system could work by splitting ownership between elected officials, but what if one person wants to take an aspect of the project hostage?

Re: Evan's comment.
Does there need to be a method for removing voting privileges? I think doing that just leads to corruption. There can already be voting to remove elected officials.

@MichaelRazum
Copy link

Hello there,

just some more thoughts. Maybe a bit offtopic. Considering the organization structure involves also considering the exchange structure.

So for sure, there should be some mechanisms like how to pay for development how to choose new goals and of course how to distribute the profits.

I think one more aspect to consider is in which degree the exchange is decentralized? Maybe there can be some kind "mining" solution for all that problems. Right now the most exchanges have an off chain order book that is fine. Its a good solution since you dont want to put your orders on the blockchain. On the other hand you have some kind of centralization since the owner of the order book controls which orders go through and so on. Somekind of decentralized orderbook would be pretty cool. With nodes that synchronize with each other and get paid for their service... just some ideas - as I said a bit offtopic.

@JonathonDunford
Copy link
Member

JonathonDunford commented Mar 29, 2018

@MichaelRazum

I agree. The tricky part is figuring out how to best pay developers/designers/marketers/etc

Re: decentralized orderbook

I think that will be in a future proposal, but Evan and I were discussing something similar last night. It's tricky because blockchains are very slow for order books so it would have to be some sort of verified P2P system I think.

@JonathonDunford
Copy link
Member

JonathonDunford commented Mar 29, 2018

https://www.youtube.com/watch?v=8Zixz45QM-k&feature=youtu.be&t=1h57m55s

Here is a speech that goes in depth about DAO vs Coop from someone with experience. He talks about a lot of benefits of the Coop model vs the DAO model.

One of the most important parts of the speech is about SEC compliance. He states that Coops need to have a 1 to 1 voting capability (one person = 1 vote) and the DAO model would be classified as a security.

If any part of it is determined to be a security, exemption under 506(c)

@mikeyb
Copy link

mikeyb commented Mar 30, 2018

REI Governance

@JonathonDunford
Copy link
Member

Peter Harris "Platform Cooperative"
- https://resonate.is/about-platform-cooperatives-and-the-investor-problem/

@JonathonDunford
Copy link
Member

@JonathonDunford
Copy link
Member

JonathonDunford commented Mar 30, 2018

*Traditional board of directors is usually CEO, CTO, CFO, COO
*These ideas for governance are largely derived from REI & RChain

Governance Model Idea

A full Board of Directors would consist of 9 people broken into 3 different tiers by term length.

Board seats have 3, 2, or 1 year terms. Board members can be re-elected.

Board seats don't have to be filled and members can choose to either not vote or vote no to potential candidates.

This system can be changed by future AIP proposals.

Board members must be voted in through an election cycle. Board members must receive the majority of votes in order to receive the position.

  • What should be done in the event of a tie?

Board members can be voted out at any time by an AIP that receives 60% or more approving votes. In the case of a board member being voted out, an election will be held immediately. The elected board member from this election cycle would hold a temporary position until the end of the previously removed board member's term.

Note: Login information for vital bits of the Agorex ecosystem will be shared between the 3 year elected board members. Legal documents will be signed by all members with login information stating the information belongs to the coop. Upon the election of new board members and removal of others, the login information should be changed and redistributed to the new board members.

Committees Idea

There could be membership subsets (committees) for specific aspects of the Coop.

Compensation Committee: A compensation committee could collectively vote on compensation issues.

@Ebonsignori Ebonsignori changed the title Organizational Structure AIP2 : Organizational Structure Mar 30, 2018
@rowmagnon
Copy link

rowmagnon commented Mar 31, 2018

Distribution of profits

I think all initial revenue should be reinvested into Agorex. We must think long-term. At minimum, there shouldn’t be profits distribution until Agorex is self-sustaining as profits can be used for expansion of operation. Although, since all revenue must be reinvested for the long-term, members can be granted tokens to incentivise contribution.

However, we should set up an expense fund to help cover costs, e.g. server, contracted works, licensing, services.

Expense fund

  • Expense fund must have oversight from a expenses/accounts committee. For a start, @JonathonDunford should have sole oversight until project develops further.
  • Approval for expenses must come from members prior to commitment, i.e. do not commit to anything before seeking approval of members or committee.
  • Members can (must?) make small contribution to the fund.
  • Are we open to donations to fund the development phase?

Removal of Membership

We need to lay out guidelines that if broken lead to being removed or suspended from voting and/or contributing or if the DAO prompts for the expulsion of a member, how is that resolved?

If guidelines are broken/breached, and depending on the seriousness of the breach, said member can be 'quarantined' until final vote/decision is made.

@activescott
Copy link
Contributor Author

Good discussions here. Some thoughts:

  1. I like the idea of a 9-member Board of Directors (BOD).
  2. We should be prepared to operate if not all members are present for a vote. In order to determine if a member is present, votes should be formally pre-announced a specified period ahead of the vote (e.g. minimum 24-48 hours) via specified mechanism (e.g. a public discord channel that only members can announce on, or a GitHub PR in a designated repo) and once the vote begins, members should have to vote within a specified time (e.g. minimum 24-48 hours) or they implicitly abstain and only a majority of present members' votes are required.
  3. I think we should avoid relying on a single member with unilateral ability to spend. This has a much greater probability to cause a schism in the BOD and community. We should quickly elect a board of directors and have all expenses approved by the board. Ideally a multi-sig wallet with a 2 of N approval (or some low threshold) would be used, but given the complexity of that, I think it's fine to just declare a vote for all expenses (or all expenses over a certain amount).
  4. Would a GitHub PR with required reviews work for BOD expense votes too? Since I believe approvals can be done in the GitHub UI I think it might be good to stick to consistent tools and processes. 🤔
  5. I also support not taking any distributions to members in the near term (I'm thinking for the foreseeable future, and with an expectation of 1 year or more).
  6. I think we should setup a donation account quickly.
  7. I am open to members being required to put in a donation. I think this demonstrates commitment and helps the org.

@activescott
Copy link
Contributor Author

NEO also has a very thoughtful and community oriented governing process/framework at: https://github.com/CityOfZion/governance

@rowmagnon
Copy link

Great write up @activescott

Everyone should read the NEO governance link. It’s a good framework.

@JonathonDunford
Copy link
Member

JonathonDunford commented Apr 4, 2018

@activescott @rowmagnon

I don't think this is mentioned here, but what we are considering is called a "Worker Cooperative" just fyi.

  1. Agreed. We should give board members certain permissions without full board approval (like approving minor changes via approved pull requests in GH repo). I think full AIPs should probably be given 2-3 days. This org AIP should also include the specified methods that we will notify board members. I propose all of the above: Discord private channel with @ everyone, texts, emails, github mentions.

  2. I agree. I don't want anyone (including myself) to have unilateral control over the funds. I shy away from multisig wallets because of adverse cases where members go AWOL, we could potentially lose access to the funds. Do you know of any solution to that? They do present a huge safety net from various attack vectors.

  3. YES. Let's keep all of our processes for all facets of the biz/exchange similar. Maybe expense decisions can be in AIPs and we can vote the same way.

  4. I think all of the money should go back into the exchange, but that also means paying developers and designers and lawyers.

  5. Agreed.

  6. I 100% believe for people to become members, they should pay some sort of fee. It could be something small like $25, but would help keep out riff-raff. We could even do this on a yearly basis.

@james8bc
Copy link

james8bc commented Apr 4, 2018

Hello, I am so glad to be on this team!

I have a few recommendations on this.

I have no legal experience so I can not speak on behalf of that.

To start, I want to speak about keeping this as decentralized as possible. This keeps the community feeling safe. To start, domains. This is one of the biggest things. I was looking for a decentralized domain name service. The best I could find is one where the user uses a special secure browser, similar to Tor. This keeps the domain 100% decentralized however. There are advantages and disadvantages to this. One possible service we may want to use is zeronet.io but you can Google “decentralized domains” to look for more info.

Next would be social media accounts. In all honesty, there is no way to prevent it from being taken over. Someone can always change the email and password so no one can get in.

As for voting and pull requests, I had an idea. I do not know how good this is, but let me know your thoughts. I was thinking of connecting the order book to the blockchain. It will get all the listed tokens from there. To add or remove, it would require a vote. If the vote passes within x amount of time, it adds that token to the list. To call the vote, it would require someone to do so. We can limit this to like requires x% of the board members to vote on calling this vote. All of this takes place on the blockchain. For delisting, we could either do the same thing or just keep it to a board member vote. While this may seem like a wild idea, I am pretty sure I could pull this off. It is not hard to call functions on the ethereum blockchain from various programming languages. Also, if we go this route we should create a decentralize function on the contract. When this is called, from that block on, delisting and listing can be voted on by the community, not requiring someone to call the vote.

On top of this, I was also thinking about maybe creating the order book on the blockchain instead of the backend order book. This prevents our order book from going down because any user can download the front end and it pulls from the blockchain, not a backend.

Let me know your thoughts, these may be terrible or brilliant ideas.

@JonathonDunford
Copy link
Member

One suggestion I have also heard is to create a corporation that takes on the legal burden and money, but also create a cooperative that owns 100% of the corporation's shares. This would limit legal liability away from cooperative members and onto the corporation, but the corporation would be fully owned by the cooperative.

@JonathonDunford
Copy link
Member

JonathonDunford commented Apr 6, 2018

Expanding upon my earlier comment:

I suggest a dual Cooperative + Corporation structure.

Basically, we would have two entities. One is a corporation and the other is a cooperative.

The cooperative would own 100% of the "shares" (voting rights) of the corporation.

The legal liability and money would go through the corporation which would shield the cooperative members from legal liability and allow us to make use of certain tax benefits of corporations.

This would also give us the ability to give investors equitable stakes in the corporation.

If the cooperative held shares of the corporation, we would still be able to vote on all decisions cooperatively.

The goal of having a cooperative in the first place is for all members to have equal voting rights and with this model, that is preserved, but there are a myriad of benefits added.

@activescott
Copy link
Contributor Author

@jamesohni To respond to your comments:

  1. Looks like one is related to decentalized DNS. I think this is a solid idea. I think some more details like exactly what names the org would use it for (is it just the front end and API DNS host names?) and what service to use would be great for you or other members to research and make specific proposal for the community to consider.

  2. Thanks for calling attention to the poor authentication for social media accounts. I think if we were to use 2FA for social media accounts it would help, but if you have other specific ideas that would be great!

  3. As for voting... I think this is a solid idea, and I think it is appropriate to get feedback from other community members before doing the significant upfront investment on this that it will require. IMHO will require a significant amount of effort to define and implement in a way that is easy for the average board member to use. It might be worth getting AIP-1 passed using a the more simple required reviews/pull requests model and in the future proposing an update/revision to AIP-1 that uses a blockchain-based voting system when the implementation is specified in detail and tooling is built out to make it easy enough to use.

Thanks for your feedback!

@JonathonDunford
Copy link
Member

@activescott

  1. I completely agree. Let's not get super bogged down in minutia. Approved PR system works for now and we can implement a DAO congress contract or something in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants