最近公司新方向涉及到区块链,在paperen研究了一段时间后,抽空写点关于这块的一些总结,一方面有助于自己温故旧概念另一方面也作为一个笔记

关于这个分享大概会按照以下提纲进行

  • 区块链概念
  • 区块链相关名词解释
  • 比特币交易图解
  • 以太坊
  • 以太坊开发例子
  • 参考资料

区块链概念

如果一开始觉得这个概念有点难理解那么咱们先从一个带调侃色彩的对话开始

问:什么是区块链?答:世界上最慢的分布式数据库

虽带有调侃味道但我认为该描述确实能让大家快速在脑中对区块链有一个大概的印象,分布式、数据库、最慢,但实际使用中它不能完全被当成一个数据库来使用,只是通过这么一句话让大家有大致的轮廓

下面咱们再引用一些科学的解析

区块链是一个分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案

开放,共识

任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。

去中心,去信任

区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。

交易透明,双方匿名

区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。

不可篡改,可追溯

单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生

区块链相关名词解释

以下的概念相对来说会比较枯燥,可以先快速阅读一遍,后续通过具体例子会更加深入了解(这里只列出几个我觉得比较重要的概念,详细的需移步到上面链接自行了解)

  • 挖矿:比特币中的“挖矿”实际上就是记账的过程,比特币的运算采用了一种称为“工作量证明(Proof of Work,PoW)”的机制,系统为了找出谁有更强大的计算能力,每次会出一道数学题,只有最快解出这道题目的计算机才能进行记账。而抢到记账权的计算机会获得12.5个比特币的奖励。通常把这个行为称为“挖矿”,把获得的比特币视为挖矿成功获得的奖励
  • 公有链:是任何节点都是向任何人开放的,每个人都可以参与到这个区块链中参与计算,而且任何人都可以下载获得完整区块链数据(全部账本)
  • 私有链:有些区块链的应用场景下,并不希望这个系统任何人都可以参与,不对外公开,只有被许可的节点才可以参与并且查看所有数据。那么这种区块链结构我们称为私有链。一般适用于特定机构的内部数据管理与审计
  • 智能合约:一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议
  • 钱包地址:一个唯一的能关联用户币值的一串16进制字符串,对应的是区块链中的一个地址,一个钱包地址只能对应一个私钥
  • 公钥:它是密码学上的概念,它由私钥推算出来。公开密钥的算法属于不对称加密算法,该算法拥有两个密钥:公钥和私钥。使用私钥加密的数据可以用公钥解密,反之亦可。通过公钥可以算出钱包地址
  • 私钥:私钥可以计算出公钥,公钥可以经过一系列数字签名生成钱包地址。所以, 私钥的持有者才是数字货币的持有者
  • 智能合约:智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行
  • gas:因为执行计算要花钱,而要执行的运算量与代码直接相关。所以,每个在网络运行的底层操作都需要一定量的gas。gas只是一个名字,它代表的是执行所需要花费的成本
  • Dapp:与传统的开发中的客户端或前端是类似,区别仅在于它们与以太坊的区块链进行交互(也可以同时与其它服务交互)。这些客户端往往用JS编写
  • EVM:它让你能在以太坊上写出更强大的程序(比特币上也可以写脚本程序)。它有时也用来指以太坊区块链,负责执行智能合约以及一切

比特币交易图解

现在咱们来看看在区块链上最流行的应用比特币是怎在区块链上运作的

http://paperen.com/file/202

用几句话概括可以这么描述:

  1. 生成一条交易记录,声明往某个地址发送比特币
  2. 记录使用自己的私钥加密
  3. 矿工验证交易并拼接到块中
  4. 交易完成

以太坊

从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取了技术架构和体系,称之为区块链技术。从比特币提取的区块链技术称之为区块链1.0时代,那个时候的应用主要以电子货币和去中心化交易为主,比如各种山寨币。而以太坊将区块链带入了2.0的时代,区块链2.0不是推翻了1.0,而是在1.0的基础上实现了区块知晓、价值知晓、图灵完备,并进行了细节优化,从而形成了以智能合约为特色的区块链2.0。比特币定位于一个应用,而以太坊定位于平台,你可以在这个平台上利用智能合约做各种应用,同时开发上以太坊也是作为首选的区块链方向

参考资料