上链与上链背后的架构 | BSN 联盟链开发(一)

App - 链码 - 链

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


这是基于 BSN(区块链服务网络)进行联盟链开发的系列教程的第一篇,主要包含以下两点内容:

  • 运行示例代码,体验上链操作
  • 简要分析 BSN 上应用的基础架构

体验上链操作

  • clone 示例代码

$ git clone https://github.com/leeduckgo/bsn_py.git
$ cd bsn_py
  • 创建 python 虚拟环境
$ virtualenv --no-site-packages venv
$ source venv/bin/activate
  • 安装 python 包
$ pip3 install -r requirements.txt
  • 运行!
$ python3 manage.py runserver

运行成功后会显示已在8000端口启动服务。

image-20191114100933111

  • 上链

    • 打开 :

    image-20191114102521796

    • 随便输入一个「标识」与「保存内容」,点击保存上链:

    image-20191114102646231

    • 上链成功:

    image-20191114102715309

    与此同时,控制台中会显示传回的交易 id:

    image-20191114110709018

    • 查询

    通过 Key (唯一标识码)进行查询:

image-20191114110746792

执行示例代码的时候,发生了什么?

通过示例代码,我们可以感知到 BSN 作为「区块链服务网络」,真正实现了上链「顺滑而简单」

那么,在刚才那个过程中,究竟发生了什么事?我们可以来分析下源码 ——

打开bsn_test > views.py

我们会看到刚才点击「保存上链」时所执行的函数:

def save_data(request):
  ...
  url = 'https://quanzhounode.bsngate.com:17602/api/node/reqChainCode'
  ...

可以看到这个函数向「泉州」节点发送了一个执行「链码」的请求。请记住链码这个名词,这是 BSN 中的关键概念。

我们再来看看请求的构成:

字段名 字段 内容
用户唯一标识 userCode reddate
应用唯一标识 appCode CL1851016378620191011150518
链码 | 链码标识 chainCode cc_base
链码 | 函数名称 funcName et
链码 | 函数参数 args ['{"baseKey": "89c21501-046a-4b3f", "baseValue": "Hello,World!"}']

至此,我们可以梳理出通过应用和 BSN 网络交互的过程:

bsn 应用链路

应用开发者可以使用通用链码 / 自己定制开发链码 / 使用服务商提供的链码

链码服务提供方:

image-20191114134641324

服务会提供调用链码的接口:

image-20191114134423334

接口参数:

image-20191114134911291

预告

示例 DEMO 仅是基本操作的演示。要真正在项目中使用,我们还需要在示例代码的基础上,进行 SDK 的开发。

接下来的内容里,将会演示如何一步步开发 SDK

本文参与2022世界杯预选赛赛程直播社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2020-01-16 11:46
  • 阅读 ( 2924 )
  • 学分 ( 159 )
  • 分类:BSN

1 条评论

请先 登录 后评论
李大狗
李大狗

上海对外经贸大学区块链研究中心副主任

66 篇文章, 6813 学分