区块链相关的关键概念

关键概念中英文对照

区块链(Blockchain)
证明系统(Systems of Proof)
去中心化(Decentralized )
分布式账本(Distributed Ledger)
智能合约(Smart Contracts)
共识(Consensus)
超级账本(Hyper ledger)
世界状态(World State)
事务日志(Transaction Log)
链码(ChainCode )
资产(Assets)
身份( Identity)
主体 (Principal)
私钥(Private Key)
公钥(Public key )
证书颁发机构 【Certificate Authorities(CA)】
数字证书(Digital Certificates)
Fabric证书颁发机构 Fabric CA
 证书吊销列表【Certificate Revocation List (CRL)】
成员服务提供商 【Membership Service Provider (MSP)】
本地 MSP(Local MSPs)
渠道 MSP(Channel MSPs)
组织单位 【Organizational Units (OUs)】
节点组织单位(Node OU)
公钥基础设施  【Public Key Infrastructure (PKI) 】
主题密钥标识符【 Subject Key Identifier (SKI)】
权限访问标识符 【Authority Access Identifier (AKI)】
节点组织单位(Node OU)

本地MSP目录结构

config.yaml:启用Node OU、定义可接受的角色
cacerts:根CA 自签名证书列表(至少一个)
intermediatecerts:中间CA自签名证书列表(可选)
admincerts:Fabric1.4.3+弃用(定义组织管理员角色的参与者的身份列表)
keystore(private Key):本地 MSP 定义、包含节点的私钥、用于签署数据
                                   (本地 MSP 是必需的,并且必须包含一个私钥、通道MSP配置不包括此文件夹)
                                     通道MSP配置不包括此文件夹,因为通道的MSP仅旨在提供身份验证功能,并且不签署能力。
                                     ##  Hardware Security Module 硬件安全模块 (HSM)
signcert:拥有CA 颁发的节点证书,证书对应的私钥可用于生成签名(本地 MSP 是必需的)
                拥有此证书副本的人都可以验证该签名
                必须包含一个public key
                通道MSP配置不包括此文件夹,因为通道的MSP仅旨在提供身份验证功能,并且不签署能力。
tlscacerts: 组织信任的根 CA 的自签名 X.509 证书列表
                 必须至少有一个 TLS 根 CA 证书
                 用于使用 TLS(安全传输层协议) 的节点之间的安全通信
                 通信是依赖于节点,而不是使用网络的应用程序和管理。
tlsintermediatecacerts:包含一个列表中间 CA 证书,由该 MSP 代表的组织信任,用于使用 TLS 的节点之间的安全通信。
Operationscerts:与Fabric Operations Service API通信所需的证书
Revoked Certificates:通道 MSP 包括此附加文件夹,
                                     如果角色的身份已被撤销,有关身份的识别信息——而不是身份本身——保存在此文件夹中。
                                     通道 MSP 的管理员可以通过通告 CA 的更新 CRL 来快速从组织中撤销参与者或节点。

传输层安全 (TLS)

            Fabric 使用传输层安全性 (TLS) 支持节点之间的安全通信。
            TLS 通信可以使用单向(仅限服务器)和双向(服务器和客户端)身份验证。

渠道 MSP(Channel MSPs)作用

要使身份可验证,它必须来自受信任的权威。会员服务提供商 (MSP) 是 Fabric 中的受信任机构。
更具体地说,MSP 是一个组件,它定义了管理组织有效身份的规则。

节点组织单位(Node OU)配置

$HOME/go/src/github.com/fabric/fabric/scripts/fabric-samples/test-network/../config/
$FABRIC_CFG_PATH/msp/config.yaml
NodeOUs:
  **Enable: true**
  ClientOUIdentifier:
    Certificate: cacerts/ca.sampleorg-cert.pem
    OrganizationalUnitIdentifier: client
  PeerOUIdentifier:
    Certificate: cacerts/ca.sampleorg-cert.pem
    OrganizationalUnitIdentifier: peer
  AdminOUIdentifier:
    Certificate: cacerts/ca.sampleorg-cert.pem
    OrganizationalUnitIdentifier: admin
  OrdererOUIdentifier:
    Certificate: cacerts/ca.sampleorg-cert.pem
    OrganizationalUnitIdentifier: orderer

策略 (Policy)

Fabric 策略代表成员如何就接受或拒绝对网络、通道或智能合约的更改达成一致。
用于定义如何做出决策和实现特定结果的结构。
Fabric 策略代表成员如何就接受或拒绝对网络、通道或智能合约的更改达成一致。
策略在通道最初配置时由通道成员同意,但它们也可以随着通道的发展而修改。
管理网络的策略在任何时间点都是固定的,只能使用管理代码的相同过程进行更改。
由于 Fabric 是一种许可区块链,其用户得到底层基础设施的认可,因此这些用户有能力在网络启动之前决定网络的治理,并改变正在运行的网络的治理。

访问控制列表 (Access Control Lists)

$HOME/go/src/github.com/fabric/fabric/scripts/fabric-samples/test-network/configtx/configtx.yaml

策略分类

## 背书策略(Endorsement Policy)
链码包内的每个智能合约都有一个背书策略,该策略指定属于不同通道成员的对等节点需要针对给定的智能合约执行和验证交易的数量,
以便将交易视为有效。因此,背书政策定义了必须“背书”(即批准)执行提案的组织(通过其同行)。

## 修改策略( Modification policies)
定义了策略的更新方式。因此,每个通道配置元素包括对管理其修改的策略的引用。

##  签名策略(Signature policies)
定义了特定类型的用户,他们必须签名才能满足策略

## 隐式元策略 (ImplicitMeta policies)
仅在基于配置树中策略分层层次结构的通道配置上下文中有效。
区块链网络、通道、策略、身份(数字证书)-----(MSP)---组织角色-- 权限。

更新过程(共识)

第一阶段:提安阶段
应用程序----生成交易提案-----发送到对等节点(背书节点)(背书策略)
             ----足够数量的签名(背书节点)提案响应,丢弃不一致的事务响应(如果它愿意的话)
背书节点----**独立执行码链**---生成交易提议响应(私钥签署)+背书(不应用于分类帐)
第二阶段:打包阶段
应用程序----发送包含背书交易提案响应的交易
排序节点----将交易排序----打包到块
第三阶段:
排序节点----分发给对等节点
对等节点----接收区块---按顺序处理交易
                    验证背书---错误----则拒绝交易
                                      正确-----分类账一致性检查(若其他交易影响了资产状态,交易不再有效)
                                                   ---无效----保留交易用于审计
                                                   ---有效----更新分类账----保留交易用于审计
账本 L 包括区块链 B 和世界状态 W,其中区块链 B 决定世界状态 W。
世界状态是作为数据库实现的。与使用数据库的世界状态相反,区块链始终以文件的形式实现。
区块链被构造为互连块的顺序日志,其中每个块包含一系列交易,每个交易代表对世界状态的查询或更新。

世界状态

数据库的选项目前包括 LevelDB (键值对)和 CouchDB( JSON 文档),LevelDB 是默认值。
对等节点和 CouchDB 实例之间仍然存在 1:1 的关系

区块链结构

区块链没有命名空间。它包含来自许多不同智能合约命名空间的交易。
只有同一链码中的智能合约才能访问给定的命名空间。
## 头
    区块编号:一个从 0(创世区块)开始的整数,每添加一个新区块就增加 1。
    当前区块哈希:当前区块中包含的所有交易的哈希。
    前一个区块头哈希:来自前一个区块头的哈希。
## 块数据
    含按顺序排列的交易列表
           交易(Transaction)
                     交易头(Header) --相关链码的名称及其版本
                     交易签名(Signature)---客户端应用程序创建的加密签名
                     交易提议(Proposal) 智能合约的输入参数编码
                      交易响应(Response)智能合约的输出,捕获世界状态之前和之后的值
                      背书列表(Endorsements)这是来自每个所需组织的足以满足背书策略的已签名交易响应列表
## 块元数据
    区块创建者的证书和签名
    事务的有效/无效指示符
    该块之前(包括该块)累积状态更新的散列

系统链码分类

_lifecycle:管理节点链码的安装、批准组织提交的链码定义、提交链码到通道
生命周期系统链码:Lifecycle system chaincode (LSCC)  v1.4.x及以下版本支持
配置系统链码:Configuration system chaincode (CSCC)  运行在所有节点,处理通道配置更改
查询系统链码:Query system chaincode (QSCC) 运行在所有节点,提供账本API,提供区块查询、交易查询等。
背书系统链码:Endorsement system chaincode (ESCC) 运行在背书节点,以加密方式签署交易响应。
验证系统链码:Validation system chaincode (VSCC) ,验证交易,包括检查背书策略和读写集版本控制。

安装定义链码步骤

## 第一步: 打包智能合约
     节点:对等节点
     打包工具:Fabric(二进制文件)、Node Fabric SDK、第三方工具(例如 GNU tar) 
     打包文件类型:.tar.gz
     压缩文件中包含文件(无目录):metadata.json(链码语言、代码路径、包标签的 JSON)、code.tar.gz
               metadata.json: {"Path":"fabric-samples/asset-transfer-basic/chaincode-go","Type":"golang","Label":"basicv1"}
## 第二步: 安装链码
     节点:Peer Administrator
     打包工具:CLI 、SDK
     安装成功返回:包标签
     议组织只打包一次链码,然后在属于其组织的每个节点上安装相同的包。
## 第三步: 批准链码定义(您可以在不安装链码包的情况下批准链码定义。)
    链码定义参数:名称、版本、序列号、背书策略、集合配置(私有数据地址)、ESCC/VSCC 插件(自定义背书或验证插件)、初始化、包标识符
    组织管理员提交批准链码定义的事务----排序服务分发---批准

## 第四步: 提交批准的链码定义到通道
     检查是否批准链码定义:checkcommitreadiness ---背书---排序---管理员提交提交到通道---链码容器启动链码
    链码的生命周期策略和背书策略是分开的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A&long@2020

多一份打赏,多一份共享。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值