This document describes the technical specifications of the DAAS project with a minimum introduction to the background.
- Decentralised Autonomous Association Switzerland – DAAS
The goal of this project is to create a decentralized autonomous association (DAA) that represents digitally and legitimely a Swiss association.
The description is architecture agnostic but aims at being implemented on the Ethereum public blockchain.
The DAAS is suitable for any Swiss association incorporated under the Swiss Civil Code. It is represented by one natural person (delegate), who holds the office for x years and is eligible to perform certain managerial tasks including setting annual general assembly (GA) of all members. Members are accepted upon successful whitelisting and payment of membership fee. There should be at least two white-listers who examine membership applications for the DAAS. The delegate is a special member of the DAAS. While whitelisters do not necessarily need to
To request membership, the prospective member needs:
Then white-listers need to:
Upon success, the person is ready to become a new member. The only step left is to pay the membership fee, as:
Each member has equal rights to initiate a propose, as well as vote on them. A typical voting process is like below
To vote for an ordinary proposal:
To conclude a proposal:
-
Membership management
- Accessible contract [Abstract]: Holds the structure of membership system. Three roles exists in the sytem: delegate, member, whitelister. i.e. There are one delegate who represents legally the association; Members who can propose and vote for proposals of the association; Whitelisters, who have the write to promote new members upon thorough examination of their identities (either online or offline).
- Membership contract: Defines actual functionalities that each role can do.
-
Proposal management
- MinimalProposal [Abstract]: Holds the common pattern of all the proposals that belong to the two sub-categories - normal proposal and administrative proposal (aka. GA proposal). The list of all the proposals is stored inside a mapping in such contract. Proposals have limited period that is allowed to be open, this information is calculated via the library TallyClerk.
- ProposalManager: Creation / voting and other operations on proposals are conducted via this contract. The conclusion of the proposal is calculated with logic inside TallyClerk contract.
- ProposalInterface: an interface that allows other ocntracts communicate with each other.
-
General Assembly (GA): The GA is described in the GAManager contract, where historical and future GAs are saved inside this contract.
-
Treasury
- Treasury: The portal that manages all the financial operations of the DAAS.
- Wallet: Wallet that holds contribution from members.
- ExternalWallet: Wallet that holds the depositiion from external companies who want to sponsor one or many project/proposal(s). The wallet holds the money until the such project and Please beware that no GA proposal accepts sponsorships.
-
DAA: contract deployer and address manager.
Name of functions | startingTime | endingTime | candidate | proposedGADate | proposedStatute | internalWallet | externalWallet | wait for GA to set up voting time? |
---|---|---|---|---|---|---|---|---|
createDelegateCandidancyProposal | 0 | 0 | msg.sender | 0 | "" | 0x0 | 0x0 | Yes |
createGADateProposal | _votingStarts | _votingEnds | 0x0 | _proposedTime | "" | 0x0 | 0x0 | No |
createcProposal | 0 | 0 | 0x0 | 0 | "" | 0x0 | 0x0 | Yes |
createUpdateStatuteProposal | 0 | 0 | 0x0 | 0 | _newHash | 0x0 | 0x0 | Yes |
createExpelMemberProposal | _startingTime | _endingTime | _targetMember | 0 | "" | 0x0 | 0x0 | No |
createUpdateWalletProposal | 0 | 0 | 0x0 | 0 | "" | _internalWallet | _externalWallet | Yes |
To make a GA proposal, it follows the procedure below:
To make an ordinary proposal, it follows:
There are two types of General Assembly (GA). One is the ordinary GA, set by the delegate; The other one is the extraordinary GA, set by a proposal. Such proposal should be initiated by any member in case of emergency and voted by all members.
- Finished deployment for all the concrete contracts.
- Membership
- (TalleyClerk LIbrary)
- ProposalManager
- GAManager
- Wallet
- ExternalWallet
- Treasury
- Transfer ownership of Wallet and ExternalWallet from deployer to Treasury.
- Transfer ownership from deployer to DAA contract.
- Finished deployment for DAA
- Call finishDeployment function in DAA contract.
We need to run the setProposalToGA first, so that the special proposals are set with an apropiate starting and closing time.
-
Delegate candidancy proposal (if exists):
Each candidate is represented by one proposal. Therefore, all the candidancy propsals need to be open at the same time, so that members can choose which to vote for.
-
If the election for the new delegate needs multiple rounds. The round is then set to the end of the scheduled GA. If the current GA is fully booked, the GA is automatically extended upon request.
- Swiss Civil Code of 10 December 2017 https://www.admin.ch/opc/en/classified-compilation/19070042/index.html#
- Web template: Adminator HTML5 Admin Template
- Smart contract dev tool: Truffle