SDK 1.0 版本的打造 | BSN 联盟链开发(三)

这篇文章主要介绍了SDK 1.0 版本的打造 | BSN 联盟链开发(三) ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/22024.html

SDK 1.0 版本的打造 | BSN 联盟链开发(三)是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,SDK 1.0 版本的打造 | BSN 联盟链开发(三)学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉SDK 1.0 版本的打造 | BSN 联盟链开发(三)比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

SDK 1.0 版本的打造 | BSN 联盟链开发(三)

  • 联盟链
  • SDK
  • 开发工具
  • Python
  • BSN

SDK 的 1.0 版本出炉~

系列索引: 上链与背后的流程 | 联盟链开发(一) 动手编 SDK | 联盟链开发(二) SDK 1.0 版本的打造 | 联盟链开发(三) 将 SDK 发布到 PIP | 联盟链开发(四) 什么样的数据应该上链?| 联盟链开发 (五) BSN 相关问与答 | 联盟链开发(六) 链上简历应用 — 设计 | 联盟链开发(七) FISCO BCOS 介绍 | 联盟链开发(八) WeIdentity 极速体验 | 联盟链开发(九) 给Remix升个级 | 联盟链开发(十) 伪代码简述 ECDSA 签名过程 | 联盟链开发(十一) WeIdentity 的多签及限量凭证的实现 | 联盟链开发(十二)


上回,我们开始了亲手做 SDK 的过程。这次,我们将 SDK 开发 1.0 版本开发完成。

有需要的同学可以通过pip进行 SDK 的安装:

pip3 install bsn-sdk

通过如下链接查看如何使用:

https://github.com/leeduckgo/bsn_py_sdk


在上回,我们将示例代码中的函数初步抽象为get_data(baseKey, url)__do_get_data(userCode, appCode, chainCode, funcName, baseKey, url) 两个函数,并将其挂在 Operator类下。

我们现在要做如下改进:

  • 将函数中硬编码的变量放在类的__init__初始化函数内
  • 进一步的对函数进行抽象
  • 对返回值进行处理

1 1 __init__

__init__是一个特殊的函数,它在我们构建对象的时候被调用。例如:

class Person:     def __init__(self, name, age):         self.name = name         self.age = age

这是一个「人」类,当我们执行personA = Person("Jack", 15)的时候,Jack15便分别作为姓名与年龄赋值给 personA 这个对象了。

对于我们操作工 Operator 来说,以下这些变量,或者说属性是要在初始化的时候被赋值的:

def __init__(self, userCode, appCode, chainCode, url, cert_path):     # 用户参数     self.userCode = userCode     self.appCode = appCode     self.chainCode = chainCode     self.url = url # 节点地址     self.cert_path = cert_path # 签名文件地址

2 进一步抽象

观察get_datasave_dataupdate_datadelete_dataget_history五个方法,发现可以抽象为两种方法 —— 仅使用baseKey的方法(get、delete、get_history)与使用baseKeybaseInfo的方法(save、update),因此我们可以抽象出两个私有函数__handle_with_key__handle_with_key_and_value

    '''         private functions.     '''     def __handle_with_key(self, userCode, appCode, chainCode, url, cert_path, funcName, baseKey):         ……      def __handle_with_key_and_value(self, userCode, appCode, chainCode, url, cert_path, funcName, baseKey, baseInfo):         ……

五个公共函数通过调用私有函数来实现:

    '''         public functions.     '''     def get_data(self, baseKey):         funcName = "get"          return self.__handle_with_key(self.userCode, self.appCode,         self.chainCode, self.url,          self.cert_path, funcName, baseKey)                  ……     def update_data(self, baseKey, baseInfo):         funcName = "update"          return self.__handle_with_key_and_value(self.userCode, self.appCode,         self.chainCode, self.url, self.cert_path,         funcName, baseKey, baseInfo)         ……

3 对返回值进行处理

节点返回的生数据是这样的:

{'header': {'code': 0, 'msg': '处理成功'}, 'body': {'blockInfo': {'txId': '664c8d82d22ef5dc0c3df34e6558cbecdfa315598fb848d721cb2c4436c5d57d', 'status': 0, 'blockHash': ''}, 'ccRes': {'ccCode': 200, 'ccData': ……, 'mac': 'MEUCIQCr4vuQpObIsZKLutZ/QEzDoZcg+EFbtFSeyzV/V9fkTAIgSbJvdT8iaYsIscoZwLYveTJAlTeaxbT/o9X7+HvF8HM='}

里面包含了一些冗余信息,我们要将其进行处理,只返回「是否成功」、「交易id」、「处理内容」三项:

txId = payloadDicted['body']['blockInfo']['txId'] context = self.__handle_payload(payloadDicted['body']['ccRes']['ccData'], funcName) return {"success": True,"payload": {"txId": txId, "context": context}}

最后抽象为__handle_res(self, payloadDicted, funcName)__handle_payload两个函数,被__handle_with_key__handle_with_key_and_value所调取:

    def __handle_res(self, payloadDicted, funcName):         try:             if payloadDicted['header']['code'] == 0:                 ……                 return {"success": True,"payload": {"txId": txId, "context": context}}             else:                 ……                 return {"success": False, "payload": error_msg}         except:             ……             return {"success": False, "payload": "unknow error"}     def __handle_payload(self, payload, funcName):         if funcName in ["save", "get", "delete", "update"]:             return payload         elif funcName == "getHistory":             return json.loads(payload)

至此为止,1.0 版本的 BSN-SDK 已经开发完毕了。 看下效果: SDK 1.0 版本的打造 | BSN 联盟链开发(三) 成功调取内容。 下一篇中,我会讲 SDK 的发布全流程。再接下来,就是使用「SDK」进行区块链blockchain应用开发的案例了。~ (´・ω・`)~

仓库链接: https://github.com/leeduckgo/bsn_py_sdk


SDK 1.0 版本的打造 | BSN 联盟链开发(三)

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/22024.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » SDK 1.0 版本的打造 | BSN 联盟链开发(三)

提供最优质的资源集合

立即查看 了解详情