Strata Fee Management in Condominiums via Smart Contracts

: Condominiums and similar properties use a stratum to manage daily operations, and owners fund it through strata fees. While existing strata fee management systems may be able to handle such funds, such systems could be more inherently transparent. It is possible to leverage the digital ledger from blockchain networks and smart contracts to build a fully transparent strata fee management system. This paper proposes designing a strata fee management system based on a smart contract in the Ethereum network. Both strata corporations and homeowners can interact with the smart contract to execute common procedures such as paying strata fees and handling expenses. Using smart contracts for strata fee management, it is believed that the chance of fraud by strata corporations is lowered compared to other systems.


Introduction
A condominium is a building with individually owned units in the housing market. Although units in a condo are individually owned, other spaces-such as hallways, lobbies, gardens, and gyms-are collectively owned. Strata exist to ensure that certain services are provided to the residents and to handle the maintenance of the shared spaces. It is responsible for budgeting and paying these everyday expenses. Strata is considered a legal entity capable of entering contracts or being sued [1].
A condo owner has the responsibility of paying a strata fee, typically on a monthly basis. The expectation is that such funds are used responsibly by the strata. It is essential for owners to verify how and when the funds from strata fees are being used. Equally important is providing owners with a mechanism for recuperating unused funds.
Strata fees can be decentralized through blockchain technology, which produces a distributed digital ledger not controlled by a centralized authority such as the strata corporation. The distributed nature makes the digital ledger resistant to tampering [2], and the information stored within is immutable and available for anyone to see [3], creating transparency and eliminating trust issues that may arise between condo owners and the strata. A smart contract is a self-executing program stored and replicated on a blockchain, making it immutable. The terms of a smart contract are automatically executed when predetermined conditions are met [4]. Using smart contracts, it is possible to build a decentralized application (dApp) in which homeowners can pay strata fees and verify the balance of operating funds and how they are being used in real-time. In contrast, centralized and trusted third parties need to complete traditional contracts, thus incurring longer execution times and additional costs [5].
In the context of condominium strata, smart contracts can be utilized in purchasing and servicing contracts, such as gutter cleaning, elevator services and maintenance, and roofing renewals with third parties. Contract terms such as the scope of work, completion schedule, use of material, required permits, and worker qualification [6] can be coded as variables in a smart contract. Monitoring can also be achieved in the dApp by querying the contract variables' values. A comparison between the budget and the actual expense is available on demand. Hence the level of transparency is enhanced. A mocking environment of the proposed smart contract can be set up for owners and strata committees to understand the contract terms better, especially to familiarize themselves with the conditions that lead to the execution of the payment to contractors.
Smart contracts are not only useful in the context of strata fees but also in the context of communal insurance. An important aspect of home ownership is having insurance that protects the owner from damage that may occur. Traditionally, this would take the form of paying fees to an insurance company directly. This has a significant drawback in that the insurance company is a business that relies on not having to refund money to its customers if no incident has occurred. Alternative insurance can take the form of individual owners within a condominium pooling their money together in the event that one owner eventually needs it. Since this is not a business, funds can be returned to owners if needed.
The insurance industry relies heavily on complex processes between transacting parties to initiate, maintain and close various policies. The transaction processing time, payment settlement time, and process execution security are significant concerns for the insurance industry [7]. Therefore, it seeks solutions to minimize operating costs and the time it takes to process loss claims. Blockchain and smart contracts can make transactions more secure, processes more automated, and payments faster. As such, it is an efficient solution to the above problems [8].
This paper will apply blockchain and smart contract technology based on the Ethereum platform to improve the transparency of using strata fees. A voting system can be built into a smart contract to give everybody equal rights to decide on strata management affairs.
The remainder of this paper is organized as follows: • Section 2 provides current uses of blockchain technology and smart contracts in areas such as supply chains and insurance. • Section 3 presents the problem faced in current strata fee management systems and how blockchain technology can be used to improve transparency • Section 4 details the design of a strata fee management system using smart contracts. • Section 5 describes the uniqueness of the proposed strata fee management system compared to existing systems. • Section 6 describes the simulation plan to verify how the proposed system solves the problem statement • Section 7 demonstrates the results of the aforementioned system. • Section 8 discusses the security features of our system. • Section 9 highlights any conclusions and future work that has arisen during the implementation of the system.

Literature Review
The primary concept of a blockchain is its distributed nature in which it is not controlled by a centralized authority, such as a government or company, and is therefore capable of creating digital ledgers that are resistant to tampering [2]. It has a data structure similar to a linked list that is shared among all nodes on the network, where each node keeps a local copy of all its blocks starting from its genesis block. The information stored within a blockchain is immutable and available for everyone to see [3], creating transparency and eliminating trust issues that may arise when data passes through a centralized system. The combination of distributed storage and blockchain is also very important because users do not need to store much specific information on the chain but only index information [9]. A smart contract is a self-executing program stored and replicated on a distributed blockchain, at which point it becomes immutable. The terms of the smart contract are automatically executed when predetermined conditions are met. The smart contract is able to transition through predefined states as stakeholders interact with the contract [4]. In contrast, centralized and trusted third parties need to complete traditional contracts, thus incurring long execution times and additional costs [5]. The life cycle of a smart contract comprises four phases: creation, deployment, execution and completion. Smart contracts can be deployed in public, private, or consortium blockchains platforms, such as Ethereum, Hyperledger Fabric, Corda, Stellar, Rootstock, and EOS [10].
The application of blockchain technology is becoming more and more widespread [11]. According to [12], the number of relevant articles written in 2017 was only 3. This increased by a factor of 4 in 2019 with 16 newly-written relevant articles. Some use cases include the Internet of Things (IoT), sharing economy, finance, and the public sector [13]. Supply chain management involves numerous stakeholders, including manufacturers, material providers, retailers, distributors, non-governmental organizations (NGOs), and regulatory authorities. Smart contracts can be used in determining provenance, tracking goods, executing payments, and managing reputation to improve transparency and traceability, as well as automation of contract executions [14].
Due to the potential of blockchains to enhance traceability and transparency in complex supply chains, researchers are increasingly interested in deploying blockchain-based solutions for sharing information within supply chains. Over 25% of the research in the collected literature is in the health and medical field. About 87% of the literature uses blockchain-based solutions to reduce information asymmetry or facilitate information sharing [12].
There are already explorations in different areas in the medical and healthcare field. For vaccine supply, ref. [15] proposes a blockchain-based system for tracking registration, storage, and delivery of COVID-19 vaccines and self-reporting of side effects. Ref. [16] proposed a method based on the Ethereum network to realize the distribution and delivery process of the COVID-19 vaccines. Smart contracts were used to automate the recording of events related to the distribution and delivery of vaccines. They also connected the Ethereum blockchain to off-chain storage to account for the limited available storage space on the blockchain. For personal protective equipment (PPE), ref. [9] used Ethereum smart contracts to manage orders and transactions within the PPE supply chain. It enhanced product traceability while maintaining data integrity and provenance. It also increased transparency among stakeholders. Medical waste is another concern during the pandemic, ref. [17] combined the Ethereum blockchain with the decentralized storage of Interplanetary File System (IPFS) to provide a secure, transparent, auditable, reliable, traceable and trustworthy solution for the supply chain and waste management of COVID-19 medical devices.
In the agricultural industry, the traceability of products through producers, distributors, retailers, and consumers is an area in which smart contracts are being used to document the transition of goods through the supply chain [18,19]. More specifically, in supply chain management, the Ethereum network seems to be a common choice for prototyping applications [18,20]. However, there are other choices as other systems use different networks, such as a consortium blockchain [19].
According to previous literature reviews on blockchain usage in supply chain management, it has been identified that insurance and logistics is a promising directions for future research in blockchain applications [10]. One of the existing applications of smart contracts is its ability to protect different parties from contract breaches by imposing financial penalties depending on the nature of the violations [3]. This concept extends naturally to insurance policies for producers in a supply chain. Integrating the IoT with smart contracts makes it possible to create decentralized autonomous organizations (DAO) [21]. This concept [22][23][24][25] could be applied to provide automatic insurance policies due to, for example, adverse weather patterns. A similar system, in which a farmer enters into a smart contract with an insurance provider, exists; the system will lookup current weather data such as rainfall, and depending on whether a threshold is exceeded, the farmer may receive compensation to cover their losses [26,27]. Agriculture insurance has developed across economies in South East Asia. Ref. [28] proposed a blockchain-based smart contract framework for weather-based index insurance. Ref. [26] presented an end-to-end decentralized insurance prototype covering rainfall damages.
Protecting privacy while using blockchain technology is a critical consideration, as blockchains are inherently transparent and immutable. However, various mechanisms have been developed to enhance privacy in blockchain systems. Various encryption techniques [29,30], private/permissioned blockchains [31] or zero-knowledge proofs [32] are some of them. Taking traditional financial insurance as an example, the business process can be reconstructed by public chains and private chains. Ref. [33] compared using private and public blockchains to provide insurance services through smart contracts based on Hyperledger Fabric and Ethereum. Other use cases of smart contracts in insurance include improving customer experience and reducing operating costs, risk assessment and fraud prevention, and P2P insurance [34]. It is also a trend to further incorporate IoT technology to solve problems in the insurance industry. Ref. [35] examined how IoT sensors can be integrated into smart contracts to automate smart insurance scenarios fully. For the automotive industry, on-demand coverage can be activated when needed, and the sensors' data can be used for triggering the execution of smart contracts [36]. Ref. [37] proposed a blockchain-based framework for vehicular Usage Based Insurance (UBI) and incentives in Intelligent Transportation Systems (ITS). However, UBI requires a lot of critical driving data to determine premiums, which can lead to serious privacy breaches. At the same time, existing UBI solutions rely on a centralized entity (i.e., insurance company) to manage insurance. Due to that, ref. [38] designed a decentralized and privacy-preserving UBI scheme, called DUBI, based on blockchain technology and zero-knowledge proofs. Ref. [39] proposed PRIDE, another privacy-preserving and decentralized UBI that uses a blockchain to record encrypted driving data and a smart contract running on the blockchain to calculate premiums. Unlike existing UBI schemes, PRIDE achieves security and privacy without relying on any centralized party or trusted/tamper-proof hardware. Ref. [36] created a prototype comprising a mobile app and an electronic device to be installed on customers' vehicles. The app can modify policy coverage by interacting with smart contracts while the electronic device monitors vehicle status and triggers modifications. Ref. [40] presented a smart-contract-based ecosystem for simple and transparent car insurance called CAIPY. On CAIPY, smart contracts are not a replacement but an aid to the insurance process to save costs. Stakeholders can switch to existing approaches anytime, making a trade-off between cost efficiency and process reliability. Agriculture insurance has developed across economies in South East Asia. Ref. [28] proposed a blockchain-based smart contract framework for weather-based index insurance. Ref. [26] presented an end-to-end decentralized insurance prototype covering rainfall damages.
To the best of our knowledge, there is no system for strata management based on smart contracts and blockchain, thus, it makes our research and proof of concept novel.

Problem Statement
When condo owners pay strata fees, an aspect of the trust is involved regarding the use of funds. Although best practices for strata exist, such as the disclosure of budgets and financial statements [41], it is up to the strata to promote this transparency. A lot owner would be at the mercy of the strata to provide these timely and truthful financial statements.
To better guarantee transparency around expenditures, this paper proposes a strata fee management system revolving around smart contracts. As all transactions within a smart contract are stored publicly on a blockchain, this makes it possible for all stakeholders to audit the strata corporation. Figure 1 outlines a set of use cases between two sets of stakeholders. The first group of stakeholders is the owners of individual units in the condominium and are known as the strata lot owners. Their primary responsibility is to pay monthly fees to the strata corporation to fund the maintenance and shared services of the building. Additionally, they may wish to approve or reject requests made by the strata corporation to use funds, which can optionally be done automatically by setting thresholds on expenses. The second group of stakeholders is the strata corporation. Their primary responsibility is to responsibly use the money acquired from lot owners to pay for the necessary upkeep of the building. Both stakeholder groups can be generalized to a strata observer which can check the operating funds of the strata and view withdrawals of those funds. Stakeholders can transfer currency directly to a smart contract, held by the smart contract, instead of the strata corporation. This can realize decentralized property fee management compared to the traditional way of paying strata fees. In this system, when condo units are purchased, each owner will be required to create an account, and the amount to be paid will be determined according to the entitlement of the unit. For example, Table 1 documents a set of strata fees for each unit in a condo. Strata unit 1, for example, has an entitlement of 93 7077 or approximately 1.31% of the total monthly strata fee. Therefore, unit 1 pays 1.31% of the total $35, 339.10, which equates to $464.39. This information will establish a mapping of the unit ID and payment amount. After joining the blockchain, each unit owner needs to pay an agreed amount of fees to the smart contract, which collects the fees monthly. Unit owners who do not pay strata fees on time will leave traceable records on the blockchain, which will help other stakeholders know their credit history. Penalties can be designed for untrustworthy behaviour. However, this paper will not discuss this situation in detail. The system only needs to guarantee the ability to provide relevant information about the defaulter when someone breaches the contract to ensure the fee can be recovered.
The current balance of strata funds can also be obtained by querying the smart contract. This ensures transparency in the use of strata fees. The smart contract will provide a function for the stakeholders to call. For example, all stakeholders can get the value of the current balance by invoking a getBalance() function of the smart contract.
As the primary purpose of the strata is to pay for the maintenance and services of the building, an essential feature of the smart contract is to allow for the withdrawal of funds received via strata fees. Since the proposed system's defining property is transparency, all stakeholders' ability to monitor such withdrawals is essential. Any fees that were paid to the smart contract remain in the custody of the smart contract itself. Therefore, the strata must submit a request when funds need to be retrieved. Because the withdrawal is a transaction on the smart contract, this transaction is automatically recorded on the underlying blockchain. This makes it possible to do a lookup on the blockchain for every transaction ID ever recorded. As such, stakeholders such as the strata lot owners could identify when and how much the strata have used funds. If many owners had concerns about how those funds were being used, they only needed to request proof of their use.
Different owners often have different preferences and opinions on expense items, particularly when the expense is large or multiple options are available. An example could be whether a security system should be upgraded or replaced or which new security system should be selected. A consensus is required such that every owner is content with the decision. For less contentious matters, the strata council, comprised of elected representatives of owners, acts as the managing body of the strata corporation and decides on daily operation matters to keep it running smoothly [43]. However, sometimes the strata council member might put their interest above the best interest of the strata corporation. A voting mechanism can be built upon the smart contract to improve the transparency of the decision-making process. By allowing owners to vote directly for a particular expense item, the owners' involvement in managing their property is elevated, increasing the sense of belongings in the strata community. Individual owners can also set up their threshold so that if a proposed expense item is below the threshold, the owner approves the expense item automatically. This feature can keep an owner's focus on the expenses they are interested in.
In relation to expenses and strata fees, it may also be necessary for the strata corporation to adjust the strata fees from time to time. This can be approached very similarly to expenses in which the strata corporation requests the fee changes, and the owners may vote for or against the change.
Finally, owners may sell their condos for various reasons. A common practice is that the owner only pays the fee until the date they sell. After the date that they sell their property, they are no longer responsible for the strata fee. This practice can be implemented in the smart contract.

System Design
The design of the smart contract is based on the use cases in Figure 1, from the perspective of both strata lot owners and strata corporation, which is responsible for managing and maintaining the common property and assets of the strata development for the benefit of all of its owners [1]. Therefore, the smart contract stores strata lot information, including the owners and the entitlements, and the expense items at different stages, including expenses proposed by the strata corporation, pending approval, approved or rejected, and spent. With this data, the smart contract provides these operations: 1.
For all stakeholders: To keep the design simple, we are making several reasonable assumptions without loss of generality: 1.
The ledger of the strata corporation is public information. Everyone can see the information from the blockchain.

2.
All expenses will be considered instantaneous. All lot owners will be responsible for a certain percentage of the expense at the time it occurs according to the entitlement of the lot.

3.
Overdue expenses will not be charged interest or other fees. Table 2 defines a set of variables used when describing the system in the following sections. Table 2. The set of variables used to define the strata fee management system.

A
An Ethereum wallet address, which uniquely identifies the sender of transactions to a smart contract B L The balance of strata fees owed by strata lot L E The total entitlement of all strata lots E L The entitlement of strata lot L F The total strata fee per month across all lots F 1 The daily strata fee per 1 entitlement in wei F d The strata fee per 1 entitlement in wei for d days Several structures are introduced to describe the data mappings, shown in Figure 2. The Unit structure denotes the strata lot unit's basic information and is managed by the smart contract. Each unit is owned by an Owner, which holds an OwnershipRecord over the Unit. The smart contract tracks all owners in the condominium.
The strata corporation proposes expenses or strata fee changes, each generating a RequestItem, also tracked by the smart contract. These expenses are proposed when the strata request withdrawals. Each expense can be either approved, rejected, pending, or completed.

Functions
The strata contract requires calculating the strata fee of all individual lots. Intuitively, to compute the fee of the lot ID L, the total strata fee per month F, which is determined by the budget, the entitlement ratio of each lot E L , and the total entitlement E. Equation (1) shows their relationship for calculating the monthly fee assuming d m days in a month: Another way to calculate the monthly strata fee of lot L is shown in Equation (2): where: F 1 is the strata fee per unit entitlement per day E L is the entitlement of strata lot L Equation (2) avoids storing an entitlement ratio fraction, that is E L E , in the smart contract. F 1 is stored in wei, the smallest possible denomination of the cryptocurrency in the Ethereum network. This will prevent the occurrence of decimal places in any intermediate steps or final results of calculations. This makes Equation (2) advantageous over Equation (1).
When a strata property is constructed, the strata lots and their corresponding entitlements are fixed. A budget, including the strata fee and budgeted expenses, is also set up for the first year of the strata. Therefore in creating a strata fee management smart contract, the strata lots and their corresponding entitlements, as well as the budget, are needed. Hence, the constructor of the smart contract receives the strata lot IDs, their entitlements and the initial budget. Upon deployment of the smart contract, the deployer's address is assumed to be the address of the strata corporation's account. This is the only account that can request and withdraw expenses from the contract.
Also, as part of smart contract initialization, the strata corporation itself will own all lots in the building and can later transfer ownership to other people. When buyers purchase strata lots from a property developer, the transferOwner should be invoked. The new owner will be responsible for the strata fee from that point forward, and they can view and vote on the strata expenses. When owners want to sell their units, they may also use the transferOwner function in the contract to do this.
The core responsibility of the smart contract is the management of strata fees. A key aspect of this is receiving and storing strata fees paid by lot owners. The contract provides a payStrataFee function for precisely this purpose. This function will verify the address A of the sender via a mapping of L → A. Once confirmed, the contract will take ownership of the funds. Strata fees that are paid will be debited in a map from L → B L , where B L represents the credit balance of strata fees for unit L.
The strata corporation is expected to invoke collectStrataFeePayments monthly. When called, each unit's monthly fee F L is incremented to B L . If the owner does not hold the strata lot for the whole month, the strata fee F d is prorated according to the number of days of their ownership in Equation (3): where: d is the number of days the owner owns the strata lot The target balance of B L should be 0, but it is possible that it may be positive or negative. A positive amount will indicate that lot L has overdue payments, while a negative amount indicates a surplus of payments.
If the strata want to know the list of lots with overdue strata fees, it can call the function getStrataFeeBalances, which will return L → B L . This will allow the strata to iterate through the mapping and find strata lots with large positive balances, representing overdue payments to be collected.
The other key aspect of strata fee management is the usage of funds for expenses, which includes paying for expenses or raising strata fees when annual budgets change. One mechanism is allowing the strata to withdraw funds for an expense or raise fees directly. However, the lot owners may only agree with some usages of funds. Therefore, a phased approach, which includes a voting mechanism, is taken. Withdrawals and fee changes are broken into the following steps: 1.
The strata makes a request via a requestWithdrawal or requestStrataFeeChange function for a particular amount and provides a reason. This triggers a vote and creates a request item. No withdrawals or strata fee changes are performed at this time.

2.
Lot owners have a set time to vote on the request. In the case of expenses, if a requested amount is above or below a certain amount, an automatic approval or rejection vote may be given depending on each lot owner's chosen thresholds. Otherwise, the lot owner may vote on a request using the voteOnRequest function. 3.
The request may transition to an approved or rejected state if a sufficient number of votes has been received. If the request is approved, the contract will automatically attempt to complete the request by finalizing the strata fee change or sending the requested amount to the strata corporation account, at which point the request transitions to a completed state. Automatic completion is not guaranteed to occur if there are conditions that would prevent it, such as insufficient strata fee balance to perform a requested withdrawal. 4.
The strata may attempt to perform the withdrawal or strata fee change via withdraw or changeStrataFee, respectively. At this point, the contract checks the result of the voting process. If only a request is approved, the smart contract will finalize the withdrawal or fee change and change the request status to completed. The strata are only required to explicitly perform this action if the request was not automatically completed.
The smart contract's exact process for handling withdrawal requests and strata fee changes is outlined in Figure 3.
Commonly, the ownership will be transferred, so it is necessary to have a function transferOwner to handle it. When transferring ownership, a new owner's account address must be provided, creating a new mapping of L → A from that point forward. The ownership start date and paid strata fees will be reset when a new owner is assigned to the unit.
Upon transfer of ownership, the smart contract will facilitate a refund of strata fee payments to the previous owner. The refund will be calculated in Equation (4) where d p is the number of days between the last date of the strata fee collected and the date of ownership transfer, meaning F d pL is the strata fee for d p days for unit L as per Equation (3). Note that Equation (4) is taking the balance owed since the last strata fee collection and adding the balance accrued over the d p days that have elapsed since the last collection. Since the balance is tracked where a negative amount means a surplus of strata fees have been paid, the refund amount is multiplied by −1 to account for this and is floored at 0.

Message Signing
A key characteristic of the strata fee management system is the need to verify identity. Certain operations, such as voting or paying strata fees, are associated with lot ID L. With Ethereum as the underlying blockchain, every transaction is cryptographically signed using Elliptic Curve Digital Signature Algorithm (ECDSA) [44], which allows confidence in who sends each message to a smart contract. The implementation of this is outside the scope of this paper, as this is handled under the hood by the Ethereum blockchain and wallets, which will sign and verify the transactions automatically.
Each message sent to the smart contract provides an address A describing the Ethereum wallet that sent the message. To obtain useful information from this, the smart contract must have a mapping L → A, which will allow the contract to verify that nobody can act on behalf of a strata lot other than the one(s) that they own. As per Figure 2, the smart contract only needs to do a lookup on the owner of a unit to obtain the necessary address information. Similarly, the strata account is also held by the contract to verify the identity of the strata corporation itself.

State of the Art Features
The most common strata voting method at present is a meeting. Online meetings have become popular during the pandemic [45]. For example, BC Province has allowed electronic strata meetings during the pandemic [46]. The ability to hold meetings or hearings using telephone conference calls or an online application helped strata corporations comply with the orders and recommendations of BC's Provincial Health Officer. A more professional way is to use a third-party company's voting system, which can eliminate time restraints and provide more information compared with strata vote meetings. For instance, PowerStrata is a strata management platform comply with BC legislation and SPA (Strata Property Act) [47]. It has a user-friendly and intuitive interface and provides centralized access to multiple property profiles for strata managers.
The strata fee is managed by smart contracts that automatically perform actions based on voting results. If the vote is passed, the smart contract automatically transfers the funds to the strata management account; if the vote fails, the transaction will not be performed. It ensures the decentralization of fund management and uses as well.
Most existing applications on strata management focus on reducing costs, improving communications, streamlining operations and providing record keeping [48][49][50]. However, they need to provide transparency in the ledger of the strata corporation. The financial information is only available when the expenses are disclosed or when the income statement balance sheets are available monthly, quarterly, semi-annually or annually for owners. Although the budget is pre-approved, the actual expense may exceed the budget from time to time due to various reasons, such as inflation.
Transparency can be achieved by implementing a smart contract to keep track of transactions. Every transaction, including every expense item and every strata fee collection, is recorded in the blockchain and available for every owner. Hence owners can monitor the most updated financial situation at their convenience. A voting system has been implemented to allow owners to achieve a consensus for each expense.
The smart contract on the blockchain provides transparency and retains the information indefinitely. This fulfils the record-keeping requirement of most jurisdictions. For example, in British Columbia, the voting results should be kept for at least six years [51]. The decentralized feature of blockchain enables multiple copies of the information in various locations and improves the robustness.
The smart contract provides an Application Programming Interface (API) with which dApps can interact, providing flexibility to develop features when necessary. Multiple dApps can be built for different stakeholders for different functions, for instance, an application can be created for monitoring the strata fee collection, and another application can be built for owners to vote for proposed expenses.
IoTs can also be utilized for specific scenarios in the future. One example is that in an elevator maintenance contract, IoT sensors can send out data indicating the condition of the elevator, and the fund withdrawal will be triggered only if the conditions are satisfied, ensuring the quality of the work.

Implementation Details
The smart contract is implemented as designed in Figure 2 and deployed to a Ganache private blockchain. It provides a suitable testing environment which includes Ethereum wallets with a large amount of ether. The Truffle development environment is used to compile and deploy the smart contract to the private blockchain.
A web application, such as the one in Figure 4 serves as a front end and proof of concept for a strata fee management system based on a smart contract could look like. The application is written using React and the web3.js library, allowing interaction with deployed smart contracts. The web app interface is created with MetaMask, a web browser extension for managing a person's Ethereum wallets. All data is obtained directly from a deployed strata fee management contract. The smart contract application manages a condominium consisting of units based on Table 1. This provides a real-world example of strata fees and entitlements with units. Strata lot fees are converted from dollars into ether or wei, which are the units of currency in Ethereum (at current prices from March 2023, 1 ether is valued around CAD 2500$. 1 ether is equivalent to 10 18 wei, the smallest unit of ether).
The combination of both the web app and the deployed smart contract creates a dApp that provides enough capability to demonstrate every use case identified in Figure 1. Every use case was tested to verify that it is achieved and to identify the potential pitfalls of a strata fee management system based on a smart contract. By generating multiple Ethereum wallets, it is possible for a single person to simulate the behaviours of multiple actors in the strata fee management system. For example, one could act as a strata corporation with ten wallets and nine unique strata lot owners. It would be possible to transfer ownership between the accounts and to independently perform other actions, such as paying strata fees or voting on requests. Therefore, the strata corporation's and individual owners' entire life cycle can be simulated. In particular, four cycles we focused on: 1.
The ownership cycle, whereby an owner sells their unit to another person 2.
The strata fee collection cycle, whereby owners pay, and the strata corporation collects strata fees 3.
The expense cycle, whereby the strata corporation proposes an expense, the owners vote on it, and the strata corporation withdraws the strata fee funds for the expense 4.
The strata fee change cycle, whereby the strata corporation proposes a strata fee change, the owners vote on it, and the strata corporation finalizes the fee change One of the use cases revolves around ensuring transparency with what is happening with strata fees. Ganache provides valuable tools for viewing the transaction history as well as event history on the blockchain. This gives us a proof of transparency in the strata fee management system. An example of this is in Figure 5, where the history of events emitted by the smart contract can be seen. These same events are consumed by the React application to enable dynamic updating.

Discussion
The smart contract provides an API presented in the UML of Figure 2. The contract itself is capable of validating who has the capability of invoking certain functions and rejecting transactions from unauthorized actors. For example, as per Figure 1, only strata lot owners are allowed to vote for a strata fee change request, while others, including the strata corporation, are not. The mechanism of API authorization has been built based on the digital wallets of the Ethereum network. Strata lot owners and the strata corporation are identified by the addresses of digital wallets, which are stored in the smart contract.

Ownership
At the creation of the smart contract, it is assumed that the wallet that created the smart contract is the strata corporation and that the strata corporation owns all lots. Thus, the strata corporation can later transfer the ownership to the actual owner when the property developer sells the lots to buyers.
With the use of a digital wallet address as the identifier of an owner in the smart contract, unlike other systems, owners do not need to create an account in other systems to pay strata fees or vote, which means they do not need to remember an extra username and password.
The smart contract only stores the digital wallet address of the owners. Other information about the owners is not recorded in the smart contract. As a result, it does not provide the functionality of the title search of the strata lots. The strata corporation would need to store the owners' information, such as phone numbers, separately in other systems or smart contracts for communication and other purposes.

Strata Fee Collection
A smart contract-based strata fee management system is superior to low-tech solutions that pay fees via cheque. Payment of strata fees is similar to using online banking to transfer funds. The key difference is that this system is based on the Ethereum network and uses ether as the currency. Therefore, the amounts that strata lot owners pay may fluctuate when converted into CAD. It may be possible to use a stablecoin, which is a cryptocurrency tied to another currency, such as CAD, but this possibility has yet to be explored. However, if feasible, it would mitigate this flaw and leave the smart contract-based system on par with a more traditional strata fee management system.
An advantage of a smart contract compared to a centralized application is that the strata corporation or any other third party holds no money. It is instead held by the smart contract, which is not controlled by any single entity. This provides a layer of confidence to the strata lot owners that their funds will not be misused.
Smart contracts, unfortunately, do have limitations in what they are capable of doing. One significant limitation is that it is impossible to execute code at a predetermined time. Instead, an actor in the system is required to send a transaction to the smart contract. At this point, the contract could determine if a predetermined time has passed and either proceed with or cancel the transaction. This limitation is significant when updating how much each strata lot owes at any given time. To counteract this, a collectStrataFeePayments function is necessary to update the amounts owed since the last time the function was called. Non-blockchain-based software does not need to do this, as no limitation prevents code from running periodically.
While it is possible to implement floating point arithmetic within the smart contract, this increases gas consumption, a fee paid to execute transactions on the Ethereum network. The usage of floating point numbers also introduces rounding errors. Finally, floating point arithmetic must be more natively supported in Ethereum-based smart contracts. We implemented the Equation (2) instead of Equation (1) to avoid these issues. The round error is eliminated, and the dependency on external library handling floating point calculation is removed, which is crucial in financial systems. All calculations are in the whole number, saving computation costs [52].

Expense and Strata Fee Change Requests
Expenses and strata fee changes need to go through an approval process by the strata lot owners. The requested amount can be entered, and the reason for the change can be provided. When the voting approval conditions are met, the smart contract will automatically transfer funds to the strata account or adjust the strata fee. This means the owners no longer need to gather and vote. Furthermore, the whole process is managed by smart contracts without any third-party intervention, which means even strata management cannot misuse the fee. Also, since the contract and transactions are on the blockchain, all voting results are transparent and tractable.
However, compared with the traditional vote system, there will be an extra cost for the lot owners in gas fees. The gas consumption will be evident if an owner has many properties. In our test, if a house owner has more than 50 units, the transaction fee of each request vote will be surprisingly high. However, we consider this an edge case, as a person will usually only hold 1 unit under a stratum.

Other Discussions
All operations are recorded as transactions in a blockchain which are publicly visible and immutable. As Figure 6 shows, all stakeholders can check the transaction history and related details to ensure there is no fraudulent behaviour from any party. The history could be used as legal evidence if there are any disputes. Furthermore, the smart contract cannot be modified once it is deployed. Every strata lot owner effectively agrees to a contract that cannot be broken.
Due to smart contracts being immutable, a new version of the contract must be created and deployed if a bug is ever found in the strata fee management contract. This will re-incur the gas costs associated with contract deployment. In addition, the data from the previous contract will need to be correctly migrated to the new contract during deployment. This data includes the state of each strata lot unit as well as the strata fee balance stored within the previous contract. Unfortunately, this is a more complex process than upgrading a traditional software system. Also, using a smart contract may save some cloud storage or server expenses as this information is stored in Ethereum. As a trade-off, gas consumption costs will be associated with storing strata fee data within the smart contract. These gas costs can also be seen in Figure 6a. In particular, operations that modify the data stored by the smart contract will tend to be more expensive in terms of gas costs than operations that do not mutate data.
The blockchain provides built-in redundancy to ensure that the strata fee management system is always available. This would be on par with other web service providers that provide sufficiently high availability per their service-level agreement.

Security
Security in any financial system that handles transactions over communication networks is crucial [53][54][55]. It is the same for the strata fee management systems. To ensure the transactions are made only by legitimate users, message signing is required to verify the identity before requesting the smart contract. With Ethereum as the blockchain storing the smart contract, all transactions are signed cryptographically using Elliptic Curve Digital Signature Algorithm [56]. The signature in the message provides proof that it comes from a certain address, which is used in the smart contract to identify the ownership of a unit. The smart contract keeps a table of each strata lot and the address of its owner; when a transaction, such as voting on a particular expense or transferring the ownership of a strata lot, is requested, the address of that request must match the one in the table.
When an expense is withdrawn from the smart contract, the expense must be transferred to the address of the strata corporation specified in the smart contract. This ensures no expense is assigned to unwanted addresses. The front-end web application, the interface between users and the smart contract, utilizes MetaMask to manage Ethereum wallets. It stores private information and performs message signing locally on the user's machine. Therefore no transfer of any credentials through the Internet is needed. The smart contract's immutability prevents the contract code from being modified maliciously. Combining all these security measures, the smart contract can ensure the processes in the smart contract works as designed by legitimate users.

Future Work
Gas costs are the major drawback identified in the strata fee management system. Specifically, storing strata fee data is one of the most costly aspects leading to high gas costs. If gas costs are too high, it is unlikely that strata would choose to adopt a strata fee management system based on a smart contract. With careful optimization of the smart contract code, it is possible to reduce the gas costs to something that may not be prohibitively expensive. However, it may be possible to avoid storing information such as requests or strata lot information within the smart contract and instead store it in off-blockchain storage. This strategy for reducing gas costs would require additional exploration.
Another direction of future work is to expand to various voting mechanisms. The current voting mechanism is a majority vote such that if more than half of the votes are in favour, the request gets passed. According to the legal requirements of BC [57], there are currently acceptable voting methods such as a 3 /4 vote or an 80% vote. 80% Vote is similar to the majority: if more than 80% of the owners agree, it will be passed. This ratio can be determined according to the results discussed by all strata members in advance. A 3 /4 vote requires that at least 3 /4 of the votes are cast in favour by eligible voters at the time the vote was taken. However, if a request requiring a 3 /4 vote was passed at a general meeting by persons holding less than 50% of the votes in the strata corporation, then the strata council cannot implement the resolution.
Strata voting entitlements can be varied as well. While one strata lot usually has one vote, in some cases, one can have multiple votes. For example, a non-residential strata lot can have a vote in proportion to its unit entitlement divided by either the average residential unit entitlement in mixed-use developments [58].