课程报告;

区块链技术与应用

区块链关键技术

区块链架构

alt text
数据层、网络层、共识层、激励层、合约层、应用层

区块结构

alt text

Merkle树

alt text
通过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

  1. propose 交易提案
    • client 提交交易
  2. execute 交易执行
    • 背书节点为读写集签名后返回 client
    • 模拟执行,生成读写集
      • read set:key=balance, value=100, version=1
      • write set:key=balance, value=90, version=2
  3. proposal response 交易提案响应
    • 背书节点返回读写集
  4. order transaction 交易排序
    • order节点按照时间戳排序
  5. Deliver 交易传递
    • order节点将交易传递给committing peer
  6. validate 交易验证
    • committing peer 验证交易
    • 交易验证通过后,将交易写入到账本
  7. 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