Agorex-io / Proposals

4 stars 0 forks source link

AIP2 : Organizational Structure #2

Open activescott opened 6 years ago

activescott commented 6 years ago

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

Options

How are policies formally determined?

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

Discussions

References & Citations

Ebonsignori commented 6 years ago

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 commented 6 years ago

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:

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 commented 6 years ago

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 commented 6 years ago

@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 commented 6 years ago

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 commented 6 years ago

REI Governance

JonathonDunford commented 6 years ago

Peter Harris "Platform Cooperative"

JonathonDunford commented 6 years ago

https://www.rei.com/content/dam/documents/pdf/principles.pdf

JonathonDunford commented 6 years ago

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.

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.

rowmagnon commented 6 years ago

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

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 commented 6 years ago

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 commented 6 years ago

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

rowmagnon commented 6 years ago

Great write up @activescott

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

JonathonDunford commented 6 years ago

@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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

@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 commented 6 years ago

@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.