|Richard Harris in Blockchain Thursday, February 15, 2018|
ADM: From a developers standpoint how has Blockchain technology changed the approach of creating platforms?
Clark: Traditional platforms require a central authority to facilitate user interactions, whether it is a messaging platform (Twitter), a marketplace (eBay), or whatever. That hands a lot of control and responsibility to the central authority, because they essentially own the data. They are responsible for handling it securely, but they also have the power to modify or censor that data as they see fit. Building a platform on top of a blockchain removes the need for a central authority, and therefore the need to trust such an authority to handle your data responsibly.
As a developer for a centralized system, your task is ultimately to maximize the value your company can extract from its position of power in the network. A large part of that will obviously be improving the mechanisms for the relevant user interactions because a better user experience increases your network size, which gives you more power, but there’s a fundamental tension in the motivations of the various stakeholders. By contrast, when you are developing a decentralized platform, your sole focus is on facilitating user interactions, because there is no central authority. This model also encourages a more collaborative approach to development, with most projects in this space adopting an open source approach to give everyone the opportunity to improve the platforms they care about.
ADM: How will creating an app on blockchain technology change from an app developer's perspective?
Clark: Compared to traditional app structures, there is a lot that is similar when developing with blockchains. Front end applications are pretty much the same: you use the same frameworks, you still get data via an API (Application Programming Interface). The big difference is that you have much more choice regarding where your data comes from, so you can have a greater level of trust in it. In most cases you can run your own node, use it to validate all the information on the blockchain for yourself, and have your clients contact your node for the data they need.
On the back end, there is obviously a lot of work involved in making sure every node on the network ends up with the same conclusion about the state of the network, or of your application in particular. Besides that, your focus is mainly on defining and processing transactions, which in one sense is just a pure way of thinking about how users can interact with each other.
Right now we are in the very early stages of decentralized app development. It is difficult to get started, and it is very easy to make mistakes. Several projects, including Lisk, are working on these issues, to try and make blockchain development as smooth as it is using a traditional architecture. So in the coming months we will be seeing much more in the way of tooling and frameworks. Ideally we want people to be able to create decentralized applications just through a process of configuration: defining your transaction types, your genesis block, selecting your consensus algorithm if you require your own blockchain etc.
As mentioned before, it is the only language that you can easily use on both the front end and the back end, so it is great for anyone who wants to get going with full stack development. Since the release of ES2015, the syntax has also been greatly improved. There are also extensions to the language, like Flow for types, which add functionality which isn’t included natively.
Clark: One major benefit of using a blockchain comes from its trustless nature. So any app where trust is an issue is a good source of ideas. For example, centralized messaging services can censor, delete, or modify your messages, intersperse them with advertising, or pass them on to abusive authorities. With decentralized applications there’s no single authority, so you can be sure such actions don’t occur without relying on trust.
Another benefit blockchain provides is in making the interactions in a network more efficient. For example, a decentralized marketplace removes the need for everybody to interact through a central authority, which means there’s no single entity taking a cut of every purchase. This is great for sellers and buyers.
The other major feature of blockchains is their immutability. Once data is in a block it is there forever, so this can help with situations where facts or timelines need to be proven. A use case here is for intellectual copyright: if you store a hash of some data on a blockchain, nobody can dispute that you had that data at that point in time.
It is still early days for this technology though, so we don’t yet know what the killer applications are.
ADM: Why are sidechains important when it comes to app development?
Clark: Sidechains are important for two reasons. One is simply space: some blockchain projects right now are experimenting with sharding and other ways of offloading storage requirements, but for now the norm is for every node on a network to store a full copy of the entire blockchain. When it comes to a decentralized application platform, that means that if every application uses the main blockchain (or “mainchain”) for data storage the size of the mainchain will grow extremely quickly. Sidechains allow a division of responsibility for data storage. As a node operator, you can choose which sidechains - if any - you run a node for. The mainchain only has data related to the platform itself, not the data specific to the applications which run on the platform.
The other reason is to isolate the functionality of the various applications from each other. If you have a single blockchain with unrestricted smart contracts, then it is possible for someone else’s application to affect yours. For example, if it turns out those contracts have a bug which allow somebody to stall the network, and somebody creates an application which bumps up against that bug (whether intentionally or not), then your unrelated application can suffer.
With Lisk, we have a limited number of transaction types on the mainchain, and no smart contracts. Application developers will be able to create a sidechain of their own, where the rules are up to them: whether they have smart contracts at all, what the restrictions are on smart contracts, which language those contracts must be written in, etc. Then if one sidechain introduces a vulnerability, all of the others are unaffected.
Having said that, there is a lot of focus from various projects on making this technology more intelligible and user-friendly. In the coming years, as blockchain technology becomes more standard and learning resources such as the upcoming Lisk Academy grow, perhaps it’ll become more of a default and we can start recommending people learn to program with decentralized applications from the very beginning.
About Will Clark
Learn the basics of blockchain technology. No mathematical formulas, program code, or computer science jargon are used. No previous knowledge in computer science, mathematics, programming, or cryptography is required. Terminology is explained through pictures, analogies, and metaphors.
Learn the best ways to organize your app development projects, and keep code straight, clients happy, and breathe a easier through launches.
Write and run code every step of the way, using Android Studio to create apps that integrate with other apps, download and display pictures from the web, play sounds, and more. Each chapter and app has been designed and tested to provide the knowledge and experience you need to get started in Android development.
How to create a profitable, sustainable business developing and marketing mobile apps.