textchaincodeapi部分整理(代码片段)

author author     2022-12-01     117

关键词:

GetArgs:
以[][]byte 格式返回,第一个[]byte是function,后面的[]byte是参数,比较常用


GetStringArgs:
把GetArgs返回的结果,都转成string


GetFunctionAndParameters
返回2个对象,第一个对象是一个string,为GetStringArgs返回的[]string中的第一个;第二个对象签名是[]string,是GetStringArgs返回的[]string去掉第一个剩下的,比较常用


GetArgsSlice
看上去是把GetArgs返回的内容拼在一起,没想到有什么用处。在MockStub中没有实现
以上函数的结构可以看出,参数的类型要保持一致,全部为string或者全部是压成[]byte(json)


======================================


GetTxId
对每笔交易,每个peer唯一


GetChannelId
唯一要注意的是跨channel调用chaincode时,返回的是哪一个channel,我也不太清楚


GetTxTimestamp

返回交易创建时间,在任何一个peer上运行结果一致。
```
    t, err := stub.GetTxTimestamp()
    if err != nil 
        return shim.Error(err.Error())
    
 
    loc, err := time.LoadLocation("Asia/Chongqing")   //不要给成Beijing之类的
    if err != nil 
        return shim.Error(err.Error())
    
//返回 2018-07-31 16:22:23 的string
// 2006-01-02 15:04:05 这个string不能修改
    CreateTime := time.Unix(t.Seconds, 0).In(loc).Format("2006-01-02 15:04:05")
```




GetState(key string) ([]byte ,error)
PutState(key string,value []byte)
DelState(key string) error
这几个没什么好说的


GetStateByRange
//把key按照字母顺序排列之后,返回几个字母之间的key。用处不大


CreateCompositeKey(objectType string,attributes []string)(string,error)
把ObjectType放在第一项,然后 把attributes中每一项,以minUnicodeRuneValue为分隔符,连在一起
compositeKeyNamespace+objectType+minUnicodeRuneValue+attribute[0]+minUnicodeRuneValue+...


SplitCompositeKey
CreateCompositeKey的逆操作。


GetTransient
常用函数,用来获取一些附加的信息,这些内容不会被写入到账本


GetQueryResult
GetHistoryForKey

GetCreator
GetBinding
GetDecorations
GetSignedProposal
InvokeChaincode

//以上没怎么用过




GetStateByPartialCompositeKey(objectType string,keys []string)(StateQueryIteratorInterface,error)
搜索是只能对于前缀搜索,比如有这样的CompositeKey
(1) 'a','b'
(2) 'a','b','c'
(3) 'c','b','a'


搜索a,能搜到(1)(2)
搜索a b,能搜到(1)(2)
搜索a b c,能搜到(2)
搜索c,能搜到(3)
如果想收到(1),(2),(3),那么可以传一个空的[]string进去,如
```
undoneIterator, err := stub.GetStateByPartialCompositeKey(prefixUndone, []string)

```


================================
要保存这样的结构
```

    a:"43214",

    b:"fadf"


```
那是一定不行的,golang中struct的key必须要大写字母开头,如下面所示
```
type demoStruct struct
    A string

    B string

repairOrder := demoStruct
    A:"43214",

    B:"fadf"


repairOrderBytes,err:= json.Marshal(repairOrder)
stub.PutState("key",repairOrderBytes)
```
取的时候这样取
```
repairOrderBytes,err:= stub.GetState("key")
var s demoStruct
err := json.Unmarshal(repairOrderBytes,&s)
```
而如果要保存这样一个[]string ,可以利用createCompositeKey
```
a:= []string"a","b","c"
value,err := stub.CreateCompositeKey("demoType",a)
stub.PutState("key",[]byte(value))
```
```
//取的时候这样取
value,err:=stub.GetState("key")
_,a, err := stub.SplitCompositeKey(string(value))
```

qt从控件部分知识点整理(代码片段)

QT中的工具栏和菜单栏QMainWindow菜单栏创建演示:工具栏创建演示:状态栏创建演示:铆接部件(浮动窗口)创建演示:中心部件创建演示:资源文件添加模态和非模态对话框消息对话框颜色对话框文件对话框字体对话框QMainWindow菜单栏在... 查看详情

个人对drf-extentions的英文文档的部分整理翻译与保存(个人用)(代码片段)

CachingTocachesomethingistosavetheresultofanexpensivecalculationsothatyoudon‘thavetoperformthecalculationnexttime.Here‘ssomepseudocodeexplaininghowthiswouldworkforadynamicallygeneratedapiresponse:give 查看详情

系统运维系列之mysql部分学习整理5(代码片段)

1应用场景在mysql数据库中查找数据,要求是数据为日期不连续数据,输入一个日期查询日期所在周指定周几的数据和上几周对应时间段数据(一个月内)。关于此问题网上资料未曾有明确的解决方案,本篇博... 查看详情

fluentd报错整理-以及部分报错处理方法(代码片段)

1、报错:bufferflushtooklongertimethanslow_flush_log_threshold2019-01-0916:37:59+0800[warn]:#16bufferflushtooklongertimethanslow_flush_log_threshold:elapsed_time=21.684925531037152slow_flush_log_threshold=20.0plugin_id="object:3fb71aba75a0"解决方法:去掉buffer中的time_key参数,restar... 查看详情

socketserver源码学习补充(代码片段)

在前两个文章中整理了关于BaseServer部分以及BaseRequestHandler,以及通过对TCP的处理的流程的整理,这次整理的是剩下的关于用于扩展的部分,这里通过对线程扩展进行整理ThreadingMixInThreadingMixIn类实现了多线程的方式,它只有两个... 查看详情

http协议整理(代码片段)

...机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用 查看详情

《linux系统管理与应用》课程知识点整理+书后习题全文解答(linux知识点大纲)(代码片段)

目录第一章:Linux操作系统概述知识点整理部分课后习题与参考答案第二章:Linux系统的环境搭建知识点整理部分课后习题与参考答案第三章:Linux操作基础知识点整理部分课后习题与参考答案第四章:Linux文件系... 查看详情

03增删改查(重点--记忆)这部分内容过多,未来会重新整理(代码片段)

03、增删改查(curd)(重点--记忆)3.1增加、插入——insert+-------+------------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+-------+------------------+------+-----+---------+----------------+|id|int(10)unsigned|NO|PRI|NULL|auto_increment||name|varchar... 查看详情

为期两月的面试整理(代码片段)

目录一、js部分箭头函数与普通函数的区别Promiseasync和awaitjs继承事件循环机制(EventLoop)js事件阶段和事件委托js垃圾回收机制双等于‘==’引出的一系列违反常理的情况二、vue部分vue插件、指令、组件和过滤器vue组... 查看详情

《linux系统管理与应用》课程知识点整理+书后习题全文解答(linux知识点大纲)(代码片段)

目录第一章:Linux操作系统概述知识点整理部分课后习题与参考答案第二章:Linux系统的环境搭建知识点整理部分课后习题与参考答案第三章:Linux操作基础知识点整理部分课后习题与参考答案第四章:Linux文件系... 查看详情

整个项目的整理请求(代码片段)

...该库在request库之上实现OAuth的刷新授权。作为其功能的一部分,它提供了一个重试功能,在rest.js中具有类似的功能:constauth=require('./auth');constrequest=require('request');functionretry(headers,responseHandler)headers.auth.bearer 查看详情

面向对象,类和对象的整理(代码片段)

...对对象思想:把所有的事,分工给好多人,每个人完成一部分;类的定义,通俗说就是定义了一个大的方法,完成了一部分的内容包括了属性,和方法;类和对象的区别;类是代表了一些事或者物,区分为一个类,包含了许多的小类... 查看详情

通过实验,整理了部分主流手机浏览器的并发请求数(代码片段)

...关于主机浏览器的一篇描述。所以,设计了实验,探测了部分手机浏览器,对同域的并发访问量。以下是实验程序服务端(Java)staticprivatefinalAtomicLongSEQ=newAtomicLong(0);@RequestMapping(value="sleep/s",method=GET)publicResult<Long>sleepForSeconds... 查看详情

qt学习资源整理(代码片段)

...录目录资源原文现有资源20220818新增20220819更新20221108更新部分资料概览资源原文QT学习资源整理现有资源20220818新增QT从入门到实战完整版资料[Qt高级编程].Mark.Summerfield.扫描版pdf24小时学通Qt编程(b51.net).pdfc++qt5范例开发大全.... 查看详情

遇见狂神说---javaweb部分笔记(代码片段)

...;=>B站遇见狂神说—JavaWeb入门到实战最近开始复习web部分;笔记和练习只是跟着视频整理的;但是有的知识点并没有整理进来(比如一些基础概念,安装步骤)ml1.web基本;Tomcat安装使用2.http详细讲解3.maven3.1IDEA中使用Maven3.1.1创建固... 查看详情

批处理中setlocalenabledelayedexpansion的作用详细整理(代码片段)

...境变量扩展,想进阶,变量延迟是必过的一关!所以这一部分希望你能认真看。设置本地为延迟扩展。其实也就是:延迟变量,全称延迟环境变量扩展,想进阶,变量延迟是必过的一关!所以这一部分希望你能认真看。为了更好的... 查看详情

前端整理——vue部分(代码片段)

(1)Vue的生命周期1)创建vue实例,初始化生命周期钩子函数2)数据检测及方法和计算属性代理。在数据检测和初始化数据之前调用beforeCreated(),这时还获取不到props或者data中的数据;数据、属性、方法初始化之后,调用created()... 查看详情

postgresql——查询优化——整理计划树(代码片段)

2021SC@SDUSC目录概述set_plan_references函数set_subqueryscan_references函数set_join_references函数search_indexed_tlist_for_non_var函数trivial_subqueryscan函数build_tlist_index函数总结概述我负责的PostgreSQL代码部分:查询的编 查看详情