Category Archives: cryptocurrency

Smart Contracts in Blockchain – Part II

In this post, we will show how to write a simple smart contract. If you do a quick google search, you will find numerous articles on writing smart contracts. In my previous post Blockchain, I explained blockchain. But I didn’t talk about the smart contracts in that post. That’s why a separate post.

Smart Contract

In layman’s terms, the contract is nothing but an agreement between two parties, witnessed by a third party to hold both parties accountable for playing out the contract. So what is a Smart Contract then?

In Nick Szabo’s words

Smart Contracts are a set of promises, specified in digital form, including protocols within which the parties perform on these promises.”

In Web Developer’s terms, a Smart contract is like an application API, but there are few exceptions. Like an API can call another external API, a smart contract can not call external API. A smart contract can call another smart contract. A smart contract comprised of a number of private functions and variables to implement the agreement.

More formal definition of a smart contract is a method of using Bitcoin to form agreements with people via the blockchain.

Ethereum

So how do we write these smart contracts? Ethereum is one such a platform that is used primarily for building and publishing distributed applications. It is a Turing-complete virtual machine built for the purpose of cryptocurrency. It is the fundamental underlying infrastructure platform that can run all blockchains and protocols. Each node in Ethereum runs an Ethereum Virtual Machine. This EVM hosts distributed programs (smart contracts) which get executed seamlessly.

Implementation of smart contracts

To address some basic questions like “How does a smart contract look?”, “What do you use for programming a smart contract?”, I will go over some simple concepts.

There are currently two programming languages that can be used to write a smart contract.

  • Solidity – A javascript look-alike language with file extensions .sol
  • Serpent – A python look-alike language with file extensions .se

Once a contract is written in either language, you can compile it using a solc compiler. A compiled contract then posted on the network. You can call this contract in your web app by using web3.js Javascript API.

Conclusion

In this post, I tried to explain one of the key concepts of blockchain, a smart contract. This can be used further in building decentralized applications. In the next post, I will show how to write a simple smart contract and run on a node with EVM.

References

  1. Building a smart contract – Smart Contract Ethereum
  2. Blockchain for web developers – Blockchain

 

Blockchain for Web Developers

Yes, there might be a plethora of articles about blockchain and how web developers can use to build applications. And this might not be a much different article either. In this post, I describe the basics of blockchain and crypto technology.

Introduction

Blockchain has been the underlying technology for cryptocurrencies like bitcoin.

Firstly, this is a basic understanding of blockchain. We will cover the rest of the basics of blockchain soon. In most banking or financial systems, all bank accounts track through a ledger that keeps track of incomes and expenses.

Secondly, in current times, our centralized financial systems follow certain rules and regulations. A central authority defined these rules and that’s how trust was built. But blockchain is a decentralized system of the ledger where a peer-to-peer network is involved. Based on the peer-to-peer network, miners involved in the process, build trust in a decentralized form. All transactions are recorded on ledger and ledger is verified by nodes in the network. These nodes communicate with each other cryptographically for verification of transactions. When new transactions are added, there is a consensus formed in the network, this consensus is nothing but a block.

Proof-of-work

One reason why blockchain is popular is that it solves a double-spending problem that has been there for a long time in computer science. When it comes to a distributed system, there is no way to correctly verify the integrity of transactions. In relational database systems, we use referential integrity to verify integrity.

This is the foundational algorithm in the blockchain. In the mining process, miners compete with each other in the network to verify transactions and produce new blocks. For this work, miners get cryptocurrency.

In network, transactions happen all the time between users. A decentralized ledger will keep track of all these transactions. Miners will verify these transactions through proof of work algorithm.

Person A sends $10 to person B and not to person C. How do we verify that money went to Person B and not to Person C? This is a double-spending problem. Proof of work helps to solve this problem. There are other aspects to this algorithm like how to avoid any security threats, faster block generation(Power of network), storage capabilities. We will not be discussing those aspects here.

Drawbacks

There are few drawbacks to this algorithm and one of the major one is 51% attack. The idea of 51% is when a user or a group of users control the majority of mining power. If this happens, the group can monopolize generating new blocks and this will lose the advantage of the decentralization principal.

Blocks

Blocks form the ledger which forms the basis of blockchain. Each block contains transaction information which we can call as a fact. A block is nothing but the arrangement of all these facts and each block will have a reference to the next block.

Blockchain for web developers

Before these facts get added to blocks, they are pending and as miners continue to work, they verify these facts to confirm.

Conclusion

In conclusion, I introduced blockchain with some basics of blockchain for the web developers. But this is just the tip of the iceberg, there is a lot to learn and bigger things to do in the cryptocurrency world. If you enjoyed this post, subscribe to my blog.

References

  1. Blockchain: A blueprint for the new economy by Melanie Swann – Blockchain
  2. Proof of work – Proof of work
  3. Ethereum for Web developers – Ethereum for web developers