/blockchain

Learn block chain

Primary LanguageJavaScript

Blockchain


3 disciplines that worked for me in two separate fields: Knowledge, Projects, Networking

1. Knowledge:

If you want to become an website application developer, you have to learn HTML, CSS and Javascript. If you want to be a graphic designer, you have to learn Photoshop and good design principles. Every field has it’s prerequisite understandings, and Blockchain is no different.

  • To start in blockchain, you’ll want to learn the basics of how a blockchain works. I would highly recommend Mastering Bitcoin by Andreas Antonopoulos. After you get comfortable with the examples in that book and understand blockchain, you’ll want to spend some time learning Solidity and a framework like Truffle.

2. Projects:

After a firm understanding of the basics of your industry, you have to find meaningful opportunities to start applying our knowledge through projects. Projects will help solidify your knowledge, giving you experience that you can use to create things that matter.

  • There are a lot of open source projects and ideas for blockchain technology available. You can start by creating the basic contracts available through the Truffle tutorials and then start expanding on your ideas from there. If you create something (even something small), post it through Github… you’ll be needing it soon.

3. Networking:

With these first two disciplines, you’re on your way, but it’s still not enough to get you a position in the field. For that, you have to go out and meet people in the field through networking. Creating an interesting blockchain application for your friends is great, but showing it to someone who works for a company that’s actively hiring blockchain developers will lead to opportunities and recognition. I love networking in person through meetup and eventbrite, but blockchain actually does a fair amount of connecting through mediums like Reddit, Slack and Gitter. If you want to start meeting people actively involved in this field, get comfortable with commenting on posts and messaging them with thoughtful inquiries. The more active and thoughtful you are in these interactions, the more people you’ll get the meet. And then, when you create projects, show them to people you think might find them useful.

You don't need anything specific to learn blockchain. Although having an understanding of centralized and distributed network will help you understand what value does decentralized architectures as Blockchain brings to the table.

To start coding an application on the blockchain, in 2018, I will pick a platform like Hyper Ledger, Ethereum or HashGraph. The coding on blockchain is not complicated as the underlying technology works of its own, and you are mostly writing your business layer in JavaScript most of the time.

Ethereum:

· you need a basic understanding of Blockchain

· you need to have need to have knowledge of solidity

· you need to have knowledge of Java script -> Web3.JS

Hyperledger:

· you also need to have basic knowledge of Blockchain

· you need to have knowledge of golang

· as well as knowledge of NodeJS

Some of the languages which are essential for the development of a Blockchain solution are: C++ (the most famous cryptocurrency Bitcoin has been developed using C++), JavaScript, Solidity, Python, Distributed storage (it is important to have a good understanding of the distributed storage like RDBMS, NoSQL etc. as the distributed storage is an intrinsic feature of Blockchain).

Concept

Decentralization : No one entity should own all the assets or resources in the network. It is important to understand how this is different compared to a distributed network. A distributed network can still be owned by one entity, for instance Netflix. A distributed network is essential for a decentralized network, but it is not necessarily decentralized in it’s own right.

Immutability : The data once written, should always be a part of the network. Any change performed over the data must also be recorded in the network. This can be achieved by creating hash of each transaction/operation performed in the network and add it to the next transaction as a meta data. This chains every new transaction to it’s previous transaction and that is where Blockchain derives it’s name from.

Assets/Entities : The storage network should support storage of data or some form of transferable asset in some form or the other. This can be Bitcoins for Bitcoin network, or Ether[2] or Smart contracts or other forms of data in Ethereum [3]network or Assets in case of BigchainDB[4]. (All these are different kinds of prevalent Blockchain networks or frameworks and I will talk about them in some detail later)

Censor resistance : Although this point is inherent to Decentralization, some Blockchain enthusiasts make a point of mentioning it separately. Basically any single authority should not be able to Censor the flow of data or exchange of information over a Blockchain. But with the advent of private Blockchain technologies, Censor resistance is not a compulsory component of a Blockchain.

(DLT) Distributed Ledger Technology : What is distributed ledger technology and how it is being implemented in different blockchains. It means that the data is not present at a central place and is available with nodes which are participating in the consensus.

Consensus: There are different types of consensus which are implemented in different blockchain.

  • PoofOfWork
  • ProofOfStake
  • ProofOfElaspedTime
  • GossipingAboutGossip

Smart Contracts: Smart contracts are the business logic that gets triggered based on a event and there is no manual invention. Smart contracts are written in solidity for many platforms like Ethereum, Hedera HashGraph. Some platforms Like Ethereum understand Smart contracts in form of Transaction Processors or Chain code.

dApps: Distributed Application are in the ecosystem for long for eg. Torrent or peer to peer apps. Recently dApps are gaining traction because of the Blockchain technology.

Sharding: Not all the nodes available in the chain needs to be part of the consensus and retains the data corresponding to your application. The blockchain is divided into different groups to cater different categories of application and it's data.

2 categories blockchain

  • Public Blockchains
    • Bitcoin
    • Ethereum
    • Hedera Hashgraph
    • Lightning Networks
  • Private Blockchains
    • Hyperledger Fabric
    • Hyperledger Sawtooth
    • R3 Corda

Common terms

  • Consensus mechanism - Consensus
  • Byzantine General Problem - Byzantine Generals Problem
  • Byzantine Fault Tolerance - Byzantine Fault-Tolerant, BFT
  • Nash Equilibrium -
  • Double Flower Attack / Double Payment Attack - Double-Spend Attack
  • SPV - Simple Payment Verification
  • POW - proof of workload, Proof-Of-Work, mine
  • POS - proof of equity, Proof-of-Stake, casting (mint)
  • NXT - Forge
  • DPOS - Equity Proof, Delegated Proof-Of-Stake
  • PBFT - Hyperledger Fabric
  • DBFT - small ants
  • PAXOS - Traditional Distributed Consensus Algorithm
  • RAFT - Traditional Distributed Consensus Algorithm
  • DMMS - Dynamic Membership Multiparty Signatures
  • SHA256 - bitcoin
  • SCRYPT - litecoin
  • HEFTY1
  • ETHASH - ethereum
  • EQUIHASH - zcash
  • Merkle Tree - Merkel Tree
  • Merkle Root
  • Merkle Patricia Tree - Merkel Patricia Tree
  • Getwork
  • Getblocktemplate
  • Stratum
  • Auxiliary Proof-of-Work - AuxPOW
  • Auxiliary Blockchain

Version - History

  • Blockchain v1.0 - Bitcoin, Dash, Monero
  • Blockchain v1.X - Decentralized storage: IPFS, FileCoin, BigchainDB
  • Blockchain v1.X - Second Generation Coin (Ripple, NXT, Bitshare)
  • Blockchain v1.X - Dapps (Steem, yoyo)
  • Blockchain v2.0 - Ethereum, EOS, NEO, QTUM
  • Blockchain DAG - IOTA