当前位置: 首页 > news >正文

Fabric中的溯源方法

背景

在Fabric链码中,我们可以使用PutState方法对一个key的值进行覆盖,当我们再使用GetState查询时是最新的值。如果我们希望找到这个key的修改记录,我们可以使用溯源方法GetHistoryForKey。完整源码链接:https://github.com/hyperledger/fabric-samples/blob/main/asset-transfer-ledger-queries/chaincode-go/asset_transfer_ledger_chaincode.go

代码
// HistoryQueryResult structure used for returning result of history query
type HistoryQueryResult struct {Record    *Asset    `json:"record"`TxId      string    `json:"txId"`Timestamp time.Time `json:"timestamp"`IsDelete  bool      `json:"isDelete"`
}// GetAssetHistory returns the chain of custody for an asset since issuance.
func (t *SimpleChaincode) GetAssetHistory(ctx contractapi.TransactionContextInterface, assetID string) ([]HistoryQueryResult, error) {log.Printf("GetAssetHistory: ID %v", assetID)resultsIterator, err := ctx.GetStub().GetHistoryForKey(assetID)if err != nil {return nil, err}defer resultsIterator.Close()var records []HistoryQueryResultfor resultsIterator.HasNext() {response, err := resultsIterator.Next()if err != nil {return nil, err}var asset Assetif len(response.Value) > 0 {err = json.Unmarshal(response.Value, &asset)if err != nil {return nil, err}} else {asset = Asset{ID: assetID,}}timestamp, err := ptypes.Timestamp(response.Timestamp)if err != nil {return nil, err}record := HistoryQueryResult{TxId:      response.TxId,Timestamp: timestamp,Record:    &asset,IsDelete:  response.IsDelete,}records = append(records, record)}return records, nil
}
http://www.lryc.cn/news/303506.html

相关文章:

  • 混子文章|蓝桥杯一题 -平方差
  • 计算机视觉基础:【矩阵】矩阵选取子集
  • 解决laravel-admin安装报错1071 Specified key was too long问题
  • 【Python---六大数据结构】
  • 一个简短的补充------对链表练习题的补充补充
  • Spring最新核心高频面试题(持续更新)
  • [计网底层小探索]:实现并部署多线程并发Tcp服务器框架(基于生产者消费者模型的线程池结构)
  • Spring Boot 笔记 020 redis集成
  • 防火墙——计算机网络
  • 用html编写的招聘简历
  • 215数组中的第K个最大元素
  • 【动态规划】【矩阵快速幂】LeetCode2851. 字符串转换
  • 【LeetCode每日一题】单调栈 402 移掉k位数字
  • 力扣 309. 买卖股票的最佳时机含冷冻期
  • 2024年刷题记录
  • 【JGit 】简述及学习资料整理
  • python数据类型-集合set
  • excel如何指定求和
  • 服务端实时推送技术之SSE(Server-Send Events)
  • 使用IntelliJ IDEA查看接口的全部实现方法
  • 阿里云幻兽帕鲁服务器操作系统类型怎么选择?
  • Codeforces Round 927 (Div. 3) LR-remainders的题解
  • HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化
  • The method toList() is undefined for the type Stream
  • vue+element (el-progress)标签 隐藏百分比(%) ,反向显示 ,自定义颜色, demo 复制粘贴拿去用
  • Android轻量级进程间通信Messenger源码分析
  • C#开发AGV地图编辑软件
  • 嵌入式学习day22 Linux
  • 不确定性问题的论文笔记
  • C语言推荐书籍