A global currency
A global currency, controlled by the people, democratic, independent, transparent, reliable, accessible, anonymous, and direct. Combine these ideals and you get what many technologists, finance experts and the global citizen, on how future financial systems should operate. This idealization has inspired innovation in blockchain technology such as Bitcoin and Ethereum, which are mainstream cryptocurrencies that use blockchain technology. Therefore, this essay will aim to clarify what exactly is blockchain, with careful attention to blockchain development, how it differs from current practices of software development, the prospective future of how it will affect software developers and software development.
What is blockchain development?
Blockchain technology consists of a distributed network(“chain”) of nodes(“participants”), that all collaborate in the storing and execution of transactions. Where for any execution of a transaction, majority of the nodes in the network, would have to agree that the transaction is suitable before it is executed. Once a transaction is executed successfully, data relating to the transaction is encrypted and is stored and linked to all the nodes on the network and can never be erased. The two main characteristics of blockchain technology is the agreement of nodes on a network for every transaction and the “anonymity” of each node(“participant”) in the network(“chain”).
Therefore, blockchain development is the process of creating, maintaining and documenting such systems that facilitating the agreement of participants on a distributed network for every execution that commits data or information, ensuring anonymity of participants data and transactions on the network by means of cryptography such as encryption.
What are the advantages of blockchain development?
Blockchain development insures a level of trust to end-users; due to that fact that the architecture of blockchain technology allows for end-users to have complete control over their sensitive data, where all end-users on the blockchain are assigned encrypted private keys which are the end-users unique identity and is used in all the transactions that they participate. Therefore, if any end-user’s sensitive data is breached and altered in anyway, this private key will become nullified and all the participating nodes on the network will be notified and the person or the entity that has breached the end-user will not be able to make any transactions. Trust is also ensured to developers, because since all preceding and proceeding nodes on the distributed network are connected and are verified via agreement, it is challenging for hackers to avoid being detected instead of just gaining access to individual nodes and altering its data they would have to gain access to all the nodes that have participated with the nodes they have breached. Which is an extremely resource intensive task because accessing all the decentralized nodes that have participated with the breached node and having majority of the nodes being altered at the same time requires not only extensive computing power but technical ability as well.
Decentralized; the implementation of blockchain development is decentralized in nature which contributes to higher levels of security because majority of the nodes on the network would have to verify the transactions done by a node. Decentralization also allows end-users to have higher accessibility to the technology because there is no middle-man such as a bank or governmental structures, so end users would not have to attend any facilities, sign any forms, or show any documents in order to access and use the features of the technology, this is also beneficial for developers of blockchain technology because since the ease of access is attractive to end-users the more users using your technology the more reliable and secure it becomes as there is more nodes for verification, processing and security purposes.
Data Traceability; since all the transactions executed by the nodes on the distributed network are connected and the information cannot be deleted it is relatively easy to trace the flow of information from one node to another, which will be valuable for both end-users and developers for many reasons firstly one being it assists in the ensuring data is accurate and consistent therefore any collection of data for analytics purpose will be reliable. Secondly it allows for developers to find the root of problems or disputes easily as they can follow the flow of data therefore addressing end-user problems efficiently.
Structural Independency; since blockchain technology processing functions in a distributed manner, service functionality is therefore not dependant on a single structure, so in case any end-user’s local device fails while in the process of a transaction, the end-user’s data will not be lost as many other nodes involved in the transaction have the required data therefore recovery of the transaction will be done effortlessly. This principle does not only apply to single transactions but to the entire blockchain system as well, in the case that the blockchain system shuts down for some reason recovering the system to its previous state would be a quick process as all the nodes on the network can be used to recover the state which can be reassuring for developers because important operational data will not be lost.
Limitations of blockchain development
Steep learning curve; blockchain development is still in its early experimental phase so there is not a lot of resources such as documentation and easy to use software available to develop blockchain applications. There are also other highly specialized skills required such as cryptography, and game theory which present an added challenge.
Unavoidable security flaw; although highly resource intensive and unprobeable there is always a looming threat that hackers may be able to gain access to the majority of relevant distributed network nodes (51%) and perform an agreement on each node exactly at the time to execute an unwanted transaction.
Legislations; blockchain technology poses a threat to many political and industrial structures, as blockchain technology is relatively new there are not adequate legislations put in place for it, so how blockchain software is to be developed will most likely be constantly changing as legislations are changed.
Common applications of blockchain development
Financial services; blockchain is currently commonly used in online financial services known as cryptocurrencies which allows for the transaction of virtual money such as Bitcoin or Ethereum for goods, services and investments.
Online contractual agreements; it is also currently being used as a form of facilitating online contractual agreements. Which has been a challenge prior to the innovation of blockchain technology, which may in the future even be used for governmentally related contracts.
Digital privacy; blockchain technology as being a new way for users to buy goods and services web without their person data being required because blockchain technology allows for the end-users blockchain private key to be the end-users online identity.
How blockchain development differs from traditional software development approaches
Role definitions and skill requirements; in traditional software development approaches everybody’s roles are clearly defined as to what everyone is expected to do and the skills required to fulfil a task whereas in blockchain development since the technology is fairly new and the applications overlap with other industries the role definitions and skill requirements are not clearly defined, therefore a blockchain developer is not just expected to have programming skills but to also have strong relative industry knowledge in fields such as law, economics ,government and health care.
Architecture; blockchain technology is new so there aren’t well defined architectural requirements for blockchain software, therefore process of defining architecture for blockchain application is experimental in nature whereas traditional software architectures are well defined and specific for a wide range of applications with many resources whereas block technology is limited in solid resources relating to architecture.
Modelling and measurement tools; traditional measurement metrics and UML diagrams are effective for traditional software approaches but not for blockchain development due to the decentralized nature of blockchain technology therefore new metrics of measurement need to be developed and UML diagrams need to be updated to fit the requirements of blockchain development.
Security; traditional software methodologies of ensuring data security are well defined and can be applicable to a wide range of traditional software applications whereas blockchain applications present unfamiliar problems mainly in terms of ensuring data security as security is most paramount in blockchain technology due to the sensitive nature of the data that blockchain applications have, the reason for this is the fact that nodes on the distributed network is connected to other nodes presents a double-edge sword where on one hand it is difficult to breach node data and alter it, whereas on the other hand once one node is breached it makes it easier to breach other nodes that are linked to the initial node. Therefore, new security testing and implementation methodologies will have to be devised for blockchain technology.
Future of blockchain development for software developers
Blockchain technology is still in a state of infancy, the potential is bountiful with lots of opportunities in a wide range of sectors such as the financial services, healthcare, cloud storage/computing, property ownership and voting.
Financial services and legal services; blockchain developers will be needed to develop blockchain systems that not only facilitate online transactions in a wide range of use cases, but also allow for digital “smart contracts” which is intended to remove the need for lawyers in transactions that require contractual agreements this implementation would save lots of time in legal costs and time.
Healthcare; there will be many opportunities in healthcare for the development of blockchain software due to the fact that there is huge contention surrounding patient privacy and ability for patients and health professionals efficient access to accurate patient health information, therefore blockchain developers will be needed to develop blockchain software that allows patients more control and private access to their medical records, instead of having to go to intermediaries such as a clinic or hospital administration facilities obtain their medical records which are usually incomplete or inaccurate. Blockchain technology would also allow for specialists with the permission from their patient to obtain direct access to a patient’s medical record with assurance that there is no incorrect or missing information therefore, saving time, money, and providing more accurate diagnosis for the patient as there would be much less administration costs and processes involved.
Cloud storage and computing; due to the common occurrences of data breaches and hefty costs for traditional cloud storage and computing, blockchain technology has allowed for the possibilities of more secure and cheaper cloud storage computing, so blockchain developers will be required to implement blockchain systems that allow participants on the distributed network to offer their storage space and computing power in exchange for a currency on that blockchain platform.
Property ownership; traditionally buying and selling property is a costly process as there are intermediaries involved in the process, such as estate agents, lawyers involved with the buying or selling of property. Therefore, there are many companies that are creating blockchain platforms that facilitate a secure and cost-effective way for the peer-to-peer buying and selling of properties, therefore blockchain developers will be required to implement a blockchain system that allows for “smart contracts” that bypasses the need for legal consultation and administration fees for contractual agreements.
Voting; traditionally voting online is an unsecure and unreliable way of voting as there are many threats of vote fraud and the threat of hackers sabotaging the voting process, but with blockchain technology there has been hope for the future that not only will it ensure a secure and reliable voting process but also provide increased accessibility for people to vote as there would not be a need to attend any intermediary facilities to vote. There are governmental and private sector entities that have begun the process of developing such blockchain systems providing a great demand for blockchain developers.
Overall blockchain development is set to provide many great opportunities for software developers as it is an untapped skill with high demand, so much so that blockchain development was rated number one out of twenty as the fastest growing skill in the first quarter of 2018 according to ComputerWorld.com.
What is needed for blockchain development to become a software engineering approach
The most notable principles in traditional software engineering approaches are software specification, design, implementation, verification, validation and maintenance, therefore if we are to follow the status quo, blockchain development would have to meet each of those principles in some way for it to be considered a software engineering approaching. Yet due to the infancy of blockchain development There is a lack of availability for adequate testing methods, software development tools, experts and co-operation for the development of quality code.
Specification; currently there is limited reliable resources on blockchain development therefore due to lack of information it presents challenges in specifying the accurate requirements for a blockchain system and identifying constraints surrounding the various problem domains. So, methods of generating more accurate information by means of experimentation and documentation around blockchain development should be considered to address this requirement.
Design; methods of creating blockchain systems are still in its experimental stages therefore there are currently not specific and strict guidelines on how the system should be designed this presents an issue as for blockchain development to be considered a software engineering approach there needs to be design guidelines that can communicate on what the system should do and at what efficiency.
Verification and validation; Since blockchain technology is relatively new, end-users and developers are mostly not sure on what to look out for and expect from the system do therefore it presents a challenge defining a guideline as to what constitutes to the blockchain system adequately meeting the end-users needs.
Maintenance; majority of current blockchain technology is open-source in such a way that external individuals from the public can contribute to the development of the software, which can be a double-edge sword as there may be a disconnect in co-operation as the level of code quality may not be necessarily up to par to ensure that the system is maintained effectively yet on the other hand it provides opportunity to a broader range of possibility of attracting highly skilled individuals in the development of blockchain technologies.
Therefore, getting blockchain development to the level of a software engineering approach will require more innovation in the development blockchain development tools, testing methods and guidelines as to what effective blockchain code structure should look like, and the effective training of blockchain experts on not only programming but on cryptography as well as a high-level knowledge on the relative problem domains
To conclude, based on the findings blockchain development has immense potentially to revolutionize the way transactions occur mainly over the internet, yet in its current state is the access to reliable development information, limited development tools, security, and the anonymity of blockchain technology remains questionable. Firstly, the access to reliable development information is scarce and inconsistent across the board, it seems that blockchain development is in an experimental phase where developers are still figuring out what works and what doesn’t work, secondly there are also limitations on the availability of robust developmental tools that are geared towards blockchain development, so you are somewhat forced to figure things out by going through open-source blockchain repositories. Thirdly security in the current state of blockchain technology is not guaranteed, it is still possible for hackers with enough computational and technical resources to breach a node and facilitate an agreement with majority of the nodes linked to the breach node if the agreement of all the nodes is 51% and above allowing the hackers to alter data or fulfil unwarranted transactions. On the other hand, there are plenty positives on blockchain development there are wide host of available opportunities since the demand for blockchain developers exceeds the supply, there is also opportunities for new start-ups as it is to still an untapped industry with little to no competition and legislations. Overall block chain development is still in its infancy state and it has plenty room for growth, with the open source nature of blockchain technology it will bring about interesting innovations that will most likely revolutionize the way, all forms of transactions are carried out digitally. Although everything at this this stage is speculation, only time will tell.