Blockchain Developers and Dapps
In this episode of Blockchain Beyond Hype, we interview the founder and CEO of PT. Langit Biru Arjuna, Arjuna Sky Kok. We discussed topics such as decentralized applications, how they work, use cases for dapps, how to become a blockchain developer, and more.
What is a decentralized application, and how is it different from a centralized application?
So the keyword is centralized and decentralized. The centralized applications live on the central server. It has a single point of failure. But the decentralized applications disperse the risk to many points. So if we can decentralize applications to such extents, even if the admin of the application or the developer of the applications got hit by a bus, the applications can still survive and still serve their purpose to all users. So I think that those differences are paramount.
How does the decentralized application work? What can dapps do?
So the dapps, or decentralized applications, work by putting the logic of the applications on the blockchains, which is like an immutable ledger live on many nodes or computers. So if we change the value of a single variable, it will be propagated to all nodes. So we cannot change the value of the variables. Everyone will see the transactions of changing that specific value of the variable. So, in that case, the application is very transparent. We can verify the source codes of the decentralized applications. It’s like a bytecode of decentralized applications, live on the blockchain, or the many nodes. If you want to change the value of the variable, this will be put in a specific block, and this block will be mined by miners to be put in the immutable ledgers.
What are dapp rules?
There are some rules that developers need to follow in developing dapps or decentralized applications. So The main point is to release the source code and verify it. When the developer puts the source code on the internet and compiles the source code, this bytecode will be put in an address of the blockchain. And people can compile the source code and verify the bytecode that lives on the blockchain and the bytecode that people got. That’s the first rule because it must be transparent so people can verify the source code. People can verify this application will not behave in a different way than the developer of the dapp advertises. So the second rule is, even the decentralized applications can act in a centralized way. That’s like a root administrator that can punish and reward other users at the whim. So in order to make it like a decentralized application decentralized in the true sense, the root admin of the applications can divulge its responsibilities step by step. In the beginning, decentralized applications can act as centralized, but the developers need to give a roadmap to decentralize this centralized application. So it can give more power to other users, thereby selling tokens by giving voting power. So it will act in a decentralized way, something like the decentralized autonomous organization. So I think that’s two main roles: transparency and the democratic way. So the power should not lie upon a single actor or a small number of actors.
How are dapps hosted?
Dapp is written in a smart contract. So we compiled a smart contract into the bytecode, and bytecode, we will pass it to the blockchains. We put this bytecode in the block, like in transaction, then this transaction will be put in the block, and this block will be mined by miners. Then we will have decentralized applications that live in the blockchain. So this decentralized application has its address. It’s like a wallet address. And people can interact with this dapp by referring to this address. So basically, this dapp is hosted on many nodes. I mean, all of the nodes that act not just like a miner, but like a validating node. We can, if we use a full node, interact with the specific bytes that live in this specific address in the blockchain.
What are the best use cases where dapps can be used?
The best use case for dapps is definitely financing. There’s a hype in the Ethereum right now called DeFi – decentralized finance. Basically, people implement financial applications in a decentralized way. For example, MakerDAO implements stable coin but in a decentralized way. No single actor that has the ultimate power to freeze accounts or stop the transactions of sending stable coins and other decentralized financial applications, like Compound Finance, can lend or borrow tokens. This is in a decentralized way, so you don’t have to have permission to borrow some token from people. We can put tokens on the smart contract. We act as a lender, and there are other users that want to borrow this token, and these users have to put collateral in order to borrow some other tokens. A lot of developers are bringing financial applications from a centralized way to a decentralized way. They are building insurance, and what you call, a programmable interest. Right now, lots of people are already developing on their collateral lending application. So it’s based on reputation. I think it’s like a very exciting time. To put in a nutshell, the best use case of blockchain is financial application. Of course, there are other use cases like decentralized identity and supply chain. But I believe financial applications is the best use case.
Is there any other use case that you are closely following?
I think the one that really gets my interest is a collectible card. We can create scarce items on the blockchain. So basically, you can collect a digital card. The example applications are CryptoKitties and Gods Unchained. Let me explain the Gods Unchained. Gods Unchained is like a trading bettor card. It’s like Hearthstone, but people put the collectible items on the blockchain so we can bet against other users. So if we win, we can get their card, or they can have our card, or maybe like a digital item, upgraded. And we can sell these items in the marketplace. And the interesting part is even the developer of the Gods Unchained cannot stop or freeze my account because the marketplace is on the blockchain. Right now, it is quite centralized, but they are trying to make it decentralized step by step. So in the long term, I think it will be truly decentralized. So the administrator or the developer of the Gods Unchained cannot freeze accounts on their whim. It’s a truly unstoppable marketplace of collectible digital cards.
What are the benefits of decentralized applications?
Let me explain the disadvantages of centralized applications. Google released many applications to users, and users use them. Then suddenly, because these applications didn’t generate a lot of revenue, or the growth of users was stagnant, Google shut down these applications. But with decentralized applications, if the admin or developer of this decentralized application loses interest, the decentralized applications can still live and serve their purpose to users, with an assumption that this decentralized application has been decentralized to such extent.
How do you design and develop a decentralized application?
To develop decentralized applications, of course, we must have a smart contract first. We must design the smart contract, and we must make sure it is secure enough. So basically, people hire an external auditor to audit the smart contract. Once it’s safe enough to be deployed, we can build a user interface or decentralized application to interact with the smart contract. Usually, the most popular user interface to interact with the smart contacts are in the web application form. Because people already have the browser, they can use a plugin to interact with the smart contracts. When we open the web applications, we will pop up the MetaMask plugins, in order to inform the user that these are the decentralized applications. Once you log in, you can interact in a normal way. If you want to buy a digital collectible item, you can buy, and you can confirm to spend your ethers with the seller.
How do you develop your Twitter-like decentralized applications?
In my books, I develop Twitter-like blockchain applications. A tweet is a short message, right? We can put this short message into the blockchain itself, so we don’t have to put it on the IPFS. I develop a decentralized application with Python, so this is like a desktop application. This desktop application interacts with the smart contract written with Viper that lives on the blockchain. We post a tweet, and this tweet will be put in the transaction, and the transaction will be put in the block, and the block will be mined in the blockchain, and that tweet will live forever. In contrast to the tweet that lives on Twitter, which can be censored or can be shut down for many reasons. So I think this is a very interesting application-censorship-resistant Twitter blockchain application.
What skills does a blockchain developer need to build the dapps?
How is it to switch from normal coding to coding for a decentralized system?
How much programming experience does one need to become a blockchain developer?
It depends if we are talking about the decentralized applications. How long do you need to become a front-end developer? I would say it’s probably half a year to nine months. But for the smart contract, it is probably one year. But for the protocol, it’s a different beast. I would say, one year and a half, make it two to be safe.
What 3 tips would you give to someone who wants to become the blockchain developer?
The first step is to learn the computer science subject. The second step, you need to hang around often in the blockchain programming community. Then you need to read a lot of source codes of popular smart contracts, something like MakerDAO, Compound Finance. Then you need to read the source code of Geth or Parity Client. If you want to become a decentralized application blockchain developer, then you need to learn the front-end side.
Arjuna Sky Kok is a founder and CEO of PT. Langit Biru Arjuna. He has more than 10 years of experience as a software engineer, developing web applications using Symfony, Laravel, Ruby on Rails, and Django. He also has built mobile applications on top of Android and iOS platforms. Arjuna teaches iOS and Android programming for students and researches programming on Bitcoin and Ethereum platforms. He wrote a book about blockchain programming ‘Hands-On Blockchain for Python Developers.