The Grenfell Tower incident is a famous disaster that occured in 2017 in London, where a block of flats caught on fire, resulting in 72 deaths and many injuries. This was initially started by a faulty refrigerator catching fire in one flat, however the reason it spread was due to the external cladding. The incident became a topic of debate for a wide range of reasons, one of which was due to demand for someone to be held responsible, however, the issue faced was that it is unclear who should be blamed for this. Our project would have been useful for something like this, where there are accountability issues, as the use of blockchain means that the construction records cannot be modified and there would be evidence of who authorised/carried out any particular aspect of construction. The benefit of this is that it makes it easier to see who is responsible for any part of the construction and will likely make workers think extra carefully in regards to safety and smart planning as there will be a clear ‘paper trail’. |
Currently, there are not a lot of companies using blockchain in the construction industry, however one case where this is being experimented with is in an Amsterdam-based construction company called HerenBouw. The company is experimenting with and demonstrating the usefulness of blockchain in the industry. It is using blockchain in a project management system with the aim of making use of the benefits that blockchain brings to construction, such as delivering information in a timely manner, ensuring that communication is unambiguous and reducing the likelihood of mistakes occurring. It is currently in progress at the moment so it is too early to measure its success, however there is a good chance it will prove successful and be implemented by other companies. |
Procore is one of many pieces of software that is available to use in the construction industry for project management. It allows users to manage projects, resources and financials from the project planning stages to project closeout. It allows managers to handle project details, schedule tasks and view progress. Pros - cloud-based; provides complete project history including changes in records, such as drawings, financials, etc; reliable database Cons - user interface difficult for people without good computer skills; not great for accounting; |
BIM 360 is a unified platform that connects project teams and data in real-time, from design through construction, supporting informed decision-making and leading to more predictable and profitable outcomes. Pros - good value for money; allows changes to be monitored easily; great for real-time coordination Cons - difficult to track issues in design stage; user interface difficult for people without good computer skills; |
Revit software allows design and construction professionals to bring ideas from concept to construction with a coordinated and consistent model-based approach. The software allows users to design buildings and its components in 3D. Pros - allows for energy-efficient design; everything is drawn in 3D; wide-range of functionality Cons - difficult to design interiors; complex to use; hard to combine with documents |
AutoCAD is allows architects, engineers and construction professionals to create precise 2D and 3D drawings. Pros - ability to work in 3D space; cloud features; can coordinate entire construction drawing documentation; can manage exact details and measures Cons - complex to use; takes a long time to do everything such as drawing in lines; expensive; memory-intensive |
After considering several different development platforms, we decided to settle down with Unity for a few reasons.
The other development platforms that we considered were Android Studio and Unreal Engine.
Vuforia: SDK to develop AR applications for Unity. We use this to implement object-based markers,
which was a 5/10 pound bill in our case, where we
could place down our models onto the marker.
Development Platform | Advantages | Disadvantages | |
---|---|---|---|
Unity |
◘ Big Asset Store for testing purposes ◘ Unity Experts from Avanade ◘ Tech Support from Unity is efficient ◘ Good Cross Platform compatibility |
◘ Documentation of several features out of date, or non-existent ◘ Until Unity 5.0, the engine is set to remain in 32-bit. ◘ Engine not suitable for AAA Games as it silently crashes when out of memory. ◘ No OpenGL support to 4.x |
|
Unreal Engine |
◘ Suitable for AAA Games ◘ Very good graphics ◘ Rendering technology is more efficient, engine runs quite fast ◘ Best tool for optimization of the game |
◘ Licensed copy for working needed ◘ Pay 5% tax after the game will be profitable ◘ Creating simple games, unreal engine is not suitable ◘ Not suitable for single person/small group development |
|
Android Studio | ◘ Official Integrated Development Environment for the Android platform |
◘ Not beginner friendly ◘ Much of the information available, even through official channels is out of date or too dense to make heads or tails of |
As testing on the ethereum mainnet is costly, we have decided to first deploy our smart contracts to a test network as it runs the same protocol as Ethereum. This allowed us to carry out testing while building our dApp or experimenting on the network without fear of losing money using real ETH on the mainnet. We settled on Ropsten test network after our research between the more popular testnet options.
Test Networks | Advantages | Disadvantages |
---|---|---|
Ropsten |
◘ This reproduces the Ethereum mainnet as it is also a proof of work network ◘ ETH can be mined or requested from a faucet ◘ More supported by public tools such as Geth and Parity |
◘ Not immune to spam attacks |
Rinkeby | ◘ Immune to spam attacks because the ether supply is controlled by trusted parties |
◘ Proof of Authority - doesn’t replicate the production environment of the mainnet ◘ Ether cannot be mined, it can only be accessed through the faucet ◘ Only supported in Geth |
Kovan | ◘ Immune to spam attacks |
◘ Not supported in Geth ◘ Ether can only be obtained through faucets ◘ Proof of Authority - doesn’t replicate the production environment of the mainnet |
Blockchain | Pros | Cons | |
---|---|---|---|
Ethereum |
|
|
|
Quorum |
|
|
|
Bitcoin |
|
|
|
Hyperledger Fabric |
|
|
Pros and Cons of using Public/Private Blockchain: Ethereum is a public and open blockchain meaning anyone can view, edit and push data onto the blockchain. This leaves a big hole in security and will leave ser data exposed to the public domain. Even though public blockchains are more transparent and allow us to achieve full decentralization, it is a lot slower where Ethereum is only able to handle 15 transactions per second (TPS). Private blockchains on the other hand are able to process hundreds of thousands of TPS, significantly improving performance and stability; it is able to achieve this through a few authoritative nodes found in the blockchain. Private blockchain allows users to be more selective on who can edit and push data, users can also choose a closed or open blockchain which essentially restricts who can view data. The private blockchain we settled for was Quorum.
WebApp | Description | Advantages | Disadvantages | |
---|---|---|---|---|
React | Open source JS library |
◘ Hot Reloading ◘ Provides more freedom as it only provides the “view”, we are free to utilise many other libraries ◘ Javascript knowledge sufficient to work on React ◘ Virtual DOM and physical DOM, faster runtime speeds as only a specific component is re-rendered during events ◘ Reusable components ◘ Easy debugging and testing |
◘ Slower runtime speeds on complex cases ◘ Poor documentation when it comes to implementing external tools and libraries ◘ JSX may have a steep learning curve ◘ One way data binding: we are required to update the model state every time we make changes to the UI element |
|
Angular | Full-fledged MVC framework |
◘ More documentation and tutorial available ◘ Directives that allows developers to create complex and richer contents through HTML by assigning special behaviours to the DOM ◘ Two way data binding: UI element changes affect the corresponding model. ◘ Ability to reuse component |
◘ Less flexibility as we can’t use external libraries for some in-built functions. ◘ Performance: Dynamic and complex apps do not perform well on Angular. E.g. SPAs ◘ Steep learning curve as Angular is a framework we need to learn additional specific syntax. |
|
Vanilla Javascript | Plain Javascript without additional libraries such as JQuery etc. |
◘ Fast ◘ Reliable with loads of support ◘ Proper documentation and instructions. ◘ Sufficient as almost everything can be done in JS without utilizing external frameworks etc. Most of the frameworks are also based off Javascript |
◘ Tedious as with additional frameworks we can cut down the amount of code we have to write, reducing complexity. |
In conclusion, we decided to use React, as React allows us to obtain the injected web3 in the browser from metamask. This would simplify the process of establishing the connection to the blockchain. React is also a technology that most of us are familiar with and is easier to develop together as it is component based.
Name | Description | |
---|---|---|
Truffle |
◘ Truffle is a development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM) ◘ Truffle allows us to carry out built-in smart contract compilation, linking, development and binary management and package management through NPM. Network management is also supported in Truffle for deploying to any number & private networks which can be found in truffle-config.js ◘ Accessible from the terminal and is more supported for building dapps |
|
Ganache |
◘ Ganache is used to create a small and private Ethereum blockchain network to run tests, execute commands and inspect state while controlling how the chain operates. It gives you the ability to perform all actions you would on the main chain without the cost. ◘ Many developers use this to test their smart contracts during development. It provides convenient tools such as advanced mining controls and a built-in block explorer. ◘ We utilised this to test the initial functionalities of the smart contract before deploying it to the Testnet. |
|
Remix | ◘ Remix is an IDE for the smart contract programming language Solidity and has an integrated debugger and testing environment. Remix is also able to test and deploy contracts, hence, along with its useful debugging tools, we utilise remix to deploy and test our smart contracts before including them in our DApp | |
Solidity | ◘ Solidity is utilised to write smart contracts on various blockchain platforms, we are using Ethereum. Our smart contracts are developed on Solidity and compiled through Truffle, Truffle then migrates the contract to the network. | |
Metamask | ◘ A bridge that allows our front end ReactApp to communicate with the blockchain through our web browser. Allowing us to run our Ethereum Dapp in our browser without running a full Ethereum node. | |
Infura |
◘ Infura is a hosted Ethereum node cluster that lets your users run your application without requiring them to set up their own Ethereum node or wallet. ◘ We’ve considered hosting our own Ethereum node cluster but blockchains are distributed Ledgers and a full node means the entire copy of the ledger, that maybe not possible on the home computer anymore as ethereum blockchain size is around 670 GB now, even fast sync is now around 120 GB. ◘ Blockchain expert from Avanade suggested that we use a hosted Ethereum node cluster instead as it is FAR more efficient. |
|
Nethereum |
◘ A library that is developed specially for C# and is compatible with Unity to interact with the blockchain networks. ◘ A specific package version of it is imported into Unity as it was mainly developed to be used with dotnet applications and not Unity. So there was limited support Unity, and thus limited version compatibility. |