fabric 框架图

成员管理主要分为三个步骤:技术主要包括(PKI和分布式技术)

包括三种证书:用户登录证书,交易签名验签的证书,加密传输的tls证书。

fabric 开发了一套沙盒机制

chaincode包括安全容易组件和安全注册组件

peer和chaincode通信用grpc

fabric 链码中的删除数据是删除的状态数据库的数据。(世界状态)

p2p 网络 主要包括两种 grpc 和gossip

组织内部用gossip,组织外用grpc。

fabric交易流程:如上图

目前链码只支持三种语言:go java 和node.js

链码分为两种:

系统链码和用户链码

系统链码:lscc  lifecyclesystemchaincode 链码部署息息相关(升级链码都需要他)、cscc   configuresystemchaincode(负责peer和channel的配置)、qscc  querysystemchaincode(查询系统chaincode)

用户链码编写:必须包括两个方法:Init 和 Invoke 方法

链码生命周期的操作:主要有以上这几种。

### 使用 Fabric 绘制时序图的方法 Hyperledger Fabric 是一种分布式账本技术框架,主要用于构建企业级区块链解决方案。然而,Fabric 并不直接提供绘制时序图的功能。如果需要通过 Fabric 数据来生成时序图,则可以通过以下方法实现: #### 方法概述 1. **提取数据**:从 Fabric 区块链中获取交易记录或其他相关数据作为绘图的基础输入[^4]。 2. **解析数据**:将提取的数据转换为适合时序图表示的形式。 3. **使用可视化工具**:利用外部图形库(如 PlantUML 或 Mermaid.js)生成时序图。 以下是具体的实现步骤和示例代码。 --- #### 提取数据 假设我们需要从 Fabric 中提取一组交易的时间戳及其状态变化信息。可以使用 Fabric SDK 来查询区块中的交易详情并将其转化为 JSON 格式。 ```javascript const { Gateway } = require('fabric-network'); const fs = require('fs'); async function queryTransactions() { const gateway = new Gateway(); await gateway.connect(fs.readFileSync('connection.json'), { wallet, identity: 'admin', discovery: { enabled: true, asLocalhost: true } }); const network = await gateway.getNetwork('mychannel'); const contract = network.getContract('examplecc'); const result = await contract.evaluateTransaction('queryAllTransactions'); // 假设有一个查询所有交易的函数 return JSON.parse(result.toString()); } ``` 此代码片段展示了如何通过 Fabric SDK 查询所有交易并将结果返回为 JSON 格式的数组。 --- #### 解析数据 假定 `result` 的结构如下所示: ```json [ {"timestamp": "2023-09-01T10:00:00Z", "actor": "UserA", "action": "Create"}, {"timestamp": "2023-09-01T10:05:00Z", "actor": "UserB", "action": "Approve"} ] ``` 我们可以进一步处理该数据以便于后续绘图。 ```javascript function parseData(data) { return data.map(item => ({ time: item.timestamp, participant: item.actor, event: item.action })); } const parsedData = parseData(queryTransactions()); // 调用前面定义的函数 console.log(parsedData); ``` --- #### 使用可视化工具生成时序图 下面是一个基于 Mermaid.js 的简单时序图示例代码,它可以根据上述解析后的数据动态生成图表。 ```html <div class="mermaid"> sequenceDiagram participant UserA participant UserB Note over UserA: Start Process UserA->>UserB: Request Approval at 2023-09-01T10:00:00Z activate UserB UserB-->>UserA: Approved at 2023-09-01T10:05:00Z deactivate UserB </div> <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script> <script>mermaid.initialize({startOnLoad:true});</script> ``` 这段 HTML 和 JavaScript 结合了 Mermaid.js 库用于渲染序列图,并且能够根据实际需求调整参与者名称及时刻点的信息。 --- ### 注意事项 - 上述方案依赖第三方工具完成最终的绘图工作,因此需要额外引入相应库文件。 - 如果希望完全自定义样式或者增加复杂度较高的交互效果,则可能需要用到 D3.js 这样的高级图表库替代简单的文本型描述语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值