./download.sh 1.4.7 1.4.7
fabric-sample
首先初始化 开启接口,前端访问该接口时,则会执行后面的AddData(…)函数
在这函数里,接收前端传入的数据,用如下的函数将接受到的前端数据保存至结构体中。
再用如下函数,将数据反序列化,为存入区块链中做准备(区块链中存储的数据都是序列化的): 指定函数fcn,链码会根据传入的fcn函数信息,调用对应的函数。 执行strar.go文件中调用的链码函数: 在InvokeCC函数中,首先将请求封装,在封装的请求中,需要指明执行链码的ID,请求链码的函数信息fcn,及序列化了的待添加数据。 执行调用链码的请求(go sdk调用链码的核心函数): 此时安装的链码将会收到请求数据,在链码中用该函数接收请求调用函数的信息及序列化后的待添加数据。 此时传入的请求函数信息是"addData",那么它将会调用对应的函数进行处理: 在该函数中,先是将序列化的数据反序列化,并用结构体保存数据,这样做的目的是取出其中的ID和Batch,将其以Batch+ID的方式组合为一个唯一Key值,作为该数据唯一的“身份证”,溯源就是根据此“身份证”查看该身份证下的一切改动。 调用PutData函数,准备将数据写入区块链中。 在PutData函数中,首先将数据序列化,再用Putstate将数据写入区块链。 最后将链码执行的结果以JSON形式的数据返回给前端,若成功执行链码“err”:nil,否则返回错误原因:
“err”:nil