Day1 走进区块链世界
说道区块链,你会想到什么? 比特币,去中心化,还有什么?区块链和比特币是啥关系?
在介绍区块链之前我们先看下历史事件
历史事件
90年代,匿名电子现金协议主要使用了一种被称为乔姆盲签的加密技术这些协议需要依赖于一个中央中介。
注意,中本聪的论文中并没有 Decentralized 这个词汇,只有 p2p
通过历史我们看到了什么
第一 ,区块链不是一蹴而就出现的,也是和其他技术思想有一个发芽生长的过程。
中本聪站在了巨人的肩膀上面,再次深入的分析,通过组合现有的技术 生成了区块和链。
第二 ,区块链本身不是新技术,而是通过成熟的现有技术组合出来的。
这也告诉我们了追求技术的认识不要只局限于新技术,好的艺术家是可以通过现有的原料搭配出新的药方的。
明确我们的模型,并使用合适的技术组合实现模型.
第三 ,对于去中心化的理解 Decentralized , 这个词的前缀是 De ,表示减少的意思。直观理解是 减少中心。
这个和没有中心可是两个概念。目前软件系统的网络架构来看一般有 3种模式 : 单中心,多中心,分布式
那么减少中心只能理解为 不是单中心的,可能是少中心的或者是分布式的。
第四,区块链围绕着信任,行业公平,认为是一种协议。http是通信协议。
互联网发展到今天,我们实体之间的通信很便利。为什么呢因为我们每个人或机构都被抽象成了网络中的计算机节点了。
通过http协议把这些节点弄成了 连通图。
但是互联网目前为止进程只是达到了 信息的传递,我们随时可以看到信息。
但是我们之间的信任机制呢? 互联网保证不了,还要通过公安,合同条款,法律等来支持这个信任。
比如,公司业务可以使用互联网,但是纠纷来了,还要通过合同,律师,法院等来支持解决信任危机。
那么信任 机制中的业务,律师,合同等都没有被互联网化。
至此你想到了什么,智能合约?如果有协议专门就是解决 信任的呢,这个和http的通信协议的出现同样是符合社会需要的。
互联网解决了通信,可以传递信息,但是信息上面不可以装载价值,价值不能通过信息传递。因为大家互不信任。
tcp/ip是通信协议
区块链看作是信任协议.
不废话了,看看区块链是怎么定义的
区块链定义
区块和链,字面意思就是 交易数据块的链.其连接指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值.
(说道这里你可能会想象一下区块链的数据结构了)
区块链就是基于区块链技术形成的公共数据库.其中的区块链技术是指多个参与方之间基于现代密码学,分布式一致性协议,
点对点网络通信技术,和智能合约编程语言形成的数据交换,处理和存储的技术组合。
本质是一个对等网络的分布式账本数据库.
区块链技术首先被应用于比特币。
因此区块链是比特币的底层实现技术.
区块链的分类
目前有 公共链,联盟链,私有链
公共链
也称为非许可链,对外开放,无需授权,即可访问。
代表的项目:
比特币和以太坊
特点:
节点可以选择自由出入网路。
公共链上的区块可以被任何人查看,任何人也可以在公共链上发送交易。可以决定哪个区块可以加入区块链并记录当前的网路状态。
它是真正意义上的完全去中心化的区块链。
通过密码学保证交易不可被篡改。
利用密码学在陌生的网络环境中建立共识,从而形成去中心化的信用机制。
共识机制
工作量证明Pow或者是权益证明Pos
适合对象
一般适合于虚拟货币,面向大众的电子商务,互联网金融等 B2C,C2C
联盟链
顾名思义,联盟成员之间可以访问的链条,因此也称为许可链。
由于限制于联盟成员,需要注册才可以访问的区块链。
代表项目:
超级账本和R3联盟
共识机制
预先选好的节点控制
特点
成员受限,必须是联盟的
共识机制是选取的,比较少,一般不采用工作量证明的挖矿机制,
采用权益证明或FBIT,RAFT等共识算法。
对安全性和性能比公开链要高。
网络接入一般通过成员机构的网关节点接入。
适合对象
机构间的交易,结算或者清算等 B2B场景.公司之间业务走款很适合这个哦。
私有链
私有组织使用的。区块链上的访问规则由公司内部制定。
适合对象
政府,企业内部
数据区块的数据结构
比特币是首先使用区块链的项目,因此看看比特币
比特币的交易记录保存在数据区块中。
每个数据区块包含 : 区块头和区块体
区块头:
版本号,前一个区块的地址,时间戳,随机数,当前区块目标哈希值,Merkle树根值
默克尔树(Merkle树)
区块体:
包含交易数和交易详情.交易详情就是比特币系统中的记账本。
每一笔交易都会计入在数据区块中。任何人都可以查询到。
默克尔树对每笔交易都会进行数字签名。
对每一笔交易的签名产生的哈希值再进行哈希,这样构造出一颗二叉树。
一个区块的“哈希值”实际上只是这个区块的头信息的哈希值,
一个大约200Byte的数据
默克尔树
是一种二叉树,包好了一组节点。每一个节点都是它的2个子节点的哈希。
最终的一个根节点,也是由它的两个子节点的哈希组成。
默克尔树的目的允许在一个区块中的数据能够被零散的传递。
因为哈希值都是向上传递的,因此如果底层的交易被替换,将导致上面节点的发生变化。
最终导致了根节点的变化,因此改变了这区块的哈希,导致这个协议把它注册成一个完全不同的区块
比特币
这个大家都知道了。
获取比特币的途径
挖矿,线上交易所购买,或者是收取
挖矿
参与者通过计算能力获取系统奖励和支付小费
这种算力竞争行为称为挖矿
比特币的交易
比特币的交易记录保存在数据区块中,比特币系统大约10分钟产生一个区块
从技术角度来说, 这加密货币的账本,如比特币可以被看作为一个状态转移的系统, 在这个系统里, 有一个包含了现在所有已存在的比特币的持有者的状态,并且有一个“状态转移函数”可以使用一个状态和一个交易来产生一个新的状态。
这“状态” 在比特币中是指所有的已经被挖出的但是还没消费的硬币的集合 (技术上, “没有被花掉的交易的产出(unspent transaction outputs)” 或 UTXO) ,每个 UTXO都有一个面值和一个持有者 (持有者是由20个字节组成的地址,其本质是一个加密的公钥).
比特币是加密货币
我们如何在加密货币上构建应用呢?
一,构建一个新的区块链,
二,在比特币之上使用脚本,
三,在比特币之上构建一个元协议。