Property Governance - Testing
Prerequisites:
Users must complete DID/KYC/KYB/AML (Kilt DID & Deloitte Verifiable Credentials) process and be whitelisted.
Accounts must be whitelisted by the sudo account using the add_to_whitelist function in the xcavate_whitelist pallet.
Setup: Follow the steps in the NFT Marketplace documentation up to point 5 ("Buying Process"). Also, follow the steps in the Property Management documentation up to point 4 ("Distribute Income"). A property must be listed, sold, and assigned a letting agent.
1. Propose
Purpose:
Letting agents propose funding for property-related expenses.
Function: propose
Called by: Letting agent
Parameters:
assetId: ID of the property
amount: Amount of funds requested
data: Details of the proposal
Process:
The letting agent initiates a proposal for necessary expenses (e.g., repairs).
Proposals need at least 50% approval to pass.
Proposals below 500 tokens (per runtime config) are executed directly.
Note: Proposals allow for transparent and democratic decision-making regarding property expenses.
2. Voting on Proposal
Purpose:
Token holders vote on proposals based on their token holdings.
Function: voteOnProposal
Called by: Token holder/property owner
Parameters:
proposalId: ID of the proposal
vote: Enum (yes or no)
Note: View proposal status: Query proposals in chain state. ProposalId starts at 1.
Note: View votes: Query ongoingVotes in chain state.
Outcome:
Accepted proposals transfer the amount to the letting agent, deducted from real estate reserves.
If reserves are insufficient, the deficit is added to real estate debt, to be paid from future income.
Note: Voting ensures that token holders have a say in significant property-related decisions.
3. Challenge Letting Agent
Purpose:
Property owners express distrust and potentially replace a letting agent.
Function: challengeAgainstLettingAgent
Called by: Property owner
Parameters:
assetId: ID of the property
Note: Challenge process has four stages:
Stage 1: Vote to express mistrust.
Stage 2: Letting agent defends (no voting).
Stage 3: Vote to slash the letting agent.
Stage 4: Vote to change the letting agent.
Note: The challenge process ensures accountability and provides a mechanism for addressing grievances against letting agents.
4. Vote on Challenge
Purpose:
Property owners vote on each stage of a challenge against a letting agent.
Function: voteOnLettingAgentChallenge
Called by: Property owner
Parameters:
challengeId: ID of the challenge
vote: Enum (yes or no)
Note: Token owners must vote for each stage (except stage 2) individually. If a stage has at least 50% no votes, the challenge will be removed. To successfully remove a landlord, each stage must have enough Yes votes.
Note: View challenge status: Query challenges in chain state.
Note: View current voting: Query ongoingChallengeVotes in chain state, specifying challengeId and current stage.
Note: Voting on challenges allows property owners to take collective action against underperforming or unethical letting agents.
Last updated