自学区块链

本网站是分享区块链(Blockchain)实用技术的网站,可以和《自学区块链:原理技术及应用》一书结合在一起进行学习。
start

下面是区块链技术的基础知识,若已经掌握了基本的区块链知识,可以直接点击实战教程进行学习。

一、什么是区块链?

区块链技术(Blockchain)是近来的热门技术,下面尽量通俗易懂地介绍其原理、特点和应用,以及开发区块链所需要了解和掌握的工具。

在2018年10月31日,一个署名中本聪(Satoshi Nakamoto)的人在“metzdowd.com”网站的密码学邮件列表中发表了一篇论文,其标题为《比特币:对等网络电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)。论文中详细描述了如何使用去中心化网络来创造一种“不需依赖信任的电子交易系统”。 它基于密码学原理而不基于信用,使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。原文如下:

… We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they’ll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.

中本聪
中本聪

这个论文就是比特币白皮书(Bitcoin White Paper),后来中本聪基于这个白皮书实现了一个比特币系统。这个比特币系统就是基于区块链技术。下面来简单介绍区块链原理及其应用。

二、区块链原理

简单来说,区块链就是一个去中心化的数据库,分散于各地的不同节点基于密码学技术共同维护这个数据库。区块链由一个个区块组成。每个区块由区块头和区块体两部分组成。区块头里面包含了当前区块的特征值,区块体里面包含了一系列数据信息。每生成一个新的区块都需要区块链中的节点确认后才能添加到区块链中。详细的原理可以通过下面的动画进行学习。

区块链原理


了解了区块链的基本原理后,同学们可以在一些区块链原理的展示网站上操作体验一些,这里推荐两个网站。一是anders的示例网站

anders blockchain demo
anders的示例网站

二是seanjameshan的示例网站

blockchaindemo.io
seanjameshan的示例网站

了解区块链的基本原理后,还需要学习区块链中另一个重要的概念——智能合约(Smart Contract)。

三、智能合约

早在1994年,计算机科学家尼克•萨博就提出了智能合约(Smart Contract)的概念,它将智能合约描述为一种以信息化方式传播、验证或者执行合约的计算机协议,能够允许在没有第三方的情况下进行可信的交易,并且这些交易是无法被追踪、同时也是不可逆的。原文如下:

A smart contract is a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts allow the performance of credible transactions without third parties. These transactions are trackable and irreversible.

但由于当时缺少可信的执行环境,智能合约并没有被应用到实际产业中。比特币系统的诞生为智能合约提供可信的执行环境。不过在比特币系统中的智能合约支持功能比较简单,直到第二代区块链平台以太坊(Ethereum)的诞生才支持了功能强大的智能合约。智能合约是一个可以自动执行的计算机程序,对接收到的信息进行回应,并接收和储存数据。下面的动画形象地讲解了智能合约的概念和原理。

智能合约


在以太坊中使用Solidity编程语言开发智能合约(其他编程语言(Serpent、LLL等)也支持,但Solidity是以太坊官方推荐并且使用最广泛的)。Solidity是一门图灵完备的编程语言,可以实现各种复杂的功能。要了解Solidity语言可以访问官方中文版的教程进行学习。

以上就是区块链的简单介绍,下面讲一讲区块链的特点和应用以及进行开发常用的工具。

四、区块链的特点与应用

3.1 特点

区块链的主要特点包括去中心化、去信任、集体维护、匿名性、数据可靠等,如下图所示。


区块链的特点
区块链的特点

这些特点具体如下:

  1. 特点一:去中心化。区块链技术是基于点对点的去中心化网络,网络上的节点都是节点都是平等的,没有中心服务器,故区块链是去中心化的。
  2. 特点二:去信任。区块链中的数据都是公开透明的,交易数据通过加密学方法进行验证和记录,无须第三方信任机构的参与,故有去信任的特点。
  3. 特点三:数据由节点维护。区块链由去中心化的节点共同参与维护,数据的更新需要其他节点进行计算和验证,不会受少数节点控制。
  4. 特点四:数据存储可靠。区块链中的数据在每个节点上都有一份全数据,单个节点的退出或瘫痪不会影响整个系统。
  5. 特点五:匿名性。区块链一串唯一的数字代表一个身份,使用数字签名进行身份认证,具有匿名的特点,可以保护个人的隐私信息。

3.2 应用方向

区块链基于以上特性将在金融、供应链、版权交易、医疗、保险、众筹、能源等诸多行业发挥广泛的应用,具体如下:


区块链的应用

五、开发工具

本系列教程暂时基于以太坊开发,后续会陆续补充基于EOS、TRON等平台的开发教程。

4.1 以太坊

  • 区块链客户端Ganache
    Ganache 是一个为开发者提供的私有 Ethereum 区块链客户端, 可以用于本地部署, 开发, 测试应用程序, 测试代码.

    Ganache
    Ganache

    Ganache教程

  • 以太坊钱包MetaMask
    MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器添加对应的扩展程序即可,非常轻量级,使用起来也非常方便。


MetaMask教程(来自简书DavieKong)

  • JS库web3.js
    web3.js是以太坊提供的一个JavaScript库,它将以太坊的接口封装成JavaScript函数,方便开发者调用以太坊接口和智能合约。
    web3.js GitHub地址及使用方法

  • Solidity编程语言
    Solidity是一种语法类似JavaScript的高级语言。它被设计成以编译的方式生成以太坊虚拟机代码。
    Solidity教程

  • 智能合约开发环境Remix
    Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。


    Remix
    Remix

    Remix教程(来自深入浅出区块链教程)

  • 开发框架Truffle
    Truffle是针对基于以太坊的Solidity语言的一套开发框架。本身基于Javascript。基于框架可以让开发者基于以太坊进行快速开发和测试。
    Truffle使用教程

六、扩展阅读


自学区块链》书籍购买

公众号

公众号

公众号

知识星球

知识星球