区块链名词
--区块链名词
1。区块:将每一次记录变更的状态快照,以“区块”形式记录。
2。区块链:将区块以链条形式连接在一起形成区块链
3。挖矿:--工作量证明(POW) /记账的过程称为挖矿(成功记账则有比特币奖励)
4。智能合约(smart contracts):通过链上编码定义参与者之间的承诺 (可理解为数字化电子契约)
【1】。开发合约: 合约就是一段代码
【2】。安装合约:就是将合约代码提交到fabric上。
【3】。合约分步安装:
A。合约打包
B。合约签署
C。合约安装
【4】。合约实例化:就是在指定的peer节点上启动一个docker容器,并调用合约的方法(init方法)
【5】。调用合约
【6】。查询合约
【7】。更新合约:合约更新之后,对查询、调用等操作都将使用最新合约,老版本的合约还会存在,但是不再起作用。
每个peer上安装的合约必须是相同的
【8】。合约的启动与暂停:
fabric不支持合约的启动与暂停。要暂停合约,只能到peer上手动删除容器。
【9】。fabric SDKs (目前仅有java和node)
sdk分为两部分,fabric-client
用来调用fabric,fabric-ca-client
用来与fabric-ca交互,逐层、撤销用户等。
5。共识:通过某种算法在多节点之间达成状态一致,该过程为共识
6。背书(Endorsed):我理解为可以证明你身份的单位。
如:我叫yufeng,公安局可以为我证明我叫yufeng,则公安局哪就是我的背书。。
7。Fabric
Fabric是一个支持智能合约(smart contracts)的分布式账本(ledger)系统
8。MSP(Membership Service Provider)认证
Fabric是私有的,只有通过MSP(Membership Service Provider)认证的成员才可以进入到系统,参与合约的缔造与执行。
9。fabric ca
fabric ca用来管理fabric的用户,即用户证书的签署和撤销等
CA : Certificate Authority 负责管理和签发证书的第三方机构
1。作用:检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改
2。CA证书:CA颁发的证书,也叫数字证书(包含证书拥有者的身份信息,CA机构的签名,公钥和私钥
身份信息用于证明证书持有者的身份;
CA签名用于保证身份的真实性;
公钥和私钥用于通信过程中加解密,从而保证通讯信息的安全性。
10。Fabric--链
Fabric中的链(chain)包含“链码(chaincode)”,“账本(ledger)”,“通道(channel)”。
它将参与方(organization),交易(transaction)进行隔离。
11。peer & channel & chaincode
【1】。 peer:peer 是一个独立存在的计算机节点,不管是物理机还是虚拟机,总之是独立实体
(在 peer 没有加入任何通道之前,是不能够做任何业务的,因为他没有业务载体)
【2】。channel:通道就是业务载体,是纯粹的逻辑概念,可以独立于 peer 存在,但也因此也没任何存在的意义了。
【3】。chaincode:链码就是业务,业务是跑在通道里的,不同的通道即便是运行相同的链码,因为载体不同,可认为是两个不同业务。
peer 是地,通道是路,链码是车,三者相辅相成才能构建一套完整的区块链业务系统
Chaincode将在Peer节点上以容器的方式运行,实现与背书节点进程之间的隔离。
链码的部署
- 创建业务载体通道channel;(在使用fabric之前,需要先创建channel)
- 将通道与 peer 节点绑定;(将所有peer加入到channel)
- 在通道上实例化链码。
12。LevelDB 和 CouchDB状态数据库
LevelDB 是默认的内置的数据库,CouchDB 是额外的第三方数据库。
跟 LevelDB 一样,CouchDB 也能够存储任意的二进制数据,而且作为 JSON 文件数据库,
CouchDB 额外的支撑 JSON 富文本查询,如果链码的键值对存储的是 JSON,那么可以很好的利用 CouchDB 的富文本查询功能。
13。什么是代币
代币一种经过加密的虚拟货币,代表不同形式的数字资产。
14。分叉
软件升级,部分用户升级版本,部分用户未升级。旧版本的软件依然在各自不停的挖矿,此时会出现新旧分叉
(1)硬分叉
系统中出现了新版本的软件,并且和之前版本软件不能兼容,老节点无法接受新节点挖出的全部或部分区块,导致同时出现两条链(旧链和新链)
(2)软分叉
老节点不能发现新协议的变化,从而继续接受新节点用新协议所挖出的区块(一条链上,新旧区块)
15。分割攻击:将一批比特币节点与主网分割出来的攻击行为
延迟改击:延迟一下新区块的广播
16。51%攻击:表示占据了百分之百算力的一大半
17。完全钱包:钱包客户端是与完整区块链账本数据在一起的,对于这些保有完整的,最新的区块链拷贝的的钱包应用,称为“完全钱包”
18。轻钱包:只保留了区块头而去除了区块体中的详细事务数据,因此大大减少需要同步的数据量,它们通过一种“SPV(简易支付验证)”的方式来完成交易验证
SPV:Simplified Payment Verification:简单支付验证
19。私钥 -》 公钥 -》 公钥编码,得到钱包地址
20。重放攻击(Replay Attack)/回放攻击:指攻击者发送一个目的主机己接收过的数据包,来达到欺骗系统的目的。
类比:张三 盗取 李四 的声音录音,因此可以进入李四的房间
21。交易延展性(Transaction Malleability):如数字1,修改数字1.0,本质还是代表1.
22。隔离见证:将交易数据和签名隔离,把签名放到别的地方存储。
类似“签属支票”,一张支票就相当于“一条比特币的交易事务”,签署UTXO(未花费交易输出),就相当于支票签名,即所谓的“见证”,这是用来确认交易的合法性
隔离见证还在一定程序上能解决“交易延展性”问题(攻击者无法修改交易事务的输入和输出,但是可以修改签名。即交易延展性)
潜在问题:
23。区块链扩展:扩容,侧链,闪电网络
(一)扩容(链内方案)
(1)区块扩容:
主要是增加区块中容纳交易事务的区块体的空间大小 (比特由区块大小为1M)
(2)BCC(Bitcoin Cash):2017.8.1比特币硬分叉产生的一个新的比特币区块链变种,比特币现金
BTC:比特币
(3)莱特币:比特币兄弟,率先完成了隔离见证,技术方案:用户激活软分叉
(4)用户激活软分叉(user-activated soft folk,UASF)
软分叉升级模式,主要为避开掌握大量算力的矿工和矿池的反对,而将支持升级的决定权交给矿工和矿池之外的所有节点和用户。
(5)以太坊:提高Gas限制 & 分片
提高Gas限制:相当于提高用户的使用成本
分片:将区块数据按照某种分类存储在不同的节点上,而不像现在所有节点都保存同样的副本。
(二)侧链(链外方案)
1.侧链
实现将两个不同的区块链数字货币之间直接做价值转换。侧链协议可以将比特币从主链上转移到侧链上来。但需要在比特币主链上先冻结,然后在别的链上激活。
如:比特币和以太币是两个完全不同技术和构架的区块链,它们间互换价值,主链是相对的,以比特币为主链,则以太币就为侧链。反之易然。
侧链可以是完全独立的,也可以必须依赖主链生存的链。
侧链技术用来分流数据量(或价值)
(1)双向锚定
为将比特币从主链上移动到侧链,比特币区块链上的比特币必须首先在主链上被冻结,然后在侧链上激活,这叫双向锚定。
侧链双向锚定的思路和步骤:
(三)闪电网络(lighting network)
是一个点对点对等网络,完全去中心化的数字货币微支付系统。
1.闪电网络适用于:比特币,以太币,莱特币这样的数字货币。
2.雷电网络微支付系统:以太坊上的以太币
3.闪电网络亮点:完全基于买卖双方的独立双向支付通道,不需要任何形式的押金担保,也不需要任何信任的第三方即可实现实时的海量交易。
4.闪电网络本质:
智能合约的应用,即RSMC(revocable sequence maturity contract,序列到期可撤销合约) 及 HTLC(Hashed Timelock Contract,哈希时间锁定合约).
基于智能合约建立一系列相互连接的双向支付通道。
(1)RSMC(revocable sequence maturity contract,序列到期可撤销合约):
类比淘宝购物,买家和卖家,钱托管在淘宝平台,只有双方认可(签名)才会完成支付,若买家退货(中断合约),则卖家不反对情况可退回,若卖家反对,买家作弊,则要罚买家,将资金罚给卖家。
(2)HTLC(Hashed Timelock Contract,哈希时间锁定合约)
类比RSMC,增加更多玩法,如买家在2天能给出一个正确口令,则卖家就要支付xx比特币给买家,过期则要退还给卖家。(类比返差价或红包)
闪电网络无限制,只要双方能建立起支付通道即可,如下所示:
微支付通道允许交易(支付)双方无限次地更新交易过程,且不将中间数据上链,而将最后结果上链。
示例:A通过闪电网络向B和其他交易对手支付比特币资产
(1)建立微支付交易通道(双向 A->B & B->A)
(2)建立微支付交易通道(网络 A -> B -> C & C->B->A)
(3)完成微支付交易并关闭支付通道
Hyperledger Fabric的通道channel即借鉴闪电网络原理,以此来作为保护交易对手的信息隐私。
(四)多链:区块链应用的扩展交互
应用跨链连接器(中间件)连接多个可根据商业应用场景分别构建起来的价值链的多链架构理念。