区块链学习笔记(四)

本章将介绍区块链和加密货币的相关专业名词。数据库

 

IPO(首次公开募股,Initial Public Offerings):编程

交易的是股票,公司依靠IPO筹得了资金,资本则得到了公司的股份,是公司股东,拥有合法权益,公司须要对股东负责,总而言之这是合法的事情。网络

 

ICO(首次币发行,Initial Coin Offering):编程语言

为了某个目的筹钱发布一些相似于比特币的电子代币给投资者,这并非股份,所以买了代币也不会有股票权益。但电子代币不用像未上市的股票同样没法交易,它能够当即变现,若是参与人数越多,电子币的交易价格就会越高。分布式

 

智能合约:区块链

以太坊最重要的技术贡献就是智能合约。智能合约是存储在区块键上的程序,能够协助和验证合约的谈判和运行。以太坊的智能合约能够数种用图灵完备的编程语言写成。编码

纽约时报称以太坊平台是一台由众多用户构成的网络来运转的公用电脑,并用以太币来分配和支付这台电脑的使用权。加密

经济学人则说明智能合约可让众多组织的数据库得以用低廉的成本交互,而且让用户写下精密的合约,功能之一是产生去中心化自治组织,也就是一间只是由以太坊合约构成的虚拟公司。资源

由于合约内容公开,合约能够证实其宣称的功能是真实的,例如虚拟赌场能够证实它是公平的。另外一方面,合约的公开性也表示若是合约中有漏洞,任何人均可以马上看到,而修正程序可能会须要一些时间。The DAO就是一个例子,没法即时阻止。部署

 

硬分叉:

官方定义:区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点没法验证已经升级的节点生产的区块,一般硬分叉就会发生。

抽象定义:硬分叉是指比特币区块格式或交易格式(这就是普遍流传的“共识”)发生改变时,未升级的节点拒绝验证已经升级的节点生产出的区块,不过已经升级的节点能够验证未升级节点生产出的区块,而后你们各自延续本身认为正确的链,因此分红两条链。

简单来讲,若是区块链软件的共识规则被改变,而且这种规则改变没法向前兼容,旧节点没法承认新节点产生的区块,即为硬分叉。

 

软分叉:

简单来讲,若是区块链的共识规则改变后,这种改变是向前兼容的,旧节点能够兼容新节点产生的区块,即为软分叉。

 

侧链:

简单来讲,侧链就是一条将不一样的区块链链接在一块儿的通路。

 

共识机制:

  • PoW(工做量证实机制,Proof of Work):

  第一代共识机制,比特币的基础。理解起来,就是“按劳取酬”,你付出多少工做量,就会得到多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是“挖矿”。

  • PoS(股权证实机制,Proof of Stake):

  这是点点币(PPC)的创新。没有挖矿过程,在创世区块内写明了股权分配比例,以后经过转让、交易的方式(一般就是IPO),逐渐分散到用户手里,并经过“利息”的方式新增货币,实现对节点的奖励。

  • DPoS(受权股权证实机制,Delegated Proof of Stake):

  这是比特股(BTS)最早引入的。比特股首次提出了去中心化自治公司(DACs)的理念。比特股的目的就是用于发布DACs。这些无人控制的公司发行股份,产生利润,并将利润分配给股东。实现这一切不须要信任任何人,由于每件事都是被硬编码到软件中的。通俗点讲就是:比特股创造能够盈利的公司(股份制),股东持有这些公司的股份,公司为股东产生回报,无需挖矿。

  对于PoS机制的加密货币,每一个节点均可以建立区块,并按照我的的持股比例得到“利息”。DPoS是由被社区选举的可信账户(受托人,得票数排行前101位)来建立区块。为了成为正式受托人,用户要去社区拉票,得到足够多用户的信任。用户根据本身持有的加密货币数量占总量的百分比来投票。DPoS机制相似于股份制公司,普通股民进不了董事会,要投票选举表明(受托人)代他们作决策。

  这101个受托人能够理解为101个矿池,而这101个矿池彼此的权利是彻底相等的。那些握着加密货币的用户能够随时经过投票更换这些表明(矿池),只要他们提供的算力不稳定,计算机宕机、或者试图利用手中的权力做恶,他们将会马上被愤怒的选民门踢出整个系统,然后备表明能够随时顶上去。

 

DAPP:

去中心化APP。

 

女巫攻击:

正常状况下,一个实体表明一个节点,一个节点由一个ID标识身份。而女巫攻击者只部署一个实体,但向网络中广播多个身份ID,充当多个不一样节点,以此争取更多的网络控制权。一旦用户查询资源的路径通过这些节点,攻击者就能够干扰查询、返回错误结果甚至拒绝回复。

 

SPV(简单支付验证,Simplified Payment Verification):

简单来讲,SPV让你可以验证你的交易而不用管任何其余人的交易。

以比特币为例子,目前节点若是存储完整的区块链数据须要有几百G,通常我的终端上没法知足这个量级的存储空间,并且这个数据量还会一直增长,那么针对我的的终端须要一种简单的验证模式,SPV就出现了。

SPV简单支付验证,在SPV节点不保存所有的区块链数据,只保存区块头的数据,这样的话大小应该是所有数据的千分之一,对整个存储的容量要求就小多了,这种节点通常也称为SPV客户端或者轻量级客户端。存储区块头信息,理解区块链结构的可能了解,这种模式没法验证所有交易,可是能验证支付,所谓验证支付就是经过区块头的Hash信息去验证这笔支付是否被确认,根据区块的深度,获知这个支付是否被支付确认。若是是交易验证,那么就涉及到了很复杂的过程,包括须要知道是否有足够余额,是否存在双花状况、脚本运行状况等,这些交易验证通常都有运行所有区块链数据的节点去验证。

验证过程:

当SPV节点收到一个交易请求,其实节点是没法证明对端节点的可靠性的,那么在一个交易发起过程当中,通常会包括对端节点的支付UTXO、对端节点的签名、交易金额、SPV节点的地址。SPV节点验证经过支付验证,检查区块头信息来确认发生这个交易的是否在区块链中,而且在当前的区块链系统中有多少区块进行确认。

  1. SPV节点经过getheaders从相邻的全数据节点得到区块头信息(这里涉及一个问题,SPV对特定的几个交易选择读取,无疑会透露钱包地址信息)
  2. 计算当前交易的HASH值。
  3. 用计算后后的HASH值,去比对定位block head,肯定是否存在目前的最长一条连接上。
  4. 从区块中获取构建merkle tree 所需的hash值,并计算merkle_root_hash
  5. 计算结果若是一致说明交易真实存在。
  6. 根据block header来确认有多少区块确认交易。

 

DAO分布式自治组织,Distributed Autonomous Organization)和DAC(分布式自治机构,Distributed Autonomous Corporation):

DAO和DAC这两个概念并无太大的区别,在早期更多地使用DAC概念,而在2016年,愈来愈多的人开始使用DAO这个术语。

所谓DAO和DAC,就是经过一系列公开公正的规则,能够在无人干预和管理的状况下自主运行的组织机构。这些规则每每会以开源软件的形式出现,每一个人能够经过购买股份或者提供服务的形式得到股份来成为公司的股东。机构的股东将能够分享机构的收益,参与机构成长,而且参与机构的运营。