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

Implement owners-vote governance structure #199

Open
ilhanu opened this issue Nov 8, 2022 · 3 comments
Open

Implement owners-vote governance structure #199

ilhanu opened this issue Nov 8, 2022 · 3 comments
Assignees
Labels
enhancement New feature or request

Comments

@ilhanu
Copy link
Member

ilhanu commented Nov 8, 2022

We want to owners (shareholders) to be able to vote on anything regarding governance of the asset. This is can be maintenance, proposals if a tenant should be allowed or selecting and appointing a representative. Utilising the democracy and treasury frame pallet with limited features. We want to use the following function proposal, voting, tallying and executing.

Implementation:

Share conversion and generic implementation:

  1. We need to convert the shares of the assets corresponding to the NftItemId to votingWeights. @kazu suggested something about converting the asset shares to weight. With conviction voting disabled for now.
  2. We need to re-use the same weights for tallying and processing the result.

Any proposal, vote, tallying and execution should be done with the above logic from shares to weights. this will be the basis of the governance structure for the asset.

Features:

  • proposeRepresentative allows one of the owners to select and appoint a representative. This is a one time action and you can't select multiple representatives. Runtime of max 3 epoch ( configurable)
  • Vote on appointing a representative / vote on removing a representative.
    • Vote approved, execute the call to appoint the representative.
  • Spend proposal Vote on maintenance of the asset / Spend proposal for maintenance.
  • Implement access to the virtual account funds for a spend proposal.
  • Generate a field in the NftItemId struct for the representative and tenant.

Features for the representative:

  • Implement Representative to accept the job
  • Implement Representative to propose a tenant, that needs to be on-chain approved by the owners.
  • Implement a spendProposal for the representative to propose, this goes immediately to the owners of the corresponding asset. The proposal is for maintenance of the asset or improvements and can only be created by the representative of the asset.

Note: A representative can represent multiple assets

@ilhanu ilhanu added the enhancement New feature or request label Nov 8, 2022
@ilhanu ilhanu added this to the M4 milestone Nov 8, 2022
@ndkazu
Copy link
Contributor

ndkazu commented Nov 9, 2022

Share conversion

One possible way is to use the conviction_vote feature of the democracy pallet. The investor share needs to be converted into a balance that will be transfered to the asset virtual account after voting==> Voting will therefore also contribute to increase the maintenance fund of the asset.
Implementation Method:
The maximum conviction amount is fixed in the runtime, and used/combined with the investor share to calculate respective investors vote_conviction. This conviction_balance is then used in the democracy pallet, and sent to the virtual_account. Investors will have no way to modify the amount of their conviction, unless they buy additional shares from another fellow investor of course.

@ilhanu
Copy link
Member Author

ilhanu commented Nov 9, 2022

That sounds good!
Currently I think for democracy conviction is set to 0.1x, maybe we can fix this do 1x, so it's displayed and converted right.
Further I think the locking of the vote with 1x can also be disabled in the runtime, as it doesn't apply to the owners vote, also not to the investors vote (1 vote per investor id)

@ndkazu
Copy link
Contributor

ndkazu commented Nov 10, 2022

Asset management Pallet

All the above should be in an Asset management pallet that will be extended in the Future.
management of an asset includes:

  • Give owners the possibility to elect or replace a representative (conviction-voting_pallet or democracy_pallet)
  • Allow owners to decide on keeping of evicting an contentious tenant (conviction-voting_pallet or democracy_pallet)
  • Allow the representative to select tenants for an asset
  • Allow Representative to make expenses proposals for the asset (treasury_pallet)
  • Allow owners to evaluate an decide on expenses proposals (treasury_pallet)

Later the same pallet will also manage rent payment, and additional representative tasks.

@ilhanu ilhanu removed this from the M4 milestone Jan 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants