区块链入门简介

区块链入门简介

概述

维基百科上对区块链的定义如下:

A blockchain originally block chain is a continuously growing list of records, called blocks, which are linked and secured using cryptography.

区块链可以理解为一个去中心,去信任的数据结构,它不是一种全新的技术,而是多种现有技术的的整合,这些技术包括:密码学,分布式系统,P2P网络,共识机制等。

数据结构

区块链中的数据是以区块+链的数据结构存储的,区块链的名称也因此而来,每个区块分别由区块头和区块体组成,在区块头中会包含之前前一个区块头的指针。

区块链入门简介_第1张图片
区块+链

交易

不同于传统的给予信任的金融交易,区块链的交易基于密码学。交易的发起者需要使用私钥对交易签名,交易接受者通过发起者的公钥验证签名。

通过非对称加密解决了交易发起者的身份问题,但是还存在双花(dobule-spending)问题,即:交易发起者将同一个电子货币同时交易到不同地址,比特币通过分叉+延迟确认的方式来解决双花问题。

网络

区块链是基于分布式系统,每一笔交易都需要经过网络中所有节点的验证,并最终达成共识,最终形成新的区块并附加到链的最后。

共识算法

由于区块链中的交易验证&确认等相关操作是在网络中所有节点中进行,需要有一种机制确定最终需要加入到链中的区块,这种机制即为共识算法,常见的共识算法有:POW(Proof of Work), POS(Proof of Stake),RAFT,IBFT等。

比特币采用的是POW共识算法,在比特币的区块头中包含一个nonce字段,所有参与区块验证的节点需要不断的调整nonce值,使得区块头的(双重)hash值满足一定的条件(前置若干个零)。

激励

  • 对于pow共识算法的取款链,当某节点完成工作量证明后,会额外奖励一定数额的加密货币(挖矿)
  • 对于以太坊这类区块链,完成交易需要支付一定的费用(Gas)。

特点

  • 去中心 - 数据分布式存储和更新并通过共识算法保持一致,每个节点都包含完整的数据,从而去除对单一中心的依赖

  • 匿名 - 各个节点遵循固定算法进行数据交换,交易依赖地址

  • 不可篡改 - 区块+链的数据结构保证一旦被写入区块就无法被修改

  • 去信任 - 区块链基于固定的算法完成交易,无需可信第三方

平台

  • 比特币
  • 以太坊
  • Fabric

区块链开发

Web & 移动应用开发

基于区块链开发相关的web或移动应用,所使用的技术和目前主流的web & 移动开发没有大的区别。

智能合约开发

智能合约开发主要是使用类似solidity这类语言,相对于传统的编程语言更为简单,缺少了多线程,并发等复杂特性,本质上智能合约即是面向区块链的商业合同,因此智能合约的难点在于理解商业逻辑。

区块链平台开发

区块链平台开发即区块链节相关开发,涉及的编程语言有c++,go。java等,需要对分布式系统,p2p网络,密码学等区块链底层技术都有一定的理解。

你可能感兴趣的:(区块链入门简介)