区块链技术与应用
课程报告;
区块链技术与应用
区块链关键技术
区块链架构
数据层、网络层、共识层、激励层、合约层、应用层
区块结构
Merkle树
通过Merkle树如何对区块中的交易进行验证?
做哈希的次数是log2(n),n是交易数量,次数多了,速度慢了,但是校验的速度更快。
非对称加密
分组对称加密算法
- DES
- AES
- IDEA
非对称加解密算法
对比:对称加密算法只有一个密钥,非对称加密算法有两个密钥,公钥和私钥。 - RSA,基于大数质因子分解很困难的特性
- ECC(椭圆曲线加密算法)
- SM2(国密算法),基于椭圆曲线离散对数问题,加密强度高于RSA系列
优缺点:非对称加密算法加密速度慢,但是安全性高,对称加密算法加密速度快,但是安全性低。混合加密
对称加密算法加密数据,非对称加密算法加密对称加密算法的密钥。
先用非对称加密算法协商出一个临时的对称加密密钥(也称会话密钥),然后用对称加密算法加密数据。
典型的应用场景是HTTPS。数字签名
数字证书
鲍勃和爱丽丝的故事
鲍勃有两把钥匙,一把是公钥,另一把是私钥。
鲍勃把公钥送给他的朋友们——帕蒂、道格、苏珊——每人一把。
苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。
鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
鲍勃给苏珊回信,决定采用”数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。
然后,鲍勃使用私钥,对这个摘要加密,生成”数字签名”(signature)。
鲍勃将这个签名,附在信件下面,一起发给苏珊。
苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成”数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。
鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明”数字签名”是否真的是鲍勃签的。
网络层
P2P网络
共识层
共识层的作用是在不同的应用场景下,通过使用不同的共识算法,在决策权高度分散的来保证区块链网络中的节点之间能够达成一致,从而保证区块链网络的安全性和稳定性。
POW
工作量证明(Proof of Work)是一种通过解决数学问题来证明工作量的方法,是比特币的共识算法。
POS
权益证明(Proof of Stake)是一种通过持有货币来证明权益的方法,是以太坊的共识算法。
DPOS
股份授权证明(Delegated Proof of Stake)是一种通过持有货币来证明权益的方法,是EOS的共识算法。
PBFT
拜占庭容错(Practical Byzantine Fault Tolerance)是一种容错算法,是联盟链的共识算法。
激励层
激励层存在的必要性取决于
合约层
智能合约是一种特殊的协议,它是一种在区块链上运行的计算机程序,可以自动执行合约的条款。
脚本代码
智能合约
智能合约是区块链被称为去中心化的重要原因,它允许交易各方在不需要第三方见证的情况下,执行可追溯、不可逆转和安全的交易。
编程算法
Hyperledger社区
hyperledger fabric
fabric 最早是由IBM公司提出的,是一个企业级的区块链解决方案,它是一个模块化的、可扩展的区块链架构,支持智能合约,支持多种共识算法,支持多种加密算法,支持多种身份验证机制,支持多种数据存储方式,支持多种链码编程语言。
committing peer 提交节点
- maintaining ledger 维护账本
endorsing peer 背书节点
- must hold smart contract 必须持有智能合约
- ordering Node 排序节点
- apporves the inclusion
transaction process
- propose 交易提案
- client 提交交易
- execute 交易执行
- 背书节点为读写集签名后返回 client
- 模拟执行,生成读写集
- read set:key=balance, value=100, version=1
- write set:key=balance, value=90, version=2
- proposal response 交易提案响应
- 背书节点返回读写集
- order transaction 交易排序
- order节点按照时间戳排序
- Deliver 交易传递
- order节点将交易传递给committing peer
- validate 交易验证
- committing peer 验证交易
- 交易验证通过后,将交易写入到账本
- Notify 通知
- committing peer 通知 client 交易已经完成
fabric 对双花问题的解决
区块链的双花问题是指在区块链网络中,一个用户花费了同一笔资产两次,这种情况是不允许的。
背书节点为两份读写集签名后返回客户端,客户端将两个交易提交到order节点,由于order节点是按照时间顺序来排序
提交节点在接收到两个交易后,会根据交易的时间戳来判断哪个交易先到达,先到达的交易会被写入到区块中,后到达的交易会被拒绝。
channel
网络数据安全的模拟。通道是节点和单个order节点或者order集群之间建立的一个具有保密性的通信链路!通道实质是由排序节点划分和管理的私有原子广通道。
Orgnization vs chanel
Develop Application-1 Scenario
paper-net
Develop Application-2 Lifecycle
Develop Application-3
Develop Application-4
Develop Application-5 Frontend
chapter 3 Fabric Peer 和 Orderer
Fabric Peer
ledger 账本中包含一个chaincode 和一个 worldstate 事件状态数据库。chaincode 是一个智能合约,worldstate 是一个键值对数据库。
transactions
- blockheader
- blockdata
- blockmetadata
config block。
第一个区块称为:genesis block 创世区块
WorldState
holds current state of a set of business objects
1.3 smart contract
smart contract
- heart of the blockchain network
- defines the rules between different organizations in executable code
- generates transactions that are recoded on the ledger
- pacaged into a chaincode
chaincode
- can package multiple smart contracts
- smart contract are available to applications when a chain code is deployed
how smart contract interact with the ledger
删除操作不能真的改变 BlockChain 的数据,而是将删除操作记录在 BlockChain 中,这样就可以保证数据的不可篡改性。而 WorldState 中的数据是可以改变的,因为 WorldState 中的数据是根据 BlockChain 中的数据计算出来的。
chaincode lifecycle
- Package
- Install
- Instantiate
- Run
- upgrade, run
system chaincode
系统级别的链码
- LSCC
- 生命周期管理链码
- CSCC
- 查询通道
- QSCC
- 查询链码
- ESCC
- 负责背书签名
- VSCC
- 交易提交前根据背书策略验证交易
gossip protocol
绯闻协议
function of gossip protocol
- manage peer discovery and channel membership
- dissminate ledger data across all peers on a channel
- allowing peer to peer state transfer update of ledger data of a new peer
- 心跳检测
peer
- leader peer
- link to odering service
- anchor peer
- used by gossip to make sure peers
kafka
raft
chapter 4 Fabric Orderer
- PKI X.509
MSP (Membership Service Provider)strucutre and usage